大型網站技術架構演進與性能優化(四) 全球化下的網站演進:全球部署方案

四、全球化下的網站演進:全球部署方案
全球化部署需要解決以下幾個問題:
第一,業務核心單元的梳理。這些核心單元必須可以裁剪或添加。
第二,核心單元必須可以快速部署到國防的機房,最好能夠一鍵部署,即首先要實現單元化部署。
第三,實現全球數據連通。
第四,處於研發效率的考慮,部署在全球的業務系統要有良好的定製型和擴展性。
1、國際化的背景
國際化一般有兩種類型:一種是進口業務,像天貓國際和全球購;一種是出口業務,像速賣通和海外。
系統建設存在的兩種思路:
a、將國內的系統完整的複製過去在本地重新搭建一套,實現本地化運營,兩邊的系統相互獨立,數據不通。
b、只在本地建設個性化的系統,當地的系統和國內數據是打通的,整體還是一套系統。
2、面臨的技術挑戰
業務挑戰
一是它必須採用就近訪問原則,必須要保證用戶體驗;二是它不能跨區域進行大流量的併發讀寫,因爲延時比較大,對系統的吞吐量會有致命的影響。
達到目標
單元化
一套代碼、全球部署
服務本地、數據共享
區域容災、全球多活
滿足條件
要能共享和快速複製全球化基礎設施
基礎業務數據要能互通
業務系統要做抽象、提升可擴展性,能快速支撐業務發展。
3、全球部署的目標架構

4、何爲單元化
所謂單元化就是按照某種維度對數據進行水平拆分,拆分後數據分佈在不同地域並且對數據的更新是單寫的。
5、單元化解決什麼問題
解決物理資源限制的問題
解決高可用的問題
解決國際化、全球化業務問題。
6、單元化數據分片方案
中心-多單元模式
考慮到多單元建設的成本問題,不可能也沒必要把所有系統都單元化,只需要把最小的核心繫統單元化就能達到目的,即大部分業務系統都放在中心單元,再對中心單元的系統做冷備。
多機房 A-A模式
讓同一業務系統在多機房同時提供服務。
要做到這一點,必須做這兩件事:
第一,按照某個維度對數據進行劃分:比如是司機還是乘客;
第二,解決數據層的異地複製和一致性問題:數據庫雙向複製和一致性校驗。
數據按照什麼維度劃分
典型的電商數據一般分爲買家數據、賣家數據。
遵守的規則:
就近訪問、Hash取模、對用戶建路由表
數據漫遊問題
7、數據路由方案
主鍵ID做上標識
設置路由表
trace透傳
路由模式:
中心模式,所有接口都回中心單元。
單元模式,按照單元化原則進行路由的接口,都需要被路由到正確的單元完成。
混合模式,表示路由原則可以是本單元優先,如果本單元不存在回中心單元調用。
8、接入層路由
基於多域名跳轉
基於CDN代理
9、服務層路由
需要解決三個問題:哪些服務需要路由;單元內服務如何路由;單元之間的服務如何路由。
10、數據層路由
包括三個部分:對數據寫入DB做最後一層的正確性校驗;做DB之間的數據複製;不同機房之間Cache中的數據的一致性問題。
11、Sequence ID的衝突問題
以下幾種解決思路:
基於一個全局統一的Sequence生成器。
提前預設分段,比如A庫用奇數,B庫有偶數。
設置起始值加步長的方式,並且基於數據庫表做更新。
12、異地多活
當某個單元機器發生故障時,需要把這個單元的用戶數據切換到中心或者其他單元,切換過程中,最重要的是保證數據的正確性。因此,必須按照一定的步驟來實現:
禁寫要切換的用戶請求。
送消息的路由規則。
推送默認的路由規則。
關閉之前設定的用戶禁寫規則
13、多語言問題
多語言文案的解決方案
多語言的存儲
實時翻譯引擎
14、多時區問題
解決方案:
使用UTC時間
使用本地時間
使用同一時區
15、全球數據同步與數據路由
數據複製
各國對數據的保護政策
16、通用版與定製版的選擇

17、全球化部署中遇到的坑
髒數據、路由規則不一致、路由規則延遲生效、服務接口改造遺漏、應用層繞過路由規則直接寫數據庫、MySQL同步數據錯誤、數據同步故障、中心-單元網絡故障
18、總結

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章