自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

我們一起聊聊業(yè)務(wù)定制型異地多活架構(gòu)設(shè)計(jì)

開發(fā) 架構(gòu)
異地多活架構(gòu)設(shè)計(jì)的本質(zhì)是平衡CAP定理中的“可用性(A)”和“分區(qū)容忍性(P)”,而通常在必要的情況下對(duì)“一致性(C)”做出一定程度的妥協(xié)。

大道至簡(jiǎn)

圖片圖片

左圖展示了一個(gè)強(qiáng)調(diào)一致性(C)和分區(qū)容忍性(P)的系統(tǒng)。在這種系統(tǒng)中,當(dāng)網(wǎng)絡(luò)分區(qū)(Partition)發(fā)生錯(cuò)誤時(shí),系統(tǒng)可能會(huì)拒絕操作以保持?jǐn)?shù)據(jù)的一致性,犧牲了一部分可用性。例如,如果節(jié)點(diǎn)N1和N2無法通信(分區(qū)容忍性問題),系統(tǒng)可能會(huì)選擇停止操作,確保任何讀取都是一致的,即使這意味著某些操作不能完成。

右圖展示的是一個(gè)強(qiáng)調(diào)可用性(A)和分區(qū)容忍性(P)的系統(tǒng)。在這種系統(tǒng)中,即使發(fā)生了分區(qū)錯(cuò)誤,每個(gè)節(jié)點(diǎn)(N1和N2)仍會(huì)盡力響應(yīng)用戶的請(qǐng)求,保證服務(wù)的可用性。這可能導(dǎo)致數(shù)據(jù)的不一致,因?yàn)閮蓚€(gè)分區(qū)可能會(huì)獨(dú)立響應(yīng)并導(dǎo)致數(shù)據(jù)狀態(tài)不同步。

異地多活架構(gòu)設(shè)計(jì)的本質(zhì)是平衡CAP定理中的“可用性(A)”和“分區(qū)容忍性(P)”,而通常在必要的情況下對(duì)“一致性(C)”做出一定程度的妥協(xié)。

大道至深 - CAP

粒度:

CAP 關(guān)注的粒度是數(shù)據(jù),而不是系統(tǒng),需要根據(jù)不同業(yè)務(wù)的數(shù)據(jù)特點(diǎn)來設(shè)計(jì)

異地多活。

延遲:

CAP 是忽略網(wǎng)絡(luò)延遲的 ,但工程落地不可能做到零延遲。

分區(qū)容忍:

C和A只能取1個(gè)是在發(fā)生分區(qū)的時(shí)候,正常運(yùn)行情況下,可以同時(shí)滿足 CA。

補(bǔ)救:

放棄 != 無為,需要為分區(qū)恢復(fù)后做準(zhǔn)備,包括人工修復(fù)數(shù)據(jù)。

原則1 - 只保證核心業(yè)務(wù)

圖片圖片

不同業(yè)務(wù)的數(shù)據(jù)特性不同,無法全部做到異地多活。

原則2 - 只能做到最終一致性

圖片圖片

復(fù)制肯定有時(shí)間窗,拋棄實(shí)時(shí)一致性的幻想

原則3 - 只能保證絕大部分用戶

圖片圖片

異地多活設(shè)計(jì)步驟

1.業(yè)務(wù)分級(jí):

將業(yè)務(wù)按照某個(gè)維度進(jìn)行優(yōu)先級(jí)排序,優(yōu)先保證TOP3 業(yè)務(wù)異地多活。

2.數(shù)據(jù)分類:

分析 TOP3 中的每個(gè)業(yè)務(wù)的關(guān)鍵數(shù)據(jù)特點(diǎn),將數(shù)據(jù)分類。

3.數(shù)據(jù)同步

針對(duì)不同的數(shù)據(jù)分類設(shè)計(jì)不同的數(shù)據(jù)同步方式。

4.異常處理

針對(duì)極端異常的情況,考慮如何處理,可以是技術(shù)手段或非技術(shù)手段。

步驟1 – 業(yè)務(wù)分級(jí)

訪問量:

登錄 > 注冊(cè) > 修改密碼

核心場(chǎng)景:

聊天 > 朋友圈 > 搖一搖

收入來源:

訂單 > 搜索 > 編輯

步驟2 – 數(shù)據(jù)分類

數(shù)據(jù)的修改量:

數(shù)據(jù)被修改的數(shù)量和頻率,包括新增、刪除、修改。

一致性:

數(shù)據(jù)的一致性要求,例如:強(qiáng)一致性(余額、庫(kù)存)、最終一致性(動(dòng)態(tài)、興趣)。

唯一性:

數(shù)據(jù)的唯一性要求,例如:全局唯一(用戶 ID)、可重復(fù)(昵稱)

可丟失性:

數(shù)據(jù)是否可丟失,例如:不可丟失(賬戶余額)、可丟失(微博、密碼)。

可恢復(fù)性:

數(shù)據(jù)是否可恢復(fù),例如:用戶恢復(fù)(微博)、系統(tǒng)提供恢復(fù)(密碼找回)、內(nèi)部恢復(fù)(例如編輯和運(yùn)營(yíng)重發(fā))。

步驟3 – 數(shù)據(jù)同步

圖片圖片

多管齊下,“不擇手段”,不要局限于存儲(chǔ)系統(tǒng)同步!

步驟3 – 數(shù)據(jù)同步技巧

圖片

步驟4 –異常處理

業(yè)務(wù)兼容:

體驗(yàn)不好 優(yōu)于 無法體驗(yàn)。

1. 數(shù)據(jù)短時(shí)間不一致:業(yè)務(wù)有損,例如微博、朋友圈;

2. 數(shù)據(jù)無法獲?。恨D(zhuǎn)賬申請(qǐng),支付核對(duì)中。

事后補(bǔ)償:

少量用戶損失,用錢解決。

1. 禮包、紅包;

2. 禮物、物品(暴雪爐石回檔補(bǔ)償);

3. 保險(xiǎn)賠償。

人工修正:

盡力而為,減少損失。

1. 人工訂正數(shù)據(jù),達(dá)到最終一致性;

2. 重要事情說三遍:日志、日志、日志。

5大技巧1 - 消息隊(duì)列同步

圖片

適合全局唯一的數(shù)據(jù),因?yàn)榭梢愿采w;不適合余額之類的數(shù)據(jù),因?yàn)閿?shù)據(jù)修改無法做到冪等性。

5大技巧2 - 庫(kù)存拆分

圖片

余額這么拆分可以嗎?

通常會(huì)有一個(gè)中央權(quán)威的賬戶管理系統(tǒng)來處理余額,而不是在各個(gè)數(shù)據(jù)中心分別處理。這樣可以簡(jiǎn)化一致性和同步的復(fù)雜性,盡管這可能犧牲一些響應(yīng)時(shí)間和可用性

5大技巧3 - 事務(wù)合并

圖片圖片

例如:游戲玩家異地充值100,消費(fèi)60,即使 IDC-B 的業(yè)務(wù)服務(wù)器不知道玩家的實(shí)際余額(在 IDC-A 的數(shù)據(jù)庫(kù)中),業(yè)務(wù)也是可以繼續(xù)處理的,具體實(shí)現(xiàn)邏輯如下:

1. 正常情況下通過數(shù)據(jù)庫(kù)同步來同步余額,對(duì)應(yīng)上圖的 IDC-A 到 IDC-B 的“余額同步”;

2. 異常情況下,IDC-A 機(jī)房掛掉,余額同步中斷,可能會(huì)導(dǎo)致 IDC-A 和 IDC-B 的數(shù)據(jù)不同步,例如圖中兩個(gè)余額表的余額,IDC-A 是 30,IDC-B 是65;

3. 玩家到 IDC-B 想消費(fèi)60塊,無論 IDC-B 的余額表中是大于還是小于60,都不能直接消費(fèi),因?yàn)闊o法判斷這個(gè)余額數(shù)據(jù)是否一致;

4. 玩家到 IDC-B 先充值100塊,再消費(fèi)60塊,無論 IDC-B 的余額表中是大于還是小于60,都是允許的,此時(shí) IDC-B 在臨時(shí)事務(wù)表中記錄兩個(gè)事務(wù);

5. IDC-A 恢復(fù)后,IDC-B 將臨時(shí)事務(wù)表中的事務(wù)發(fā)給 IDC-A,IDC-A 進(jìn)行合并,合并后的真實(shí)余額是70元,然后再通過“余額同步”這個(gè)通道將70元余額同步給 IDC-B 的余額表。

5大技巧4 - 實(shí)時(shí)改異步

圖片圖片

5大技巧5 - 適當(dāng)容忍

圖片圖片

業(yè)務(wù)上稍微放開一些約束,例如:電話會(huì)議系統(tǒng)允許欠費(fèi)也能發(fā)起會(huì)議。

總結(jié):

圖片圖片

責(zé)任編輯:武曉燕 來源: 二進(jìn)制跳動(dòng)
相關(guān)推薦

2023-11-28 07:45:48

Rust自動(dòng)化測(cè)試

2024-02-20 13:00:00

架構(gòu)設(shè)計(jì)模塊

2024-04-26 00:28:14

異地多活架構(gòu)

2022-01-04 12:08:46

設(shè)計(jì)接口

2024-07-12 08:28:09

聊天系統(tǒng)架構(gòu)

2021-02-24 10:05:07

架構(gòu)運(yùn)維技術(shù)

2024-05-29 12:53:30

2024-02-26 00:00:00

架構(gòu)老化重構(gòu)

2021-08-27 07:06:10

IOJava抽象

2024-02-20 21:34:16

循環(huán)GolangGo

2023-08-04 08:20:56

DockerfileDocker工具

2022-05-24 08:21:16

數(shù)據(jù)安全API

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2023-09-10 21:42:31

2023-06-30 08:18:51

敏捷開發(fā)模式

2023-11-30 07:40:05

URLCMS

2024-10-29 11:19:23

點(diǎn)贊系統(tǒng)同步

2025-03-05 08:02:45

2022-01-10 08:17:40

異地設(shè)計(jì)實(shí)踐

2023-06-20 07:27:07

架構(gòu)組件插件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)