菜鳥,下一代分佈式體系架構的設計理念

二十年來,整個分佈式系統架構的演進,從 C/S 到 B/S,再到分佈式系統,當前廣泛使用的是網格計算和雲計算,包括目標、定位、場景。

菜鳥乃至阿里在全球化進程中,也面臨着全球分佈式架構問題,以及倉儲系統中獨特場景下雲計算能力的不足。菜鳥資深技術專家 黃浩 老師目前帶領團隊在設計規劃菜鳥下一代分佈式系統架構,結合傳統雲計算 PaaS/BaaS 以及邊緣計算能力,將其應用在全球多域體系中。

黃浩老師工作了 17 年,目前是 TOGAF 認證架構師,菜鳥程序員聯合會首任主席,現爲菜鳥倉儲技術部及自動化技術團隊負責人。2001 年起就在 Java 中間件、分佈式系統架構浸染多年,在企業架構、中間件、分佈式系統設計與雲計算架構有非常豐富的經驗。2016 年主導推進菜鳥混合雲架構,建立全球多域混合雲架構,成爲整個阿里巴巴雲化模式的樣板和方向。

當前分佈式技術架構舉例:微服務

常見微服務架構,其前端流量入口採用負載分片模式。應用層常見是採取一級網絡 (通過配置推送的軟負載) 或者二級網絡 (通過應用網關負載隔離) 模式。阿里是使用前者,百度、新浪使用後者,主要取決於微服務的展現形式 (RPC or Rest-API),差異是是否需要一個專職配置中心。爲保證請求無狀態地實現遷移,所以使用共享數據節點 (存儲各種形式的臨時或中間數據) 的形式實現。數據節點往往採用分片的主備模式。

當前分佈式應用架構舉例:應用分層架構

這是比較廣泛採用的架構模式,前面使用 CDN,後面有分佈式緩存,服務端使用前後端分離,或者 Node.js / Rest-ful。應用層通過 ElasticSearch 讓數據庫去刷索引,實現大量的查詢和讀服務。中間使用大量消息系統進行相互的聯繫。這種架構模式的優點是可以應用橫向擴張,都是獨立的應用,很容易 Docker 化。

阿里分佈式系統架構舉例:單元化、混合雲

阿里全國多站點的佈局帶來一個問題,例如廣州的站點出現問題,所有訪問廣州的客戶都會受到影響。這就需要多活的站點,多地可以自由無感切換。單元化架構使用到了配置數據同步,每個單元扮演對等節點,爲所有的節點提供服務,從業務服務角度,所有站點均對等隔離,按照流量分離的方式分別不同的用戶提供服務。開始的時候通過流量負載的方式,底層通關管理節點把配置數據之間、核心數據之間進行同步。從管理配置角度,中心站點擔任管理節點,負責管理單元節點及分發配置。

菜鳥混合雲架構:雙寫雙機房

在 2015 年的時候,推出了菜鳥混合雲架構,它和傳統混合雲有點不同。菜鳥混合雲分爲兩個部分,一是獨立的混合雲機房;二是雙寫雙機房,再加一套混合雲就是同城三機房。其策略是保證本身的集羣應用調用,在默認情況下是本機房調用。但是在資源緊張的情況下,要做彈性,擴容雲上機房,說明有些應用要訪問雲上機房,而底層進行配置的數據同步,以及數據庫之間強一致同步寫。整個菜鳥在阿里是第一個實現基於混合雲的同城三機房模式。

關於微服務的困局挑戰

阿里算是最早踐行微服務理念的公司,僅菜鳥就有超過 1000+ 的單體應用,並且還在逐年增多。黃浩老師說,阿里從微服務架構裏獲得了很多好處,也踩過很多不可避免的坑。微服務並非是一種架構或者架構理念(或者說它只是一個技術架構應用方法),它的初心是降低複雜度提高系統的柔性,而實際是,如果缺乏清晰的架構理念和設計 (包括業務架構與應用架構),它帶來的結果只會是沒有架構。

