【问题标题】:Microservices and messaging pattern微服务和消息传递模式
【发布时间】:2018-11-28 19:57:04
【问题描述】:

对于基于微服务的解决方案,正如通常在“文献”中所描述的那样,在服务前面有一个轻量级层,例如用作负载平衡器或实现某种身份验证和/或授权.

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

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

【问题讨论】:

标签: microservices message messagebroker


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你的单个问题里面有不同的独立问题。

    (1) 微服务​​系统能否在没有消息代理系统的帮助下生存?

    是的,绝对可以。

    (2) 具有认证/授权(身份服务器)层的微服务系统在没有消息代理系统的帮助下还能生存吗?

    是的,还是可以的。

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

    消息代理(消息队列)是一种经过验证的干净子服务之间实现通信(企业集成)的方式。

    干净是什么意思?

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

    (4) 现在,不使用消息队列的其他替代方案是什么?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-15
      • 2017-04-21
      • 2014-04-26
      • 2018-02-24
      • 2013-04-23
      • 2018-01-03
      • 2019-10-26
      • 2016-08-05
      相关资源
      最近更新 更多