“墻高基下,雖得必失。”在構(gòu)建數(shù)字企業(yè)大廈的工程中,基礎(chǔ)軟件的重要性不言而喻。但對于各行各業(yè)而言,面向傳統(tǒng)經(jīng)營模式設(shè)計的基礎(chǔ)軟件已經(jīng)難以支撐數(shù)字業(yè)務(wù)的創(chuàng)新,唯有汲取專業(yè)團隊的經(jīng)驗,縮短基礎(chǔ)軟件升級探索的時間,方能排除后顧之憂投入業(yè)務(wù)和管理的數(shù)字化,全心應(yīng)對全球大環(huán)境的風(fēng)險及行業(yè)的不確定性。
2022年04月15日-16日,以“深入基礎(chǔ)軟件,打造新型數(shù)字底座”為主題的首屆DIVE全球基礎(chǔ)軟件創(chuàng)新大會在線上舉辦,本次大會由InfoQ主辦,旨在打造基礎(chǔ)軟件領(lǐng)域內(nèi)容最豐富、最前沿、最具技術(shù)性的行業(yè)大會,成為基礎(chǔ)軟件領(lǐng)域的風(fēng)向標。網(wǎng)易數(shù)帆的兩位資深架構(gòu)師,翁揚慧和向東受邀參加本次大會,分別做了題為《網(wǎng)易數(shù)帆在混合微服務(wù)架構(gòu)下的統(tǒng)一治理實踐》和《面向未來的分布式存儲設(shè)計》的演講,分享了網(wǎng)易數(shù)帆在支撐網(wǎng)易業(yè)務(wù)和服務(wù)行業(yè)客戶過程中沉淀下來的數(shù)字化基礎(chǔ)軟件創(chuàng)新經(jīng)驗。
統(tǒng)一服務(wù)治理破解技術(shù)碎片化難題
翁揚慧介紹了混合微服務(wù)技術(shù)架構(gòu)的存在背景以及當前面臨的問題,統(tǒng)一治理需要解決的核心問題和難點,提出了遺留歷史業(yè)務(wù)如何優(yōu)雅從框架升級至服務(wù)網(wǎng)格的思路,分享了網(wǎng)易數(shù)帆如何通過產(chǎn)品設(shè)計讓微服務(wù)統(tǒng)一治理更加優(yōu)雅。

