V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ruandao
V2EX  ›  问与答

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

  •  
  •   ruandao · 2020-04-28 00:59:40 +08:00 · 1174 次点击
    这是一个创建于 1656 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

    在比如订票系统,订票操作需要高可靠和低延迟,但网页上显示的剩余票量不需要 100%精确,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   969 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 21:12 · PVG 05:12 · LAX 13:12 · JFK 16:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.