ruandao
V2EX  ›  问与答

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

  •  
  •   ruandao · Apr 28, 2020 · 1621 views
    This topic created in 2232 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

    在比如订票系统,订票操作需要高可靠和低延迟,但网页上显示的剩余票量不需要 100%精确,
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2780 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 15:21 · PVG 23:21 · LAX 08:21 · JFK 11:21
    ♥ Do have faith in what you're doing.