微服務(wù)從最早被作為一種架構(gòu)設(shè)計模式提出以來,至今已經(jīng)有10多年的時間,微服務(wù)技術(shù)被廣泛應(yīng)用在企業(yè)的業(yè)務(wù)架構(gòu)設(shè)計中。從開發(fā)框架的技術(shù)選型上來看,Dubbo和Spring Cloud是目前主流的兩大Java語言微服務(wù)開發(fā)框架選型,但仍有一些企業(yè)是基于私有的內(nèi)部框架,甚至有的還沒有完全微服務(wù)化。
因為技術(shù)的更新迭代,以及業(yè)務(wù)快速發(fā)展,需要引入新的技術(shù)來應(yīng)對復(fù)雜的業(yè)務(wù)場景,導(dǎo)致業(yè)務(wù)技術(shù)架構(gòu)在演進過程中面臨技術(shù)的“碎片化”問題,體現(xiàn)在多個方面:
1. 微服務(wù)框架難以統(tǒng)一治理,Java在企業(yè)級應(yīng)用開發(fā)中依然占據(jù)最大份額,無論是使用Spring Cloud還是Dubbo、gRPC等,甚至是私有的開發(fā)框架,都存在服務(wù)治理的需求,不同的微服務(wù)框架之間如何實現(xiàn)相互發(fā)現(xiàn),如何進行統(tǒng)一治理是很多企業(yè)團隊面臨的痛點問題。
2. 異構(gòu)語言難以統(tǒng)一治理,針對不同業(yè)務(wù)場景,使用不同的開發(fā)語言往往更加能發(fā)揮語言特性優(yōu)勢,例如使用C++開發(fā)高性能、低延遲的業(yè)務(wù),使用Python開發(fā)人工智能、數(shù)據(jù)分析類應(yīng)用,這些異構(gòu)語言應(yīng)用也需要進行統(tǒng)一的治理,例如提供流量管理、安全控制等能力;
3. 中間件難以統(tǒng)一治理,不同的微服務(wù)技術(shù)選擇存在不同類型的注冊中心,同時還存在例如配置中心、認證中心,還有多種通用的數(shù)據(jù)和消息類中間件例如MySQL、Redis、ES、Kafka等,如何進行有效的統(tǒng)一管理,實現(xiàn)云化的高效、智能運維也是業(yè)務(wù)團隊的訴求之一;
4. 運行環(huán)境難以統(tǒng)一治理,隨著云原生技術(shù)的發(fā)展,從物理機到虛擬機,再到容器化的應(yīng)用運行環(huán)境變遷正在成為一種標準演進路線,企業(yè)的業(yè)務(wù)部署也從私有云、公有云,到混合云的模式發(fā)展,來解決資源彈性伸縮、業(yè)務(wù)容災(zāi)保障方面要求,不同的基礎(chǔ)環(huán)境,也需要在業(yè)務(wù)層進行有效的屏蔽差異,統(tǒng)一治理。
除此之外,還有一些通用的基礎(chǔ)技術(shù)組件、業(yè)務(wù)部署架構(gòu)方面需要有更加統(tǒng)一、標準化的設(shè)計訴求,體現(xiàn)在不同技術(shù)架構(gòu)中的不同維度、各個層面。而業(yè)務(wù)研發(fā)團隊往往因為要支撐業(yè)務(wù)發(fā)展投入精力在業(yè)務(wù)開發(fā)中,因而存在技術(shù)演進過程中帶來的各種技術(shù)債務(wù),也是當前企業(yè)在數(shù)字化轉(zhuǎn)型升級過程中面臨的痛點。

網(wǎng)易數(shù)帆輕舟微服務(wù)團隊,在多年的內(nèi)外部客戶支撐過程中,尤其在微服務(wù)和云原生技術(shù)領(lǐng)域,積累了大量的經(jīng)驗和最佳實踐,并且沉淀了一套面向企業(yè)級的微服務(wù)統(tǒng)一治理平臺。通過業(yè)界領(lǐng)先的無侵入式微服務(wù)治理技術(shù)、雙引擎多模式統(tǒng)一治理、中間件PaaS化管理等來解決企業(yè)在架構(gòu)升級過程中面臨的技術(shù)難題,通過提供一站式的微服務(wù)平臺控制臺,助力企業(yè)用戶以最小的改造、使用成本快速實現(xiàn)業(yè)務(wù)的統(tǒng)一治理,從而讓業(yè)務(wù)團隊更加關(guān)注于專業(yè)領(lǐng)域的業(yè)務(wù)開發(fā),提升企業(yè)整體的研發(fā)效率,實現(xiàn)成本優(yōu)化。
此外,翁揚慧還在本次分享中指出,輕舟微服務(wù)團隊近年來,在金融行業(yè)做了不少的優(yōu)秀案例,并且總結(jié)沉淀了金融行業(yè)經(jīng)驗。通過提供全站式的分布式技術(shù)能力底座,以及兩地三中心、異地多活等業(yè)務(wù)架構(gòu)支撐能力,來幫助傳統(tǒng)金融企業(yè)實現(xiàn)核心業(yè)務(wù)的分布式技術(shù)改造升級,從而實現(xiàn)去IOE,最終達到全棧技術(shù)國產(chǎn)化、自主可控的終極建設(shè)目標。
面向未來的分布式存儲設(shè)計
向東結(jié)合網(wǎng)易數(shù)帆開源云原生軟件定義存儲軟件Curve的研發(fā)背景、應(yīng)用場景介紹了分布式存儲架構(gòu)的最新發(fā)展,如何通過合理的設(shè)計達成設(shè)計目標,存儲優(yōu)化的細節(jié),以及Curve的發(fā)展方向和演進等。Curve是一個分布式的存儲系統(tǒng),它包含兩部分 CurveBS分布式塊存儲系統(tǒng)和CurveFS分布式文件存儲系統(tǒng),目前CurveBS已經(jīng)在公司內(nèi)部廣泛應(yīng)用,CurveFS在開發(fā)演進當中。

