【问题标题】:When use message brokers like apache kafka当使用像 apache kafka 这样的消息代理时
【发布时间】:2021-05-23 17:45:24
【问题描述】:

在我们公司的上一个项目中: 客户提出身份验证等请求, 然后我们应用程序的第一层获取客户端请求并在 Kafka 上生成消息, 我们的核心服务消费消息,然后向银行服务发出休息请求,得到响应后,我们在 Kafka 上生成响应消息 然后我们应用程序的第一层将消息传递给客户端。 是真正的 Kafka 用例还是移除第一层和 Kafka 更好, 并在客户端和核心之间使用休息服务。 谢谢

【问题讨论】:

    标签: apache-kafka architecture domain-driven-design messagebroker


    【解决方案1】:

    在第一步使用 kafka 进行验证不是一个好主意。理想情况下,消息队列应该用于应用程序的非关键部分。

    This 问题将帮助您了解 REST 调用和消息队列之间的功能差异。您可以根据自己的用例做出决定。

    【讨论】:

      【解决方案2】:

      使用异步消息传递系统可以让您从可用性的角度解耦您的服务。这意味着如果 A 需要调用 B 来拆分某些工作流,那么通过消息传递,A 可以在 B 不需要启动的情况下完成它的工作,然后 B 可以在它恢复\恢复\等后继续工作。

      由于上述原因,我非常不同意接受的答案:您绝对可以将消息传递用于您的应用程序的关键路径!有理由不选择消息传递(其他答案链接到的帖子很好地涵盖了),但是“将消息传递用于非关键工作负载”是一个非常糟糕的建议\启发式。

      传统上身份验证工作负载不会通过总线 tbh,但这并不是因为它们很重要,而是因为您必须先通过身份验证才能继续进行,并且因为依赖于异步路径对您的服务的每次调用进行身份验证是一个非常大的开销,如果用户点击您的服务只是为了读取一些数据,这将没有任何好处。

      【讨论】: