【问题标题】:Use case of service bus in microservice architecture微服务架构中服务总线的用例
【发布时间】:2021-01-16 21:26:59
【问题描述】:

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

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

期待看到回复,提前感谢您的帮助。

【问题讨论】:

    标签: microservices servicebus


    【解决方案1】:

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

    对直接 HTTP 客户端调用起作用的点是 -

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

    反对消息总线方法/事件驱动的点 -

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

    在系统设计中,没有一个选项是不正确的。所有选项都有一些优点和一些缺点,因此请根据您的要求和系统明智地选择。

    【讨论】:

    • 是的,我也同意这个说明。我想我现在对选择服务总线或休息呼叫的考虑更加清楚了。谢谢@xs2tarunkukreja
    • 如果您同意,请接受我的回答。提前致谢。
    猜你喜欢
    • 2021-11-02
    • 2014-01-08
    • 2015-12-26
    • 2019-02-01
    • 2015-07-15
    • 2016-11-23
    • 2018-03-29
    • 2019-03-23
    相关资源
    最近更新 更多