微服务和消息传递模式

时间:2018-06-19 19:09:46

标签: microservices message messagebroker

使用基于微服务的解决方案(通常在“文献”中进行介绍),在服务的前面有一个轻量级的层,例如,用作负载平衡器或实现某种身份验证和/或授权

我想知道在这种解决方案中,微服务如何使用消息进行通信。如果没有消息代理,是否在JMS(或类似级别)上直接实现消息传递?

真的有可能在不使用任何消息代理的情况下实施适当的消息传递解决方案吗?

2 个答案:

答案 0 :(得分:1)

消息或事件用于异步通信,在这种情况下,微服务只是一小段代码,它们以某种方式对新消息做出反应。您可以使用一种机制来将消息从服​​务发送到另一个服务,但这只是效率不高或不干净。因此,我们确实需要一个消息代理,其职责是管理事件/消息。 我认为您不能没有消息经纪人

答案 1 :(得分:1)

您的单个​​问题中有不同的单独问题。

(1)如果没有消息代理系统的帮助,微服务系统能否生存?

是的,肯定可以。

(2)在没有消息代理系统的帮助下,具有身份验证/授权(身份服务器)层的微服务系统是否仍然可以生存?

是的,仍然可以。

(3)那么,到底为什么人们使用消息代理在微服务之间进行通信?

消息代理(消息队列)是一种行之有效的 干净 方式,用于实现子服务之间的通信(企业集成)。

干净 是什么意思?

  • 异步通信(无需等待)
  • 可以轻松扩展不同的服务(没有JVM依赖性,可以在不同的服务器中部署不同的服务)
  • 可以集中管理事件(只是另一个发布子)
  • 可扩展性(易于添加另一个需要与某些现有服务进行通信的服务)

(4)现在,在不使用消息队列的情况下还有哪些其他选择?

  • 简单的重定向(一种不错的选择,如果您很难尝试进一步扩展系统的话)
  • Service Provider Interfacing(SPI)(同样适用于小规模规模,但您仍然受相同的JVM共享限制)