我们目前的项目基于微服务架构。到目前为止一切顺利,但我们开始采取一种方法,使所有这些数据在数据方面保持一致状态。
基本上我们根据解决方案中的主要实体拆分它们。这些实体可以很好地独立工作,但它们之间仍然存在一些依赖关系,这涉及在修改来自另一个微服务的实体时更新一组微服务。
我们试图通过不同的途径来应对这一挑战。 起初,我们认为rabbitmq是解决此问题的一个很好的解决方案:微服务将带有更改信息的消息发送到交换机,交换机将其扇出到消费的微服务队列。像这样:
这似乎是一个很好的解决方案,但如果任何消费者出现错误,我们会对数据一致性有点担心:我们需要实施一种策略,以便在所有消费微服务中恢复这些变化。还在考虑像ZeroMq这样的无代理技术,可以在没有代理瓶颈的情况下做同样的技巧。
我们还考虑将masstransit路由滑动模式实现作为一种可能的解决方案,因此我们可以轻松地补偿所有这些错误,但我们并不喜欢使用一系列消耗这些变化的连续活动。我们宁愿采用与rabbitmq相同的方法,消费者以更平行的方式工作。
所以现在我们陷入了僵局,我们想知道其他开发人员选择哪种解决方案来解决这个问题。 如果那些人能够解决这个问题,我们不会放弃其他技术。
答案 0 :(得分:0)
这是微服务架构的主要缺点之一。我能想到:
我们有上述实现来解决上述问题。
您可以阅读我的文章,了解微服务设计原则:
https://techietweak.wordpress.com/2015/07/05/mdp/
感谢。