《大型網站技術架構演進與性能優(yōu)化》之全球部署方案[四]
時間:2023-04-18 23:34:01 | 來源:網站運營
時間:2023-04-18 23:34:01 來源:網站運營
《大型網站技術架構演進與性能優(yōu)化》之全球部署方案[四]:蘇黎世聯邦理工大學一周講完的python,整整300集,愛因斯坦的母校 2022最新版,學完即可就業(yè)!進來白嫖,學不會我退出IT界~_嗶哩嗶哩_bilibili
全球化部署需要解決以下幾個問題:第一,業(yè)務核心單元的梳理。這些核心單元必須可以裁剪或添加。
第二,核心單元必須可以快速部署到國防的機房,最好能夠一鍵部署,即首先要實現單元化部署。
第三,實現全球數據連通。
第四,處于研發(fā)效率的考慮,部署在全球的業(yè)務系統(tǒng)要有良好的定制型和擴展性。
1.國際化的背景
國際化一般有兩種類型:一種是進口業(yè)務,像天貓國際和全球購;
一種是出口業(yè)務,像速賣通和海外。
系統(tǒng)建設存在的兩種思路:a、將國內的系統(tǒng)完整的復制過去在本地重新搭建一套,實現本地化運營,兩邊的系統(tǒng)相互獨立,數據不通。
b、只在本地建設個性化的系統(tǒng),當地的系統(tǒng)和國內數據是打通的,整體還是一套系統(tǒng)。
2.面臨的技術挑戰(zhàn)
業(yè)務挑戰(zhàn):一是它必須采用就近訪問原則,必須要保證用戶體驗;二是它不能跨區(qū)域進行大流量的并發(fā)讀寫,因為延時比較大,對系統(tǒng)的吞吐量會有致命的影響。
達到目標:a.單元化
b.一套代碼、全球部署
c.服務本地、數據共享
d.區(qū)域容災、全球多活
滿足條件:a.要能共享和快速復制全球化基礎設施
b.基礎業(yè)務數據要能互通
c.業(yè)務系統(tǒng)要做抽象、提升可擴展性,能快速支撐業(yè)務發(fā)展。
3.單元化
何為單元化所謂單元化就是按照某種維度對數據進行水平拆分,拆分后數據分布在不同地域并且對數據的更新是單寫的。
單元化解決什么問題解決物理資源限制的問題
解決高可用的問題
解決國際化、全球化業(yè)務問題。
單元化數據分片方案a.中心-多單元模式
考慮到多單元建設的成本問題,不可能也沒必要把所有系統(tǒng)都單元化,只需要把最小的核心系統(tǒng)單元化就能達到目的,即大部分業(yè)務系統(tǒng)都放在中心單元,再對中心單元的系統(tǒng)做冷備。
b.多機房 A-A模式
讓同一業(yè)務系統(tǒng)在多機房同時提供服務。
要做到這一點,必須做這兩件事:
第一,按照某個維度對數據進行劃分:比如是司機還是乘客;
第二,解決數據層的異地復制和一致性問題:數據庫雙向復制和一致性校驗。
c.數據按照什么維度劃分
典型的電商數據一般分為買家數據、賣家數據。
遵守的規(guī)則:
就近訪問、Hash取模、對用戶建路由表
數據漫游問題
4.數據路由方案
主鍵ID做上標識
設置路由表
trace透傳
路由模式:中心模式,所有接口都回中心單元。
單元模式,按照單元化原則進行路由的接口,都需要被路由到正確的單元完成。
混合模式,表示路由原則可以是本單元優(yōu)先,如果本單元不存在回中心單元調用。
5.接入層路由
基于多域名跳轉
基于CDN代理
6.服務層路由
需要解決三個問題:哪些服務需要路由;單元內服務如何路由;單元之間的服務如何路由。
7.數據層路由
包括三個部分:對數據寫入DB做最后一層的正確性校驗;做DB之間的數據復制;不同機房之間Cache中的數據的一致性問題。
8.Sequence ID的沖突問題
以下幾種解決思路:基于一個全局統(tǒng)一的Sequence生成器。
提前預設分段,比如A庫用奇數,B庫有偶數。
設置起始值加步長的方式,并且基于數據庫表做更新。
9.異地多活
當某個單元機器發(fā)生故障時,需要把這個單元的用戶數據切換到中心或者其他單元,切換過程中,最重要的是保證數據的正確性。因此,必須按照一定的步驟來實現:
禁寫要切換的用戶請求。
送消息的路由規(guī)則。
推送默認的路由規(guī)則。
關閉之前設定的用戶禁寫規(guī)則
10.多語言問題
多語言文案的解決方案
多語言的存儲
實時翻譯引擎
11.多時區(qū)問題
解決方案:使用UTC時間
使用本地時間
使用同一時區(qū)
12.全球數據同步與數據路由
數據復制
各國對數據的保護政策
13.全球化部署中遇到的坑
臟數據、路由規(guī)則不一致、路由規(guī)則延遲生效、服務接口改造遺漏、應用層繞過路由規(guī)則直接寫數據庫、MySQL同步數據錯誤、數據同步故障、中心-單元網絡故障