gpt4 book ai didi

spring-boot - 如何在微服务中的数据库(服务的每个实例的每个数据库)之间同步数据?

转载 作者:行者123 更新时间:2023-12-04 15:38:06 25 4
gpt4 key购买 nike

如果在微服务架构中每个服务实例都有一个单独的数据库,我们如何保持数据同步?例如,如果instace#1 服务一个请求并将数据存储在它的数据库db#1 中,而instance#2 上的另一个请求想要通过instance#1 插入到db#1 的数据,那么instance 的数据库db#2 怎么办? #2 从实例#2 的数据库db#1 中获取数据?我认为 z-scaling 是这里的解决方案!

最佳答案

微服务架构使用一种称为“最终一致性”的模式。就像您描述的那样,并非所有数据库都可以直接使用新插入的数据。您可以阅读更多相关信息 here

话虽如此,CQRS 模式是解决数据分发/最终一致性问题的流行方式。
enter image description here

通过使用消息代理/总线,您可以在队列上发布所谓的“事件”。
对更改/某些实体感兴趣的微服务可以订阅这些实体并将它们保存在自己的数据库中。
这实现了松散耦合的微服务,并且某些实体所需的数据存储在同一数据库中。数据复制是可以的,因为我们使用最终一致性来确保(最终)所有微服务的所有内容都是同步的。

有关使用微服务的 CQRS 模式的更多信息,请访问 here

这是我现在正在做的事情的一个更实际的例子。语言是荷兰语,但流程应该是不言自明的:
enter image description here

希望这可以帮助!
我建议阅读以下主题:CQRS、微服务、最终一致性和消息代理(rabbitmq、kafka 等)

关于spring-boot - 如何在微服务中的数据库(服务的每个实例的每个数据库)之间同步数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59082902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com