首屆 DIVE 精彩回顧丨踐行企業數字化,基礎軟體如何創新

語言: CN / TW / HK

“牆高基下,雖得必失。”在構建數字企業大廈的工程中,基礎軟體的重要性不言而喻。但對於各行各業而言,面向傳統經營模式設計的基礎軟體已經難以支撐數字業務的創新,唯有汲取專業團隊的經驗,縮短基礎軟體升級探索的時間,方能排除後顧之憂投入業務和管理的數字化,全心應對全球大環境的風險及行業的不確定性。

2022年04月15日-16日,以 “深入基礎軟體,打造新型數字底座”為主題的首屆DIVE全球基礎軟體創新大會在線上舉辦,本次大會由InfoQ主辦,旨在打造基礎軟體領域內容最豐富、最前沿、最具技術性的行業大會,成為基礎軟體領域的風向標。網易數帆的兩位資深架構師,翁揚慧和向東受邀參加本次大會,分別做了題為《網易數帆在混合微服務架構下的統一治理實踐》和《面向未來的分散式儲存設計》的演講,分享了網易數帆在支撐網易業務和服務行業客戶過程中沉澱下來的數字化基礎軟體創新經驗。

統一服務治理破解技術碎片化難題

翁揚慧介紹了混合微服務技術架構的存在背景以及當前面臨的問題,統一治理需要解決的核心問題和難點, 提出了遺留歷史業務如何優雅從框架升級至服務網格的思路,分享了網易數帆如何通過產品設計讓微服務統一治理更加優雅。

圖片

微服務從最早被作為一種架構設計模式提出以來,至今已經有10多年的時間,微服務技術被廣泛應用在企業的業務架構設計中。從開發框架的技術選型上來看,Dubbo和Spring Cloud是目前主流的兩大Java語言微服務開發框架選型,但仍有一些企業是基於私有的內部框架,甚至有的還沒有完全微服務化。

因為技術的更新迭代,以及業務快速發展,需要引入新的技術來應對複雜的業務場景,導致業務技術架構在演進過程中面臨技術的“碎片化”問題,體現在多個方面:

1. 微服務框架難以統一治理,Java在企業級應用開發中依然佔據最大份額,無論是使用Spring Cloud還是Dubbo、gRPC等,甚至是私有的開發框架,都存在服務治理的需求,不同的微服務框架之間如何實現相互發現,如何進行統一治理是很多企業團隊面臨的痛點問題。

2. 異構語言難以統一治理,針對不同業務場景,使用不同的開發語言往往更加能發揮語言特性優勢,例如使用C++開發高效能、低延遲的業務,使用Python開發人工智慧、資料分析類應用,這些異構語言應用也需要進行統一的治理,例如提供流量管理、安全控制等能力;

3. 中介軟體難以統一治理,不同的微服務技術選擇存在不同型別的註冊中心,同時還存在例如配置中心、認證中心,還有多種通用的資料和訊息類中介軟體例如MySQL、Redis、ES、Kafka等,如何進行有效的統一管理,實現雲化的高效、智慧運維也是業務團隊的訴求之一;

4. 執行環境難以統一治理,隨著雲原生技術的發展,從物理機到虛擬機器,再到容器化的應用執行環境變遷正在成為一種標準演進路線,企業的業務部署也從私有云、公有云,到混合雲的模式發展,來解決資源彈性伸縮、業務容災保障方面要求,不同的基礎環境,也需要在業務層進行有效的遮蔽差異,統一治理。

除此之外,還有一些通用的基礎技術元件、業務部署架構方面需要有更加統一、標準化的設計訴求,體現在不同技術架構中的不同維度、各個層面。而業務研發團隊往往因為要支撐業務發展投入精力在業務開發中,因而存在技術演進過程中帶來的各種技術債務,也是當前企業在數字化轉型升級過程中面臨的痛點。

圖片

網易數帆輕舟微服務團隊,在多年的內外部客戶支撐過程中,尤其在微服務和雲原生技術領域,積累了大量的經驗和最佳實踐,並且沉澱了一套面向企業級的微服務統一治理平臺。通過業界領先的無侵入式微服務治理技術、雙引擎多模式統一治理、中介軟體PaaS化管理等來解決企業在架構升級過程中面臨的技術難題,通過提供一站式的微服務平臺控制檯,助力企業使用者以最小的改造、使用成本快速實現業務的統一治理,從而讓業務團隊更加關注於專業領域的業務開發,提升企業整體的研發效率,實現成本優化。

此外,翁揚慧還在本次分享中指出,輕舟微服務團隊近年來,在金融行業做了不少的優秀案例,並且總結沉澱了金融行業經驗。通過提供全站式的分散式技術能力底座,以及兩地三中心、異地多活等業務架構支撐能力,來幫助傳統金融企業實現核心業務的分散式技術改造升級,從而實現去IOE,最終達到全棧技術國產化、自主可控的終極建設目標。

面向未來的分散式儲存設計

向東結合網易數帆開源雲原生軟體定義儲存軟體Curve的研發背景、應用場景介紹了分散式儲存架構的最新發展, 如何通過合理的設計達成設計目標,儲存優化的細節,以及Curve的發展方向和演進等。Curve是一個分散式的儲存系統,它包含兩部分 CurveBS分散式塊儲存系統和CurveFS分散式檔案儲存系統,目前CurveBS已經在公司內部廣泛應用,CurveFS在開發演進當中。

圖片

在儲存和計算分離的趨勢不斷髮展過程中,越來越多的雲上應用依賴儲存與計算分離的架構。存算分離能夠深度優化資源實現計算和儲存資源的彈性擴充套件,按需分配。Curve就是為了滿足存算分離的需求而誕生的雲原生儲存系統,具備高效能、易運維、雲原生特點。

網易數帆選擇自研Curve儲存系統主要有三個原因:1. 缺乏程式碼量少自主可控的統一分散式儲存系統,Ceph程式碼量達到100W+,要完全熟悉和掌握非常困難;2. 現有開源儲存系統出現故障時,對上層應用影響大,運維難度高,Ceph採用強一致性協議,會導致系統出現故障時I/O頻繁抖動;3. 現有開源儲存系統無法提供更高的效能,在通用硬體下滿足核心應用場景的需求。

易運維主要的核心挑戰是如何有效提升系統的可用性以及可靠性,當系統發生故障的時候,既能保證資料的一致性同時也把故障的影響降低到最小。為了達成CurveBS的易運維目標,網易數帆採用了RAFT 協議。使用RAFT協議不僅能保持資料的一致性,同時也能降低寫I/O的響應延遲,它只需要大多數副本複製請求成功返回就可以表示資料寫入成功。

為了提升資料的可靠性,網易數帆在拓撲結構上採用了故障域的概念,同時在資料分佈方面使用了copyset演算法,來保證當故障發生時,資料丟失的概率最低。當儲存系統線上升級時採用了特殊的客戶端設計來保證儲存系統的線上升級。

圖片

要達成CurveBS 的高效能目標,三大板斧主要是降低底層I/O 的寫放大、提升I/O 資料的吞吐率、降低I/O的延遲。網易數帆採用了ChunkFilePool預先建立檔案池的方式降低I/O的寫放大,並使用DataStrip資料條帶類似Raid的方式來提升資料的吞吐率,使用zerocopy來降低I/O資料拷貝引起的開銷。

相比於CurveBS 來說,CurveFS需要面臨更復雜的負載以及更多樣化的應用場景,例如:兼顧效能與容量的機器學習場景、快速跨雲彈性發布的業務場景、低成本大容量需求的業務、中介軟體冷熱資料自動分離、S3和POSIX統一訪問需求。

網易數帆的方案是首先在元資料層面保證檔案元資料的效能與空間線性可擴充套件、使用RAFT協議保障在系統故障時的資料一致性和可用性、使用多層cache來提升資料和元資料服務的效能。 目前CurveFS已經支援了底層的S3物件儲存,並能對外提供POSIX相容的檔案服務,網易數帆儲存團隊還在優化CurveFS的效能,正在開發支援接入CurveBS塊儲存。