【发布时间】:2020-05-22 01:18:10
【问题描述】:
我在面试中被问到一个问题,我重新研究了很多但没有得到明确的答案..只是想知道最佳实践所以请帮忙-
如果有 10 个微服务,并且在理想情况下它应该有自己的数据库。但是如果有 10 个微服务与公共数据库交互,你将如何使其保持一致。
我认为理想情况下最好的选择是像 oracle sql 这样的数据库,它遵循酸属性并确保正在完成写入并维护酸属性,但他对答案不满意......理想情况下,如果一个数据库是否有那么一次只能写一个,并且有机会在一个人写数据时另一个服务可能会读取过时的数据,所以他不想要过时的数据。
我建议有缓存,以便我们首先写入缓存,然后我们将写入数据库,以便另一个服务可以从缓存中读取并获取更新的值,
他对此并不满意...请分享您的想法。我浏览了多个博客,但没有得到任何满意的答案。
【问题讨论】:
-
consistent在给定上下文中的含义是什么?有 ACID 一致性和逻辑一致性(在业务层上)。你熟悉eventual consistency这个词吗? -
为了最终一致,你需要一个副本和。他希望更新的结果最终不一致。
-
为了最终保持一致,你需要有一个副本:虽然你是对的,但不是真的,但考虑到有单个 db 实例,它也可以呈现是否涉及队列和使用它们进行通信的服务。
标签: microservices