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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

关于分布式系统的数据一致性问题(三)

發(fā)布時間:2024/4/17 windows 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于分布式系统的数据一致性问题(三) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在我的博文里面 關(guān)于分布式系統(tǒng)的數(shù)據(jù)一致性問題(二) 里面主要介紹了數(shù)據(jù)分布的情況下保證一致性的情況,在第二篇文章里面,我這里提出了三個問題

  • 訂單系統(tǒng)調(diào)用支付系統(tǒng)支付訂單,支付成功,但是返回給訂單系統(tǒng)數(shù)據(jù)超時,訂單還是I(初始狀態(tài)),但是此時會員帳戶余額100,會員肯定會馬上找京東罵京東,為啥不給老子發(fā)貨,我都付錢了
  • 訂單系統(tǒng)調(diào)用支付系統(tǒng)成功,狀態(tài)也已經(jīng)更新成功,但是通知倉庫發(fā)貨失敗,這個時候訂單是P(已支付)狀態(tài),此時會員帳戶余額是100,但是倉庫不會發(fā)貨。會員也要罵京東。
  • 訂單系統(tǒng)調(diào)用支付系統(tǒng)成功,狀態(tài)也已經(jīng)更新成功,然后通知倉庫發(fā)貨,倉庫告訴訂單系統(tǒng),沒有貨了。這個時候數(shù)據(jù)狀態(tài)和第二種情況一樣。
  • ?

    重點分析解決了第一個的問題以及相應(yīng)的方案,發(fā)現(xiàn)在數(shù)據(jù)分布的環(huán)境下,很難絕對的保證數(shù)據(jù)一致性(任何一段區(qū)間),但是有辦法通過一種補償機制,最終保證數(shù)據(jù)的一致性。

    ?

    在下面在分析一下第二個問題

    • 訂單系統(tǒng)調(diào)用支付系統(tǒng)成功,狀態(tài)也已經(jīng)更新成功,但是通知倉庫發(fā)貨失敗,這個時候訂單是P(已支付)狀態(tài),此時會員帳戶余額是100,但是倉庫不會發(fā)貨。會員也要罵京東。

    通過在上一篇文章里面分析過,這個相對來說是比較簡單的,我可以采取重試機制,如果發(fā)現(xiàn)通知倉庫發(fā)貨失敗,就一致重試,

    這里面有兩種方式:

    1 異步方式:通過類似MQ(消息通知)的機制,這個是異步的通知

    2 同步調(diào)用:類似于遠(yuǎn)程過程調(diào)用

    對于同步的調(diào)用的方式,比較簡單,我們能夠及時獲取結(jié)果,對于異步的通知,就必須采用請求,應(yīng)答的方式進(jìn)行,這一點在(關(guān)于分布式系統(tǒng)的數(shù)據(jù)一致性問題(一))里面有介紹。這里面就不再闡述。

    ?

    來看看第三個問題

    • 訂單系統(tǒng)調(diào)用支付系統(tǒng)成功,狀態(tài)也已經(jīng)更新成功,然后通知倉庫發(fā)貨,倉庫告訴訂單系統(tǒng),沒有貨了。這個時候數(shù)據(jù)狀態(tài)和第二種情況一樣。

    我覺得這是一個很有意思的問題,我們還是考慮幾種解決的方案

    1 在會員下單的時刻,就告訴倉庫,我要你把貨物留下來,

    2 在會員支付訂單時候,在支付之前檢查倉庫有沒有貨,如果沒有貨,就告知會員木有貨物了

    3 如果會員支付成功,這個時候沒有貨了,就會退款給用戶或者等待有貨的時候在發(fā)貨

    ?

    正常情況,京東的倉庫一般都是有貨的,所以影響到的會員很少,但是在秒殺和營銷的時候,這個時候就不一定了,我們考慮假設(shè)倉庫有10臺iphone

    如果采用第一種方案,

    1 在會員下單的時候,相當(dāng)于庫存就-1,那么用戶惡意拍下來,沒有去支付,就影響到了其他用戶的購買。京東可以設(shè)置一個訂單超時時間,如果這段時間內(nèi)沒有支付,就自動取消訂單

    2 在會員支付之前,檢查倉庫有貨,這種方案了,對于用戶體驗不好,但是對于京東比較好,至少我東西都賣出去了。那些沒有及時付款的用戶,只能投訴了京東無故取消訂單

    3 第三種方案,這個方案體驗更不好,而且用戶感覺受到京東欺詐,但是對于京東來說,比第二種方案更有益,畢竟我還可以多賣出一點東西。

    ?

    個人覺得,京東應(yīng)該會采用第二種或者第三種方式來處理這類情況,我在微博上搜索了 “京東 無故取消訂單”,發(fā)現(xiàn)果真和我預(yù)料的處理方式。不過至于這里的無故取消是不是技術(shù)上的原因我不知道,如果真的是技術(shù)上的原因,我覺得京東可以采用不同的處理方案。對于秒殺和促銷商品,可以考慮第一種方案,大多數(shù)人都會直接付款,畢竟便宜啊,如果用戶搶不到便宜的東西,抱怨當(dāng)然很大了。這樣可以照顧大多數(shù)用戶的體驗。對于一般的訂單,可以采用第二種或者第三種方式,這種情況下,發(fā)生付款之后倉庫沒有貨的情況會比較少,并且就算發(fā)生了,用戶也會覺得無所謂,大不了退錢嗎,這樣就可以實現(xiàn)自己的利益最大化而最低程度的減少用戶體驗。

    ?

    而鐵道部在這個問題上,采用的是第一種方案,為什么和京東不一樣,就是因為用戶體驗,如果用戶把票都買了,你告訴我木有票了,旅客會殺人的。哈哈,不過鐵道部不擔(dān)心票賣不出去,第一種方案對他影響沒有什么。

    ?

    說了這么多,就是說 分布式環(huán)境下(數(shù)據(jù)分布)要任何時刻保證數(shù)據(jù)一致性是不可能的,只能采取妥協(xié)的方案來保證數(shù)據(jù)最終一致性。這個也就是著名的CAP定理。

    轉(zhuǎn)載于:https://www.cnblogs.com/aigongsi/archive/2012/09/25/2701396.html

    總結(jié)

    以上是生活随笔為你收集整理的关于分布式系统的数据一致性问题(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。