菜鸟,下一代分布式体系架构的设计理念
二十年來,整個分布式系統架構的演進,從 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 點:
Reactive:淘寶應用架構實踐
Reactive 是引導淘寶未來 10 年發展的技術架構,它的特點是響應式的編程方式,另一個特點是事件驅動的架構。同時也能看到 EDA 的回歸,基于事件響應模式和異步處理。通過事件框架實現應用依賴間解耦。
流式編程處理也是架構的未來方向,符合 Reactive-Stream 規范的流式調用,傳統串行應用調用和開發模式的升級。
微服務升級:菜鳥應用實踐
對于菜鳥來說,首先要做的事情的是解耦,將開發和資源的分離。關于 Application Container 的定義,它不是簡單的使用 Spring Cloud 或者 Spring Boot。例如定義模塊,模塊是可以獨立地進行服務,也可以組合。在分布式框架中間,當遠程調用服務的時候,是可以判斷遠程應用是不是在本地環境內,如果是,就可以不用經過網絡,只經過網絡端口;只經過數據層,但不經過物理層;實際上是不占用整個帶寬的。另外,如果能識別出這兩個應用都在一個環境內,就可以本地方法調用。網絡狀態下可以清清楚楚將模塊組成架構,耦合關系不緊密,而且是分層的,第一個域是 Business domain,此業務域里各應用之間是分布式的網狀關系。
異地多活:菜鳥基礎架構實踐
去年菜鳥做的異地多活完全改變了主從模式,主從模式是 masters load 是活的,slave load 是備份的。而異地多活則是對等節點,用到了數據庫層面的 X-Cluster 同步,正所謂三地五副本,有些內容是強一致性寫到其他幾個副本里。此外還有異地異步備份副本。通過消息路由跨域傳輸實現多機房異地多活,可以在任意時間秒級切換系統。
云 + 端:菜鳥網格計算方向
黃浩老師最后指出,IoT 很火,但真正意義的 IoT,是每個物體都像一臺電腦,每臺電腦的關系是,能相互之間可控組網,二是逐級聯系。菜鳥物流分為線上和線下兩部分,線上應用和線下行為的不一致,線下端的數據不可能全部放到云端。** 菜鳥現在在做邊緣計算節點利用網格計算的思路,成為計算容器,既能承擔局域網的路由和網關,同時成為萬物計算節點,它和中心節點的差異只是計算能力的差異,而不是它自身的環境、架構、結構上的差異,這就是菜鳥網格計算正在推進的方向。
總結
以上是生活随笔為你收集整理的菜鸟,下一代分布式体系架构的设计理念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java InputStream的使用
- 下一篇: spark mllib和ml类里面的区别