【发布时间】:2022-03-15 23:07:36
【问题描述】:
我在微服务中有以下流程:
- 在服务“A”中创建新数据。
- 服务“A”创建事件消息以通知其他服务有关更改。
- 订阅创建的事件消息(来自服务“A”)的服务“B”和“C”更新其复制数据。
跨多个服务的相同数据最终是一致的。我使用 RabbitMq 作为服务之间的消息代理(使用另一个代理是非常不可取的)。
假设我的服务已经运行了一段时间,它们之间的数据是一致的,所有新的更改都被复制并最终保持一致。突然之间,我需要添加新服务(我们称之为“D”)。
新引入的服务“D”还需要复制来自服务“A”的数据。服务“D”需要所有历史数据,因为其他服务已经运行了一段时间,而服务“A”只广播新的变化。
问题:我当前的解决方案仅为新数据更改创建事件消息。
用历史数据填充新添加的服务的正确解决方案是什么?
【问题讨论】:
标签: .net rabbitmq microservices event-driven eventual-consistency