微服务扩展新途径:Messaging

  • 时间:
  • 浏览:0
  • 来源:万人红黑大战棋牌_万人红黑大战棋牌官网

本文转自 OneAPM 官方博客

在同步互动中,服务使用者会发出请求,有随后在操作完成、收撤回复前阻止其他活动运行,HTTP 协议就说 我曾经很好的同步互动例子。通常清况 下,这名 互动与请求-回复互动类型、 HTTP 协议就有相关的(当然,也都都都后能 利用异步请求或消息传递来登记、请求回调函数的结果,不过这名 做法不太常见)。

目前,微服务使用已十分普遍,利用服务编排(而就有服务编制)来进行微服务互动的想法也很常见。本文将讲述如可通过 ActiveMQ 虚拟话题来设置服务编排和基于服务互动的可扩展事件。

不可能 不需要了解更多关于本话题的内容,请查阅 Building Microservices。接下来,本文将集中讨论如可使用消息传递实现服务编排。

在异步互动中,服务使用者发出的请求不需要在操作完成后才都都都后能 运行。一旦请求确认被收到,服务使用者就都都都后能 接着做其他的活动。这名 类型支持互动沟通采用发布-订阅模式,相似:不都都都后能 服务使用者调用其他服务操作,只都都都后能 生产者提出事件,等待时间感兴趣的使用者做出反应即可。

以上所述就说 我最近出版的著作 Camel Design Patterns 里介绍的多种模式之一。正不可能 老会 将Camel 与 ActiveMQ 一块儿使用,书中也就收录了其他 ActiveMQ 模式内容。

使用队列的曾经好处就说 我它都都都后能 轻松扩展使用者,并开启多个“忠诚值服务”和“邮件服务”,从而将负载均衡地分布于不同的使用者间。

实现该形式的依据有什么都有,都都都后能 利用 Camel 和 ActiveMQ :

假设位于曾经与“邮件服务”互动的“客服服务”,最简单的实现依据就说 我使用曾经允许“客户服务”给“邮件队列”发送消息的队列。不可能 “客户服务”都都都后能 跟“忠诚值服务”互动,“客户服务”就要给“忠诚值服务”再发两根消息。这名 依据下,“客户服务”都都都后能 了解“邮件服务”和“忠诚值服务”这两者,有随后把正确的消息发给对应的队列。简而言之,整个互动过程就有由“客户服务”编制的。

ActiveMQ 虚拟话题是将订阅队列发布到话题中的依据,通过曾经简单的命名惯例——所要做的就说 我选择话题或队列的命名惯例,无论是自定义的还是默认的都都都都后能 。

原文地址:https://dzone.com/articles/scalable-microservices-through-messaging

服务互动类型主要有某种:同步和异步。

使用服务编排依据时,“客户服务”却不都都都后能 了解“忠诚值服务”和“邮件服务”。不可能 “客户服务”假如有一天对“客户话题”发出曾经事件,“忠诚值服务”和“邮件服务”就会去了解客户事件协议,并订阅正确一句话题——话题的发布-订阅语意会确保每个事件一块儿被分发给曾经订阅者。

除了什么技术层面的考虑,还应该注意考量服务互动的其他层面:耦合和责任。

话题执行发布-订阅,而就有竞争使用,这使得使用者的扩展变得更加困难。不可能 (横向)扩展“忠诚值服务”并在曾经实例中进行试验,都都都后能 发现它们会收到同样的事件,曾经扩展一句话并越来越 什么益处(除非服务是等幂的)。

另外,用编排扩展微服务还都都都后能 通过事件驱动来实现,这里就说 我一篇介绍这名 依据的推荐文章。

服务编制是通过队列实现消息传递的。队列都都都后能 在竞争使用者模式下实现负载均衡,有随后确保消息和使用者一一对应。

【编者按】服务编排是微服务设置的曾经重要方面。本文在利用 ActiveMQ 虚拟话题来实现这名 目标的一块儿,一定会提供实用性指导。文章系国内 ITOM 管理平台 OneAPM 编译呈现。

有随后都都都后能 某种融合了话题和队列的综合形式,充分发挥这曾经功能:既都都都后能 利用“客户服务”的发布-订阅来发布事件,确保所有服务都能收到该事件;也都都都后能 通过竞争的使用者,使个体服务实例实现负载均衡并进行扩展。

不可能 服务 A 要和服务 B 互动,是要服务 A 来调用服务 B(编制),还是让服务 B 去订阅正确的时间(编排)呢?

在服务编制中都都都后能 有曾经中心实体(即例子中的服务 A),去了解被调用的其他服务。利用编排依据,都都都后能 将这名 责任分配给个体服务,由它们来负责订阅“有意思的”事件。

举个例子: