【问题标题】:Eventual consistency data orchestration in microservices RabbitMq broker微服务 RabbitMq 代理中的最终一致性数据编排
【发布时间】:2022-03-15 23:07:36
【问题描述】:

我在微服务中有以下流程:

  1. 在服务“A”中创建新数据。
  2. 服务“A”创建事件消息以通知其他服务有关更改。
  3. 订阅创建的事件消息(来自服务“A”)的服务“B”和“C”更新其复制数据。

跨多个服务的相同数据最终是一致的。我使用 RabbitMq 作为服务之间的消息代理(使用另一个代理是非常不可取的)。

假设我的服务已经运行了一段时间,它们之间的数据是一致的,所有新的更改都被复制并最终保持一致。突然之间,我需要添加新服务(我们称之为“D”)。

新引入的服务“D”还需要复制来自服务“A”的数据。服务“D”需要所有历史数据,因为其他服务已经运行了一段时间,而服务“A”只广播新的变化。

问题:我当前的解决方案仅为新数据更改创建事件消息。

用历史数据填充新添加的服务的正确解决方案是什么?

【问题讨论】:

    标签: .net rabbitmq microservices event-driven eventual-consistency


    【解决方案1】:

    最终选择了streams

    所有事件都保存在流中。每个客户端都会跟踪其读取消息的进度。新引入的客户端从流的开头读取,从而允许他们访问所有历史数据。

    【讨论】:

      猜你喜欢
      • 2019-09-23
      • 2018-06-25
      • 2015-09-15
      • 2022-10-12
      • 2022-10-16
      • 2020-05-28
      • 2017-11-30
      • 2015-09-03
      相关资源
      最近更新 更多