服务总线在微服务架构中的使用案例

Use case of service bus in microservice architecture

我正在尝试学习构建遵循微服务基础及其注意事项的业务应用程序。我遇到了一个我有点困惑的问题。

在具有多个微服务和自己的数据库的微服务架构中,如果需要在彼此之间共享数据,那么应该提供什么方式,服务总线或通过 HttpClient 调用它们? 我知道只要消息需要与其他人共享,就可以通过服务总线使用消息队列,一个微服务可以发布此消息,然后所有订阅者都可以检索该消息,但在这种情况下,如果该信息需要存储在其他微服务应用程序的DB也是,那岂不是成了冗余数据? 因此,在需要时仅通过 HttpClient 读取数据是不够的。

期待看到回复,在此先感谢您的帮助。

这取决于其他因素,如延迟、冗余和可用性。这两个选项都可以在我们需要数据时保留冗余数据或 REST 调用。

反对直接 HTTP 客户端调用的要点是 -

  1. 它会影响可用性。它会降低系统的整体可用性。
  2. 它会影响性能和延迟。支持服务A有一个操作需要服务B的数据。操作频率非常高。在这种情况下,它会降低性能并增加延迟和响应时间。
  3. 它不支持 JOIN。所以,你必须操纵数据。这也会影响性能。

针对消息总线工作的要点 approach/event 驱动 -

  1. 重复数据 - 因此,增加系统的复杂性以保持相同的同步。
  2. 它降低了系统的一致性。现在,系统最终是一致的。

在系统设计中,没有一个选项是错误的。所有选项都有利有弊,因此请根据您的要求和系统明智地选择。