Kafka和REST用于微服务之间的通信?

时间:2018-01-11 06:45:16

标签: rest architecture apache-kafka message-queue microservices

我目前正在开发一个架构,见下文。首先,我不确定这种架构是被称为事件驱动的还是数据驱动的架构,或者两者兼而有之。

有一些输入消息从前端发送到 T1 。首先验证这些消息,然后收集这些消息并最终评估。

我目前的方法是使用 MS A 中的所有元信息保留原始邮件, MS B 中的已排序集合以及 MS C <中的评估< / strong>即可。这将数据分离到适当关注的微服务。

T2 中,我只生成 MS B 所需的讯息。
T3 中,我只生成 MS C 所需的消息 但在评估集合时,需要来自 MS A 的所有元信息。那么如何处理这种呢?

  1. 我应该只向队列发送最少的数据并提供API吗?
  2. 我应该将所有数据发送到队列(以下服务的转发数据)吗?
  3. 我是否应该将下一个服务的所有信息发送到队列并提供API?
  4. 别的什么?
  5. 或者我是否误解了这种方法&#34;通过Kafka传播微服务&#34;?

    请随意提出批评!
    谢谢你的建议!

1 个答案:

答案 0 :(得分:2)

我认为这是一个消息驱动和数据驱动的架构,但这不应该是重要的。更重要的是微服务使用编排(而不是编排)。这question可以提供帮助。

最干净的架构是将所有数据放入消息中,这样,数量依赖性限制为2.此外,系统的弹性也会增加:如果微服务A关闭,其他下游微服务可以继续工作。

每个微服务只消耗感兴趣的消息部分而忽略另一个消息。这创建了一个漂亮且可扩展的流式处理流程。但是,如果消息太大,则应使用微服务A(或任何其他微服务)作为更多数据的参考。