《申通的雲原生實踐之路:如何實現應用基於容器的微服務改造?》

簡介:   作爲發展最爲迅猛的物流企業之一,申通快遞一直積極探索技術創新賦能商業增長之路,以期達到降本提效目的。目前,申通快遞日訂單處理量已達千萬量級,億級別物流軌跡處理量,每天產生數據已達到 TB 級別,使用 1300+ 個計算節點來實時處理業務。

頭圖.png

隨着雲計算的普及與雲原生的廣泛應用,越來越多的從業者、決策者清晰地認識到「雲原生化將成爲 企業技術創新的關鍵要素,也是完成企業數字化轉型的最短路徑」

因此,具有前瞻思維的互聯網企業從應用誕生之初就紮根於雲端,謹慎穩重的新零售、政府、金融、醫療等領域的企業與機構也逐漸將業務應用遷移上雲,深度使用雲原生技術與雲原生架構。面對架構設計、開發方式到部署運維等不同業務場景,基於雲原生架構的應用通常針對雲的技術特性進行技術生命週期設計,最大限度利用雲平臺的彈性、分佈式、自助、按需等產品優勢。

作爲發展最爲迅猛的物流企業之一,申通快遞一直積極探索技術創新賦能商業增長之路,以期達到降本提效目的。目前,申通快遞日訂單處理量已達千萬量級,億級別物流軌跡處理量,每天產生數據已達到 TB 級別,使用 1300+ 個計算節點來實時處理業務。

當業務飛速發展遭遇運維瓶頸

過往申通快遞的核心業務應用運行在 IDC 機房,原有 IDC 系統幫助申通安穩度過早期業務快速發展期。但伴隨着業務體量指數級增長,業務形式愈發多元化。原有系統暴露出不少問題,傳統 IOE 架構、各系統架構的不規範、 穩定性、研發效率都限制了業務高速發展的可能。軟件交付週期過長,大促保障對資源的特殊要求難實現、系統穩定性難以保障等業務問題逐漸暴露。

在與阿里雲進行多次需求溝通與技術驗證後,申通最終確定阿里云爲唯一合作伙伴,採用雲原生技術和架構實現核心業務搬遷上阿里雲。2019 年開始將業務逐步從 IDC 遷移至阿里雲。目前,核心業務系統已經在阿里雲上完成流量承接,爲申通提供穩定而高效的計算能力。

全面改造雲原生升級,助力業務發展

申通核心業務系統原架構基於 Vmware+Oracle 數據庫進行搭建。隨着搬遷上阿里雲,架構全面轉型爲基於 Kubernetes 的雲原生架構體系。其中,引入雲原生數據庫並完成應用基於容器的微服務改造是整個應用服務架構重構的關鍵點。

  • 引入雲原生數據庫

通過引入 OLTP 跟 OLAP 型數據庫,將在線數據與離線分析邏輯拆分到兩種數據庫中,改變此前完全依賴 Oracle 數據庫的現狀。滿足在處理歷史數據查詢場景下 Oracle 數據庫所無法支持的實際業務需求。

  • 應用容器化

伴隨着容器化技術的引進,通過應用容器化有效解決了環境不一致的問題,確保應用在開發、測試、生產環 境的一致性。與虛擬機相比,容器化提供了效率與速度的雙重提升,讓應用更適合微服務場景,有效提升產研效率。

  • 微服務改造

由於過往很多業務是基於 Oracle 的存儲過程及觸發器完成的,系統間的服務依賴也需要 Oracle 數據庫 OGG 同步完成。這樣帶來的問題就是系統維護難度高且穩定性差。通過引入 Kubernetes 的服務發現,組建微服務解決方案,將業務按業務域進行拆分,讓整個系統更易於維護。

綜合考慮申通實際業務需求與技術特徵,最終選擇了「阿里雲 ACK+ 神龍 + 雲數據庫」的雲原生解決方案,從而實現核心應用遷移上阿里雲。

1.png

1. 架構闡述

基礎設施,全部計算資源取自阿里雲的神龍裸金屬服務器。相較於一般雲服務器(ECS),Kubernetes 搭配神龍服務器能夠獲得更優性能及更合理的資源利用率且雲上資源按需取量,對於擁有大促活動等短期大流量業務場景的申通而言極爲重要。相較於線下自建機房、常備機器,雲上資源隨取隨用。在大促活動結束後,雲上資源使用完畢後即可釋放,管理與採購成本更低,相應效率。

流量接入,阿里雲提供兩套流量接入,一套是面向公網請求,另外一套是服務內部調用。域名解析採用雲 DNS 及 PrivateZone。藉助 Kubernetes 的 Ingress 能力實現統一的域名轉發,以節省公網 SLB 的數量,提高運維管理效率。

2. 平臺層

基於 Kubernetes 打造的雲原生 PaaS 平臺優勢明顯突出。

打通 DevOps 閉環,統一測試,集成,預發、生產環境; 天生資源隔離,機器資源利用率高; 流量接入可實現精細化管理; 集成了日誌、鏈路診斷、Metrics 平臺;

統一 ApiServer 接口和擴展,天生支持多雲跟混合雲部署。

3. 應用服務層

每個應用都在 Kubernetes 上面創建單獨的一個 Namespace,應用跟應用之間實現資源隔離。通過定義各個 應用的配置 Yaml 模板,當應用在部署時直接編輯其中的鏡像版本即可快速完成版本升級,當需要回滾時直接在本地啓動歷史版本的鏡像快速回滾。

4. 運維管理

線上 Kubernetes 集羣採用阿里雲託管版容器服務,免去了運維 Master 節點的工作,只需要制定 Worker 節點上線及下線流程即可。同時業務系統均通過阿里雲的 PaaS 平臺完成業務日誌搜索,按照業務需求投交擴容任務,系統自動完成擴容操作,降低了直接操作 Kubernetes 集羣帶來的業務風險。

全面釋放雲原生技術紅利

成本方面:使用公有云作爲計算平臺,可以讓企業不必因爲業務突發增長需求,而一次性投入大量資金成本用於採購服務器及擴充機櫃。在公共雲上可以做到隨用隨付,對於一些創新業務想做技術調研十分便捷。用完即釋放, 按量付費。另外雲產品都免運維自行託管在雲端,有效節省人工運維成本,讓企業更專注於核心業務。

穩定性方面:首先,雲上產品提供至少 5 個 9 以上的 SLA 服務確保系統穩定,而自建系統穩定性相去甚遠。其次,部分開源軟件可能存在功能 bug,造成故障隱患。最後,在數據安全方面雲上數據可以輕鬆實現異地備份,阿里雲數據存儲體系下的歸檔存儲產品具備高可靠、低成本、安全性、存儲無限等特點,讓企業數據更安全。

效率方面:藉助與雲產品深度集成,研發人員可以完成一站式研發、運維工作。從業務需求立項到拉取分支開發, 再到測試環境功能迴歸驗證,最終部署到預發驗證及上線,整個持續集成流程耗時可縮短至分鐘級。排查問題方面,研發人員直接選擇所負責的應用,並通過集成的 SLS 日誌控制檯快速檢索程序的異常日誌進行問題定位,免去了登錄機器查日誌的麻煩。

賦能業務:阿里雲提供超過 300 餘種的雲上組件,組件涵蓋計算、AI、大數據、IOT 等等諸多領域。研發人員開箱即用,有效節省業務創新帶來的技術成本。

想要了解更多阿里云云原生技術細節,以及更多企業實踐案例?那麼就快下載《雲原生架構白皮書》吧!點擊鏈接即可下載:https://developer.aliyun.com/topic/cn-architecture-paper

阿里巴巴雲原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的公衆號。”

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