什么是最终一致性,有点混淆,谢谢

2020-04-28 00:59:40 +08:00
 ruandao

是指一个业务中,不同数据譬如下单和扣钱这两个不同的数据,随着时间推移达到一致(即下单和扣钱都执行了,刚开始可能只是先扣钱,然后通过本地消息表来下单)

还是指,同一个数据,在不同节点中,随着时间的推移,如果没有新的写入的话,达到同一个值

查资料的时候,碰到这篇文章 https://juejin.im/post/5c9443406fb9a070fe0dd9a9#heading-23 感觉就有点奇怪,像两阶段、tcc 、补偿之类的应该和最终一致性没有关系

1175 次点击
所在节点    问与答
5 条回复
xstmjh
2020-04-28 01:06:42 +08:00
后者
ruandao
2020-04-28 01:07:12 +08:00
@xstmjh 谢谢
coldear
2020-04-28 01:11:24 +08:00
分布式系统的特性,读写可能发生在不同的节点,存在在一定时间内,读到的不是最新数据的问题,但最终各个节点的数据应该是一致的。
ruandao
2020-04-28 01:22:33 +08:00
@coldear

具体到业务场景呢? 感觉平常开发大多都是,做无状态化,然后 wrap 一下数据库,然后读写不在同一个节点,基本上,就是主库写入,从库读

但是,两阶段提交,tcc,补偿之类的,都是写操作,主库写入,主库写入数据是一致的,感觉和最终一致性没有关系
coldear
2020-04-28 05:24:52 +08:00
@ruandao 有主从节点结构的不一定都是最终一致性,也可是是强一致性的。 主节点可以设置为在所有节点同步后在返回,但这样延迟就比较高。

业务场景主要是针对需要高可靠性,低延迟,但又不太需要特别高的数据即时性。
比如微博,发微博的操作需要高可靠性,但你的粉丝不需要在发微博的那一时刻全部看到你的最新微博,可以允许一部分用户先看到,最终所有人都看到就可以。

在比如订票系统,订票操作需要高可靠和低延迟,但网页上显示的剩余票量不需要 100%精确,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/666777

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX