本節書摘來自異步社群出版社《解讀nosql》一書中的第2章,第2.8節,作者: 【美】dan mccreary(丹•麥克雷) , ann kelly(安•凱利),更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
sally被委托去幫助一個團隊設計一個管理貴賓禮品卡的系統。和銀行賬戶有些類似,持卡人可以為卡充值(存款)、購買(取款)和檢視卡的餘額。禮品卡的資料會被分區并複制到兩個資料中心,一個在美國,一個在歐洲。居住在美國的人們優先分區到美國的資料中心,而歐洲的人們優先分區到歐洲的資料中心。
已知兩個資料中心之間的資料傳輸線路會短時間的中斷,大概每年10~20分鐘。sally知道這是一個切分分區的執行個體,它将考驗系統的分區容錯性。團隊需要決定當資料傳輸線路故障時全部3個操作(存款、取款和檢視餘額)是否需要能夠繼續。
團隊決定即使在資料傳輸線路故障時,存款操作也應該能夠繼續,這是因為當連接配接恢複後,存款記錄能夠更新兩個站點的資料。sally提到如果一個站點不能及時更新另一個站點的餘額資訊,切分分區可能會造成讀取結果不一緻。但是團隊決定當發生連接配接故障時,如果請求銀行餘額,仍然從本地分區傳回上次的餘額。
對于購買事務,團隊決定當發生連接配接故障時,一旦使用者連接配接到主分區,事務應當繼續執行完成。為了限制風險,對于複制分區的取款操作隻會限制在一個特定的數額,如100美元。一些報表将會用于檢視在網絡中斷期間,所有分區上的各種取款操作導緻了産生錯誤餘額的頻率。