隨著業務過去幾年的發展,我們公司每天都要服務海外近1000W名用戶的消費(具體行業不說太細瞭,一說就知道)。之前業務量較小的時候,為瞭成本因素考慮,我們采用全球單機房服務的方案來支撐業務。然而從公司23年的規劃情況來看,業務還有不小的增長預期。在這種情況下,單機房的風險就不可忽視瞭。因此,從技術團隊的視角上我們需要開始進行新機房的建設
海外新機房建設面臨幾個問題:1. 服務器成本可能直接需要翻倍,甚至不止,取決於我們在哪裡建設機房。像最近比較火的新加坡,這裡機房折算下來的單機成本會比在美國還要高大約50%以上,對於我們這種低毛利業務來說業務非常大;2. 合規問題,海外對於合規的要求非常重,在考慮數據完整性的同時必須要考慮到數據合規存儲;3. 運維團隊問題,涉及到時差、合規等各種因素,對於海外機房的運維團隊往往需要單獨建設
為解決上述的幾個問題,我們做瞭幾個關鍵決策
- 因為主機房出現不可用的風險很小,平時雲機房不需要承擔全部流量,否則日常的成本會非常高,業務成本壓力會很大,而收益僅在於非常偶發的主機房故障情況下的可用性
- 在主機房故障時,雲機房需要能夠承擔全流量。這就要求,首先平時雲機房需要做為活躍機房,有流量來保障可用性,其次故障時雲機房具備快速擴容的能力
- 基於成本的考慮,雲機房平時不保存全量數據,故障時可以僅提供有限的業務服務,確保最核心的服務能夠跑通即可
基於上面的幾個大決策,我們做瞭總體的技術方案設計。首先將我們的業務服務分成三個大塊:
- 服務管理。這塊的核心是把我們的在線服務管好,主要是管理上下遊服務關系的依賴性,期望通過這個服務管理體系能夠看清整個業務的拓撲。服務會在這裡被抽象為服務類型與服務實體
- 資源部署。通過抽象全球機房資源,將所有物理資源向上提供統一資源視圖,並且依據現實情況確定資源和服務實體之間的映射關系。比如對於有依賴性的服務,側部署同機房的資源,甚至同交換機的資源給到所對應的服務實例上
- 數據資源。數據資源是有狀態的,所有全球流量調度的問題都是在解決數據資源的部署和管理問題。因此我們設計一個專門的數據資源管理服務,將我們的數據劃分為全球數據、國傢數據、區域性數據等不同level,數據資源管理根據數據本身level來確定實際數據的分佈情況
這裡面每一塊的內容都還比較復雜,後面會慢慢將每一塊都細化出來。我們也是今年剛開始做這方面的研究,期望能與大傢多交流