菜鳥在實踐微服務架構過程中也遇到過很多問題,例如資源綁定與限制,效率瓶頸,缺乏總體架構。實際業務場景的跨多個服務訴求;網狀的調用及同步依賴關係;容器化背後開發與資源的綁定;極大量的遠程調用;爆炸式增長的碎片化應用;

黃浩老師也說,跨服務之間的應用橫向調度,微服務廣泛應用,應用是網狀架構,密密麻麻的節點,很難分清楚。其中最大的性能問題就是遠程調用問題,

下一代架構的目標與挑戰

在反思之後,下一代架構的要解決什麼問題呢?黃浩老師說主要有 5 點:

  1. 應用的開發與部署環境和位置無關性 (Cloud Foundry)
  2. 更大範圍分佈式數據可信存儲及一致性保障 (Block Chain 最核心的技術加密,分佈式賬本,分佈式異地存儲,阿里目前也在實踐)
  3. 容器化技術,網格計算能力 (Edge/Grid Computing)
  4. 事件驅動架構的迴歸 (阿里在嘗試 Reactive Stream)
  5. 全球化網絡化對等架構模式

Reactive:淘寶應用架構實踐

Reactive 是引導淘寶未來 10 年發展的技術架構,它的特點是響應式的編程方式,另一個特點是事件驅動的架構。同時也能看到 EDA 的迴歸,基於事件響應模式和異步處理。通過事件框架實現應用依賴間解耦。

流式編程處理也是架構的未來方向,符合 Reactive-Stream 規範的流式調用,傳統串行應用調用和開發模式的升級。

微服務升級:菜鳥應用實踐

對於菜鳥來說,首先要做的事情的是解耦,將開發和資源的分離。關於 Application Container 的定義,它不是簡單的使用 Spring Cloud 或者 Spring Boot。例如定義模塊,模塊是可以獨立地進行服務,也可以組合。在分佈式框架中間,當遠程調用服務的時候,是可以判斷遠程應用是不是在本地環境內,如果是,就可以不用經過網絡,只經過網絡端口;只經過數據層,但不經過物理層;實際上是不佔用整個帶寬的。另外,如果能識別出這兩個應用都在一個環境內,就可以本地方法調用。網絡狀態下可以清清楚楚將模塊組成架構,耦合關係不緊密,而且是分層的,第一個域是 Business domain,此業務域裏各應用之間是分佈式的網狀關係。

異地多活:菜鳥基礎架構實踐

去年菜鳥做的異地多活完全改變了主從模式,主從模式是 masters load 是活的,slave load 是備份的。而異地多活則是對等節點,用到了數據庫層面的 X-Cluster 同步,正所謂三地五副本,有些內容是強一致性寫到其他幾個副本里。此外還有異地異步備份副本。通過消息路由跨域傳輸實現多機房異地多活,可以在任意時間秒級切換系統。

雲 + 端:菜鳥網格計算方向

黃浩老師最後指出,IoT 很火,但真正意義的 IoT,是每個物體都像一臺電腦,每臺電腦的關係是,能相互之間可控組網,二是逐級聯繫。菜鳥物流分爲線上和線下兩部分,線上應用和線下行爲的不一致,線下端的數據不可能全部放到雲端。**菜鳥現在在做邊緣計算節點利用網格計算的思路,成爲計算容器,既能承擔局域網的路由和網關,同時成爲萬物計算節點,它和中心節點的差異只是計算能力的差異,而不是它自身的環境、架構、結構上的差異,這就是菜鳥網格計算正在推進的方向。

12 月 7 日在北京國際會議中心舉辦的 ArchSummit 全球架構師技術峯會上,菜鳥網絡的技術專家們也會分享近來菜鳥在技術上的新研究成果,包括 CTO 谷雪梅老師也會來分享“菜鳥 IoT 戰略和智慧物流的實踐”內容。

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