【发布时间】:2015-09-03 19:46:15
【问题描述】:
我们当前的项目基于微服务架构。到目前为止一切都很好,但我们开始尝试一种方法,让它们在数据方面保持一致。
基本上,我们根据解决方案中的主要实体来拆分它们。这些实体可以很好地独立工作,但它们之间仍然存在一些依赖关系,其中涉及在修改另一个微服务的实体时更新一组微服务。
我们试图通过不同的途径应对这一挑战。 起初,我们认为 rabbitmq 是解决这个问题的一个很好的解决方案:一个微服务将带有更改信息的消息发送到一个交换器,交换器将它扇出到消费微服务队列。像这样的:
这似乎是一个很好的解决方案,但如果任何消费者出现错误,我们有点担心数据一致性:我们需要实施一种策略,在所有消费微服务中恢复这些更改。还在考虑使用 ZeroMq 等无代理技术,该技术可以在没有代理瓶颈的情况下实现相同的技巧。
我们还认为公共交通路线滑动模式实施是一种可能的解决方案,因此我们可以以简单的方式补偿所有这些错误,但我们不喜欢让一组连续的活动消耗这些更改。我们宁愿采用与 rabbitmq 相同的方法,消费者以更并行的方式工作。
所以现在我们陷入了僵局,我们想知道其他开发人员选择了什么来解决这个问题。 如果能够解决这个问题,我们不会放弃其他技术。
【问题讨论】:
-
如果许多实体需要执行一个操作,或者如果其中一个失败了则根本不需要执行某个操作,那么您就有了共识问题,您应该寻找一个可以解决该问题的库/系统。
标签: rabbitmq zeromq masstransit microservices