美文网首页
微服务之:独立服务

微服务之:独立服务

作者: MobotStone | 来源:发表于2022-01-28 14:46 被阅读0次

前提

考虑一下一家外卖公司 应用程序,它是一个在线食品配送应用程序。应用程序的客户端通过发出 HTTPPOST /orders请求来创建订单,并期望在 600 毫秒内得到响应。由于 该 应用程序使用微服务架构,实现订单创建的职责分散在多个服务中。POST请求首先被路由到,然后Order Service它必须与以下服务协作:

  • Restaurant Service- 了解餐厅的菜单和价格
  • Consumer Service- 知道下Consumer订单的状态
  • Kitchen Service- 创建一个Ticket,告诉厨师要做什么
  • Accounting Service- 授权消费者的信用卡

Order Service可以使用同步请求/响应来调用这些服务中的每一个。例如,它可能使用 REST 或 gRPC 实现服务间通信。

1.png
然而,使用同步请求/响应的一个主要缺点是它降低了可用性。这是因为如果 的任何Order Sevice合作者不可用,它将无法创建订单并且必须向客户端返回错误。

另一种方法是Order Service通过使用 CQRS 和 Saga 模式消除其及其协作者之间的所有同步通信。Order Service可以使用CQRS模式来维护餐厅菜单的副本,从而消除从Restaurant Service. 它可以使用Saga 模式异步验证订单。Order Service创建一个Order状态PENDING并返回一个响应给POST /order。然后它通过与其他服务进行异步通信来完成订单的创建。

2.png
这种方法的一个主要好处是它提高了可用性。即使其他服务之一不可用,也始终Order Service响应请求。POST /orders然而,使用 saga 完成订单创建的一个缺点是,对 saga 的响应POST不会告诉客户订单是否被批准。客户端必须通过定期调用来找出答案GET /orders/{orderId}

问题

在处理同步请求时,服务应该如何与其他服务协作?

概念

  • 微服务架构通常将处理请求的责任分配给多个服务
  • 通常要求操作具有高可用性和低响应时间
  • 操作的可用性是处理请求时调用的服务的可用性的乘积: serviceAvailability numberOfSynchronouslyCollaboratingServices
  • 服务可以重试对失败的协作者的请求,但这会增加响应时间。

解决方案

设计一个服务,以便它可以响应同步请求,而无需等待任何其他服务的响应。

3.png
使服务自包含的一种方法是将所需的功能实现为服务模块而不是单独的服务。例如,我们可以合并Order Serviceand Restaurant Service

使服务自包含的另一种方法是使用CQRS和Saga模式与其他服务协作。自包含服务使用 Saga 模式异步维护数据一致性。它使用 CQRS 模式来维护其他服务拥有的数据的副本。

示例

Order Service前面描述的 该 应用程序中的 是自包含服务的示例。createOrder()例如,该操作会查询拥有的数据的 CQRS 副本Restaurant Service以验证订单并为其定价,然后启动 saga 以完成订单的创建。

总结

这种模式有以下好处:

  • 提高可用性和响应时间

这种模式有以下缺点:

  • 使用 CQRS 的成本和复杂性增加
  • 增加使用 sagas 的复杂性
  • 使用 sagas 时不太直接的 API
  • 由于在服务中实现功能而不是作为单独的服务实现更大的服务

关注我

本站所有文章和资源仅为个人工作和学习中的记录,部分观点有一定主观性,若有不妥,欢迎斧正。

欢迎指出网站中有问题的地方,我会尽快修正,谢谢!

相关文章

  • 微服务之:独立服务

    前提 考虑一下一家外卖公司 应用程序,它是一个在线食品配送应用程序。应用程序的客户端通过发出 HTTPPOST /...

  • zabbix微信 | 微信对接自己服务器(2)

    上接使用微信告警 企业号微信对接自己服务器 1.本地服务器与微信服务器的信任 本地具有独立外网ip服务器获取微信服...

  • Netflix微服务架构拆解

    引言 微服务是一个个独立的服务单元,每个微服务具备独立的水平扩展功能,通过水平扩展能获取更多的CPU和内存资源,微...

  • 独立服务

    独立服务启动:1:使用/etc/init.d/目录中的脚本启动服务例如:/etc/init.d/ heepd st...

  • 微服务概要

    微服务概要 什么是微服务 微:体积小,单个服务设计到运维人数少。 服务:区别于系统,服务一个或一组相对较小且独立的...

  • 图解 | 一图摸清Android系统服务

    一图摸清Android系统服务的获取和注册流程~ 大纲: 获取系统服务 注册系统服务独立进程的服务非独立进程的服务...

  • 简单明了 | 一图摸清Android系统服务

    一图摸清Android系统服务的获取和注册流程~ 大纲: 获取系统服务 注册系统服务独立进程的服务非独立进程的服务...

  • 微服务和SOA有什么区别?

    微服务划分粒度更细,各服务可以独立发开、维护、部署(Docker、DevOps) 每个服务完整独立,服务间通信可以...

  • 细说云计算产品和技术-微服务开发框架

    微服务是一个独立完整的服务化实体单元,实践中通过提供统一的微服务开发框架,来实现业务要求。 微服务开发框架包含:微...

  • 2019-04-17

    独立服务器和云服务器的区别: 1.独立服务器在性能上超出云服务器。独立服务器拥有绝佳性能、稳定性和安全性,云服务器...

网友评论

      本文标题:微服务之:独立服务

      本文链接:https://www.haomeiwen.com/subject/xictkrtx.html