日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

什么是顺序一致性呢?

發布時間:2024/4/13 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是顺序一致性呢? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在講順序一致性之前,咱們思考一個問題,假如說zookeeper是一個最終一致性模型,那么他會發生什么情況?

ClientA/B/C假設只串行執行,?clientA更新zookeeper上的一個值x。ClientB和clientC分別讀取集群的不同副本,返回的x的值是不一樣的。clientC的讀取操作是發生在clientB之后,但是卻讀到了過期的值。很明顯,這是一種弱一致模型。如果用它來實現鎖機制是有問題的。

順序一致性提供了更強的一致性保證,我們來觀察下面這個圖,從時間軸來看,B0發生在A0之前,讀取的值是0,B2發生在A0之后,讀取到的x的值為1.而讀操作B1/C0/C1和寫操作A0在時間軸上有重疊,因此他們可能讀到舊的值為0,也可能讀到新的值1.?但是在強順序一致性模型,
如果B1得到的x的值為1,那么C1看到的值也一定是1.?

需要注意的是:由于網絡的延遲以及系統本身執行請求的不確定性,會導致請求發起的早的客戶端不一定會在服務端執行得早。最終以服務端執行的結果為準。

簡單來說:順序一致性是針對單個操作,單個數據對象。屬于CAP中C這個范疇。一個數據被更新后,能夠立馬被后續的讀操作讀到。

但是zookeeper的順序一致性實現是縮水版的,在下面這個網頁中,可以看到官網對于一致性這塊做了解釋?http://zookeeper.apache.org/doc/r3.5.5/zookeeperProgrammers.html#ch_zkGuarantees?zookeeper不保證在每個實例中,兩個不同的客戶端具有相同的zookeeper數據視圖,由于網絡延遲等因素,一個客戶端可能會在另外一個客戶端收到更改通知之前執行更新,考慮到2個客戶端A和B的場景,如果A把znode?/a的值從0設置為1,然后告訴客戶端B讀取?/a,?則客戶端B可能會讀取到舊的值0,具體取決于他連接到那個服務器,如果客戶端A和B要讀取必須要讀取到相同的值,那么client?B在讀取操作之前執行sync方法。

除此之外,zookeeper基于zxid以及阻塞隊列的方式來實現請求的順序一致性。如果一個client連接到一個最新的follower上,那么它read讀取到了最新的數據,然后client由于網絡原因重新連接到zookeeper節點,而這個時候連接到一個還沒有完成數據同步的follower節點,那么這一次讀到的數據不久是舊的數據嗎?實際上zookeeper處理了這種情況,client會記錄自己已經讀取到的最大的zxid,如果client重連到server發現client的zxid比自己大。連接會失敗

?

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的什么是顺序一致性呢?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。