全球化部署需要解決以下幾個問題:
第一,業(yè)務(wù)核心單元的梳理巫延。這些核心單元必須可以裁剪或添加效五。
第二,核心單元必須可以快速部署到國防的機房炉峰,最好能夠一鍵部署畏妖,即首先要實現(xiàn)單元化部署。
第三疼阔,實現(xiàn)全球數(shù)據(jù)連通戒劫。
第四半夷,處于研發(fā)效率的考慮,部署在全球的業(yè)務(wù)系統(tǒng)要有良好的定制型和擴展性迅细。
1.國際化的背景
國際化一般有兩種類型:
一種是進(jìn)口業(yè)務(wù)巫橄,像天貓國際和全球購;
一種是出口業(yè)務(wù)茵典,像速賣通和海外湘换。
系統(tǒng)建設(shè)存在的兩種思路:
a、將國內(nèi)的系統(tǒng)完整的復(fù)制過去在本地重新搭建一套统阿,實現(xiàn)本地化運營彩倚,兩邊的系統(tǒng)相互獨立,數(shù)據(jù)不通扶平。
b帆离、只在本地建設(shè)個性化的系統(tǒng),當(dāng)?shù)氐南到y(tǒng)和國內(nèi)數(shù)據(jù)是打通的结澄,整體還是一套系統(tǒng)盯质。
2.面臨的技術(shù)挑戰(zhàn)
業(yè)務(wù)挑戰(zhàn):一是它必須采用就近訪問原則,必須要保證用戶體驗概而;二是它不能跨區(qū)域進(jìn)行大流量的并發(fā)讀寫,因為延時比較大囱修,對系統(tǒng)的吞吐量會有致命的影響赎瑰。
達(dá)到目標(biāo):
a.單元化
b.一套代碼、全球部署
c.服務(wù)本地破镰、數(shù)據(jù)共享
d.區(qū)域容災(zāi)餐曼、全球多活
滿足條件:
a.要能共享和快速復(fù)制全球化基礎(chǔ)設(shè)施
b.基礎(chǔ)業(yè)務(wù)數(shù)據(jù)要能互通
c.業(yè)務(wù)系統(tǒng)要做抽象、提升可擴展性鲜漩,能快速支撐業(yè)務(wù)發(fā)展源譬。
3.單元化
何為單元化
所謂單元化就是按照某種維度對數(shù)據(jù)進(jìn)行水平拆分,拆分后數(shù)據(jù)分布在不同地域并且對數(shù)據(jù)的更新是單寫的孕似。
單元化解決什么問題
解決物理資源限制的問題
解決高可用的問題
解決國際化踩娘、全球化業(yè)務(wù)問題。
單元化數(shù)據(jù)分片方案
a.中心-多單元模式
考慮到多單元建設(shè)的成本問題喉祭,不可能也沒必要把所有系統(tǒng)都單元化养渴,只需要把最小的核心系統(tǒng)單元化就能達(dá)到目的,即大部分業(yè)務(wù)系統(tǒng)都放在中心單元泛烙,再對中心單元的系統(tǒng)做冷備理卑。
b.多機房 A-A模式
讓同一業(yè)務(wù)系統(tǒng)在多機房同時提供服務(wù)。
要做到這一點蔽氨,必須做這兩件事:
第一藐唠,按照某個維度對數(shù)據(jù)進(jìn)行劃分:比如是司機還是乘客帆疟;
第二,解決數(shù)據(jù)層的異地復(fù)制和一致性問題:數(shù)據(jù)庫雙向復(fù)制和一致性校驗宇立。
c.數(shù)據(jù)按照什么維度劃分
典型的電商數(shù)據(jù)一般分為買家數(shù)據(jù)踪宠、賣家數(shù)據(jù)。
遵守的規(guī)則:
就近訪問泄伪、Hash取模殴蓬、對用戶建路由表
數(shù)據(jù)漫游問題
4.數(shù)據(jù)路由方案
主鍵ID做上標(biāo)識
設(shè)置路由表
trace透傳
路由模式:
中心模式,所有接口都回中心單元蟋滴。
單元模式染厅,按照單元化原則進(jìn)行路由的接口,都需要被路由到正確的單元完成津函。
混合模式肖粮,表示路由原則可以是本單元優(yōu)先,如果本單元不存在回中心單元調(diào)用尔苦。
5.接入層路由
基于多域名跳轉(zhuǎn)
基于CDN代理
6.服務(wù)層路由
需要解決三個問題:哪些服務(wù)需要路由涩馆;單元內(nèi)服務(wù)如何路由;單元之間的服務(wù)如何路由允坚。
7.數(shù)據(jù)層路由
包括三個部分:對數(shù)據(jù)寫入DB做最后一層的正確性校驗魂那;做DB之間的數(shù)據(jù)復(fù)制;不同機房之間Cache中的數(shù)據(jù)的一致性問題稠项。
8.Sequence ID的沖突問題
以下幾種解決思路:
基于一個全局統(tǒng)一的Sequence生成器涯雅。
提前預(yù)設(shè)分段,比如A庫用奇數(shù)展运,B庫有偶數(shù)活逆。
設(shè)置起始值加步長的方式,并且基于數(shù)據(jù)庫表做更新拗胜。
9.異地多活
當(dāng)某個單元機器發(fā)生故障時悴能,需要把這個單元的用戶數(shù)據(jù)切換到中心或者其他單元芍秆,切換過程中,最重要的是保證數(shù)據(jù)的正確性。因此浑劳,必須按照一定的步驟來實現(xiàn):
禁寫要切換的用戶請求册着。
送消息的路由規(guī)則妻率。
推送默認(rèn)的路由規(guī)則蔚晨。
關(guān)閉之前設(shè)定的用戶禁寫規(guī)則
10.多語言問題
多語言文案的解決方案
多語言的存儲
實時翻譯引擎
11.多時區(qū)問題
解決方案:
使用UTC時間
使用本地時間
使用同一時區(qū)
12.全球數(shù)據(jù)同步與數(shù)據(jù)路由
數(shù)據(jù)復(fù)制
各國對數(shù)據(jù)的保護(hù)政策
13.全球化部署中遇到的坑
臟數(shù)據(jù)、路由規(guī)則不一致咖杂、路由規(guī)則延遲生效庆寺、服務(wù)接口改造遺漏、應(yīng)用層繞過路由規(guī)則直接寫數(shù)據(jù)庫诉字、MySQL同步數(shù)據(jù)錯誤懦尝、數(shù)據(jù)同步故障知纷、中心-單元網(wǎng)絡(luò)故障
推薦閱讀:
<<<《大型網(wǎng)站技術(shù)架構(gòu)演進(jìn)與性能優(yōu)化》之分布式改造[一]
<<<《大型網(wǎng)站技術(shù)架構(gòu)演進(jìn)與性能優(yōu)化》之無線時代下的構(gòu)架演進(jìn)[二]
<<<《大型網(wǎng)站技術(shù)架構(gòu)演進(jìn)與性能優(yōu)化》之大中臺小前臺[三]
<<<《大型網(wǎng)站技術(shù)架構(gòu)演進(jìn)與性能優(yōu)化》之代碼級優(yōu)化[五]
<<<《大型網(wǎng)站技術(shù)架構(gòu)演進(jìn)與性能優(yōu)化》之合并部署[六]
<<<《大型網(wǎng)站技術(shù)架構(gòu)演進(jìn)與性能優(yōu)化》之大秒系統(tǒng)的極致優(yōu)化思路[七]
<<<《大型網(wǎng)站技術(shù)架構(gòu)演進(jìn)與性能優(yōu)化》之資源調(diào)度優(yōu)化[八]
<<<《大型網(wǎng)站技術(shù)架構(gòu)演進(jìn)與性能優(yōu)化》之大型網(wǎng)站的穩(wěn)定性建設(shè)[九]