在存儲和計算分離的趨勢不斷發(fā)展過程中,越來越多的云上應(yīng)用依賴存儲與計算分離的架構(gòu)。存算分離能夠深度優(yōu)化資源實現(xiàn)計算和存儲資源的彈性擴展,按需分配。Curve就是為了滿足存算分離的需求而誕生的云原生存儲系統(tǒng),具備高性能、易運維、云原生特點。
網(wǎng)易數(shù)帆選擇自研Curve存儲系統(tǒng)主要有三個原因:
1. 缺乏代碼量少自主可控的統(tǒng)一分布式存儲系統(tǒng),Ceph代碼量達到100W+,要完全熟悉和掌握非常困難;
2. 現(xiàn)有開源存儲系統(tǒng)出現(xiàn)故障時,對上層應(yīng)用影響大,運維難度高,Ceph采用強一致性協(xié)議,會導(dǎo)致系統(tǒng)出現(xiàn)故障時I/O頻繁抖動;
3. 現(xiàn)有開源存儲系統(tǒng)無法提供更高的性能,在通用硬件下滿足核心應(yīng)用場景的需求。
易運維主要的核心挑戰(zhàn)是如何有效提升系統(tǒng)的可用性以及可靠性,當系統(tǒng)發(fā)生故障的時候,既能保證數(shù)據(jù)的一致性同時也把故障的影響降低到最小。為了達成CurveBS的易運維目標,網(wǎng)易數(shù)帆采用了RAFT 協(xié)議。使用RAFT協(xié)議不僅能保持數(shù)據(jù)的一致性,同時也能降低寫I/O的響應(yīng)延遲,它只需要大多數(shù)副本復(fù)制請求成功返回就可以表示數(shù)據(jù)寫入成功。
為了提升數(shù)據(jù)的可靠性,網(wǎng)易數(shù)帆在拓撲結(jié)構(gòu)上采用了故障域的概念,同時在數(shù)據(jù)分布方面使用了copyset算法,來保證當故障發(fā)生時,數(shù)據(jù)丟失的概率最低。當存儲系統(tǒng)在線升級時采用了特殊的客戶端設(shè)計來保證存儲系統(tǒng)的在線升級。

要達成CurveBS 的高性能目標,三大板斧主要是降低底層I/O 的寫放大、提升I/O 數(shù)據(jù)的吞吐率、降低I/O的延遲。網(wǎng)易數(shù)帆采用了ChunkFilePool預(yù)先創(chuàng)建文件池的方式降低I/O的寫放大,并使用DataStrip數(shù)據(jù)條帶類似Raid的方式來提升數(shù)據(jù)的吞吐率,使用zerocopy來降低I/O數(shù)據(jù)拷貝引起的開銷。
相比于CurveBS 來說,CurveFS需要面臨更復(fù)雜的負載以及更多樣化的應(yīng)用場景,例如:兼顧性能與容量的機器學(xué)習(xí)場景、快速跨云彈性發(fā)布的業(yè)務(wù)場景、低成本大容量需求的業(yè)務(wù)、中間件冷熱數(shù)據(jù)自動分離、S3和POSIX統(tǒng)一訪問需求。
網(wǎng)易數(shù)帆的方案是首先在元數(shù)據(jù)層面保證文件元數(shù)據(jù)的性能與空間線性可擴展、使用RAFT協(xié)議保障在系統(tǒng)故障時的數(shù)據(jù)一致性和可用性、使用多層cache來提升數(shù)據(jù)和元數(shù)據(jù)服務(wù)的性能。目前CurveFS已經(jīng)支持了底層的S3對象存儲,并能對外提供POSIX兼容的文件服務(wù),網(wǎng)易數(shù)帆存儲團隊還在優(yōu)化CurveFS的性能,正在開發(fā)支持接入CurveBS塊存儲。






