開源助力雲計算十年:從基礎設施,到雲原生崛起

作者 | 王慶 責編 | 辛曉亮

出品 | 《新程序員》編輯部

從20世紀90年代互聯網興起開始,我們每個人就開始憧憬著計算資源有代價地進行共享。從HTTP到Web服務,再從網格計算到P2P計算,我們距離雲技術始終有一步之遙。直到虛擬化技術的興起,才正式迎來雲計算的爆發。

本文回顧了21世紀初虛擬化技術發展孕育出雲計算基礎設施及相應開源項目OpenStack。同時圍繞雲計算各條路線衍生以及後面萌發出來的雲原生技術進行思考和總結。最後,展望未來開源雲計算軟體趨勢和應用場景。

王慶,Intel雲基礎設施軟體研發總監, 2015年至今連續8年兼任開源基礎設施基金會個人獨立董事, Linux 基金會下SODA子基金會聯盟委員會主席, 另外還兼 任木蘭開源社區技術委員會成員和中國計算機學會開 源發展委員會常務委員。

虛擬化孕育出雲計算基礎設施

1959年,在國際信息處理大會上,一篇名為《大型高速計算機中的時間共享》的報告首先提出了「虛擬化」的概念,從此虛擬化發展拉開帷幕。隨後,IBM推出了分時共享系統,它允許多個用戶遠程共享同一台高性能計算設備的使用時間,這也被認為最原始的虛擬化技術。

1972年,IBM發布了用於創建靈活大型主機的虛擬機(Virtual Machine,縮寫為VM)技術,它可以根據用戶動態的應用需求來調整和支配資源,使昂貴的大型機資源得到儘可能的充分利用,虛擬化由此進入了大型機時代IBM System 370系列就通過一種叫虛擬機監控器(Virtual Machine Monitor,縮寫為VMM)的程序在物理硬體之上生成許多可以運行獨立操作系統軟體的虛擬機實例,從而使虛擬機開始流行起來。

1998年,VMWare的亮相,開啟了虛擬化的x86時代,虛擬化發展進入爆發期。2003年,開源虛擬化管理軟體Xen面世。2005年11月,Intel發布了新的Xeon MP處理器系統7000系列,x86平台歷史上第一個硬體輔助虛擬化技術—VT技術也隨之誕生。此後若干年,AMDOracleRedHatNovellCitrix、Cisco、HP等先後進軍虛擬化市場。

虛擬化技術是雲計算髮展的基石,正是由於虛擬化技術的成熟和普及,為後面雲計算的蓬勃發展創造了條件。2006年3月,Amazon推出彈性計算雲EC2,它根據用戶使用的資源進行收費,開啟了雲計算商業化的元年。此後,Google、IBM、Yahoo、Intel、HP等各大公司又蜂擁進入雲計算領域。2010年7月,美國國家航空航天局NASA與Rackspace、Intel、AMD、Dell等企業共同宣布OpenStack開放源碼計劃,由此開啟了開源基礎設施即服務(IaaS)的時代。

開源基礎設施先行者OpenStack

在開源基礎設施領域,OpenStack是毋庸置疑的領導者。作為一個IaaS範疇的雲平台,OpenStack一方面負責與運行在物理節點上的VMM進行交互,實現對各種硬體資源的管理與控制;另一方面為用戶提供滿足要求的虛擬機。

在OpenStack內部,主要涵蓋6個核心組件,分別是計算(Compute)、對象存儲(Object Storage)、認證(Identity)、塊存儲(Block Storage)、網路(Network)和鏡像服務(Image Service)。計算組件根據需求提供虛擬機服務,比如創建虛擬機或對虛擬機做熱遷移等;對象存儲組件允許存儲或檢索對象,也可以認為它允許存儲或檢索文件,它能以低成本的方式通過RESTful API管理大量無結構數據;認證組件為所有OpenStack服務提供身份驗證和授權,跟蹤用戶以及他們的許可權,提供一個可用服務以及API的列表;塊存儲組件,顧名思義,提供塊存儲服務;網路組件用於提供網路連接服務,允許用戶創建自己的虛擬網路並連接各種網路設備介面;鏡像服務組件主要提供一個虛擬機鏡像的存儲、查詢和檢索服務,通過提供一個虛擬磁碟映像的目錄和存儲庫,為虛擬機提供鏡像服務。

OpenStack有一個緊密團結了眾多使用者和開發者的OpenStack社區。這個社區共計包含來自195個國家和地區超過10萬個社區會員,有近700家企業會員。在這個世界裡,社區始終遵循開放源碼、開放設計、開放開發和開放社區這四個開放原則。開發人員可以討論什麼樣的設計是最優的,運維人員也可以提出使用OpenStack的反饋意見和需求建議。

在OpenStack社區里,開設各種渠道跟社區其他成員進行討論,例如郵件列表、IRC渠道或項目例會、定期舉辦的峰會和PTG(Project Teams Gathering),以及各種不定期在各地舉辦的Meetup等等。經過了十二年多的發展,OpenStack項目相對成立之初已經非常成熟了,現在社區更多是提升系統穩定性,增強現有功能以及迎合如數據處理器(DPU)、算力網路(CFN)等新場景新挑戰設計解決方案。

雲計算基礎設施之網路與存儲

基礎設施主要圍繞三塊共享資源展開,即計算、網路與存儲。網路與存儲作為基礎設施的三大重要組成部分之二,在雲計算興起之初,社區里就出現了軟體定義網路(SDN)和軟體定義存儲(SDS)的概念,並湧現了不少業界矚目的項目。

在網路技術里,SDN技術早已是業界公認的未來方向。但是怎樣統合各個廠商甚至學術界的標準,一直以來是個難題。在2013年,一大批傳統的IT設備廠商聯合幾家軟體公司,發起了OpenDaylight(ODL)項目。該項目發展至今,已經成為開源SDN方案中最有影響力的項目之一。ODL的每一個版本都是以化學元素周期表中某一元素來命名,充滿了學術氣息。

不僅如此,在技術上,ODL項目也有其獨到之處。首先,此項目是基於Java開發平台的,充分利用了Java平台上成熟的動態模塊技術(OSGI),以微服務架構為基礎,非常靈活高效地集成了各種插件來提供多家廠商設備的支持,以及各種高級網路服務。在北向API介面的設計上,ODL不僅提供了Restful的API,也提供了函數調用方式的OSGI介面,以應對不同方式的北向集成方案。在南向API介面的設計上,充分考慮了多協議支持和多廠商設備適配的便利。另外,OpenStack中Neutron模塊的集成,也一直是ODL項目的技術重點之一。

在存儲技術里,SDS存儲方案的制定,也是無法繞過的要點。Ceph項目是開源分散式存儲方案的最主流選擇,在和OpenStack配合部署的場景下更是如此。

Ceph誕生於學術項目,2014年在原作者依此創業的公司被RedHat收購之後,RedHat成為Ceph項目的最主要貢獻者和技術領導者。2015年後,Ceph正式開始社區化管理,社區委員會最初吸收了8家成員公司。直至2018年,Ceph成立基金會,吸收了Amihan、Canonical、中國移動、DigitalOcean、Intel、ProphetStor Data Services、OVH、RedHat、SoftIron、SUSE、Western Digital、XSKY和中興通訊等公司。它接受Linux基金會的管理,並為Ceph社區的合作和成長提供一個中立的機構。Ceph基金會董事會不對Ceph的技術治理負責,也沒有任何直接控制權。開發和工程活動通過傳統的開源流程進行管理,並由Ceph技術領導團隊監督。

Ceph項目提供了全方位的分散式存儲介面,涵蓋了對象存儲、塊存儲和文件系統全部三種雲環境使用場景。在OpenStack的雲環境中,由於分散式塊存儲方案往往集成Ceph的RDB技術,所以在選用對象存儲方案時,很多用戶更傾向於同樣適用Ceph的對象存儲服務。

對於雲計算客戶生產環境的要求,純社區版的Ceph還在性能上有一定的差距,所有國內外出現了很多基於Ceph社區版的商業定製化產品,從性能優化、穩定性、用戶界面等方面都有大幅度的提升。

Docker橫空出世,雲原生崛起之路

在開源基礎設施發展的同時,我們再來看看另一條道路發展變化。2013年,Docker項目橫空出世,並在此後的發展過程中對計算機業界產生了深遠的影響。當然,在Docker誕生之前,雲計算基礎設施主要是圍繞著虛擬機展開的,很少有人想著將容器這種技術應用在雲計算場景。而且,不論在Linux還是Solaris亦或FreeBSD里,各種容器相關的基礎技術已經成熟,但只有Docker真正抓住了痛點,進而設計出了直達用戶期望的友好使用界面,對於軟體開發者更是如此,所以Docker的流行首先是發生在DevOps領域,之後逐漸波及其他領域。

相比於虛擬化技術,以Docker為代表的容器技術在做到應用隔離的同時,也沒有帶來性能的損失,這是一個很明顯的技術優勢。所以在注重計算性能的雲計算場景,部分用戶更傾向於使用容器作為底層基礎技術。當然,安全性是容器技術的短板,隨後,很多安全隔離增進技術也層出不窮,從不同的角度來彌補可預期的安全隱患。

2014年,Google開源了容器編排項目Kubernetes。Kubernetes把自己定位為容器雲環境的管理軟體,從整體系統的設計上充分考慮了容器(主要指Docker)技術的特點,這也是它和其主要競爭對手Mesos的不同點之一。

Kubernetes在資源的定義上,以容器為基礎元素,又引入了「Pod」的概念,把運行相同應用的多個容器實例看作一個管理和調度單元,即Pod。而一個Pod需要運行在單個Minion之中,Minion可以理解成一個主機(Host)。在集群中有多個Minion,被中央控制節點Master統一管理。而在Pod的基礎上,Kubernetes又抽象出Service的概念,是多個Pod一起工作提供服務的抽象。

總而言之,Kubernetes引入非常多的新抽象概念,而其集群管理中所要解決的調度、高可用、在線升級等問題,都是圍繞此來進行設計。

2015年,Google發布了Kubernetes1.0,並透露它的應用廠商包括eBay、Samsung、Box等知名公司。人們意識到,容器正在改變企業部署和管理應用的方式,但是業界仍處於雲原生和微服務應用的初級階段。7月,Google與Linux基金會以及行業合作夥伴Docker、IBM、VMWare、Intel、Cisco、Joyent、CoreOS、Mesosphere、Univa、RedHat等一起成立了雲原生計算基金會(CNCF),一起推動基於容器的雲計算髮展。

CNCF目的有兩個,一是與開源社區和合作夥伴一起共同把控Kubernetes未來的發展,二是開發新的軟體以讓整個容器工具集更加健壯。Kubernetes作為了CNCF成長的開始,其未來開源的發展由CNCF控制,以保證它在任何基礎設施(公有雲、私有雲、裸機)上都能良好運行。CNCF的技術委員會將會推動開源以及合作夥伴社區共同開發容器工具集。他們還將評估列入基金會的其他項目,以保證整個工具集齊頭並進。

雲原生的概念,各大廠商理解有所不同,不同社區對它的定義也會有稍許差異。考慮到CNCF基金會在雲原生領域的地位,我們援引它的定義和理解,即雲原生用一個開源軟體棧解決如下三個問題:一、怎麼把應用程序和服務切分成多個微服務;二、怎麼把上述每個部分打包成容器;三、最後,怎麼動態地編排這些容器以優化整個系統資源。

CNCF基金會維護了一張雲原生技術全景圖,它囊括了大部分有影響力的雲原生相關的開源項目。在全景圖裡,雲原生以容器為核心技術,分為運行時和編排兩層,運行時負責容器的計算、存儲、網路;編排負責容器集群的調度、服務發現和資源管理。往下是基礎設施和配置管理。容器可以運行在各種系統上,包括公 有雲、私有雲、物理機等,同時還依賴於自動化部署工具、容器鏡像工具、安全工具等運維繫統才能工作。往上是容器平台上的應用層,類似於手機的應用商店,分為資料庫和數據分析、流處理、SCM工具、CI/CD和應用定義幾類,每個公司根據業務需求會有不同的應用體系。

全景圖還包含這兩塊內容:平台和觀察分析。平台是指基於容器技術提供的平台級服務,比如常見的PaaS服務和Serverless服務。觀察分析是容器平台的運維,從日誌和監控方面給出容器集群當前的運行情況,方便分析和調試。

簡單概括,雲原生包含容器和微服務兩大內容,涵蓋Kubernetes、containerd、CRI-O、Istio、Envoy、Helm、Prometheus和etcd等項目,各大廠都可以自由且開放地圍繞雲原生項目在社區討論技術和提交代碼。例如Intel基於它的硬體晶元,針對計算、存儲和網路資源,在Kubernetes里不僅加入了CRI-RM、NFD和NPD、CSI和CNI這些資源管理和硬體能力發現的功能,而且還加入了如GPU、QAT和FPGA等加速器設備的支持。在服務網格里,Intel也圍繞Istio/Envoy不斷優化網格性能以及增強機密計算安全性。

作為一個開源社區,CNCF社區也建立了各種如郵件列表和Slack渠道,成立了若干不同技術方向的特別興趣小組(SIG)以及技術指導小組(TAG),以及舉辦各種項目技術例會,鼓勵社區會員公開地透明地討論技術問題和決定技術方案。而且,CNCF社區還在北美、歐洲和中國有定期的KubeCon和CloudNativeCon大會,提供面對面的機會給社區成員以宣傳先進技術方案、收集反饋信息以及更深入地交流技術。

未來開源雲計算軟體趨勢

隨著雲基礎設施、網路和存儲等技術轉移到以容器和微服務為代表的雲原生技術,雲計算的發展將在如下技術上呈現出新的趨勢,同時也帶來了新的機遇與挑戰。

邊緣計算某種意義上,邊緣計算可以認為是雲計算的擴展和延伸。時至今日,構建分散式邊緣計算基礎設施工具和架構仍處於初級階段,在邊緣計算技術發展里,仍有問題亟待解決。譬如,針對邊緣計算場景中的複雜網路環境、自動化部署困難等問題,中國廠商在CNCF社區發起了KubeEdge、OpenYurt、SuperEdge等開源項目,通過邊緣自治、雲邊流量治理、邊緣設備管理等功能來實現雲邊協同。相信未來隨著5G技術和移動互聯技術的普及,各大運營商和雲服務提供商將會迅速在社會面普及邊緣計算平台。

新型虛擬化和容器融合:隨著各種場景需求的出現,虛擬化與容器技術不斷融合不斷推陳出新。譬如,現在微虛機(MicroVM)的應用比率在逐漸增加,微虛機在運行速度和安全隔離能力上做到魚和熊掌兼得。虛擬化與容器技術的融合,已經成為未來雲計算里重要趨勢。OCI通過標準定義不同技術採用統一的方式管理容器生命周期,在此標準下,我們已經看到有Kata Containers、 Firecracker、gVisor以及Inclavare Containers等各種容器的運行時形態。

另外,由於Rust的性能優點,很多項目都改用Rust來重寫。在容器運行時里,RunK採用Rust語言實現了一個標準的OCI容器運行時,可以直接在宿主機上創建和運行容器。這樣,RunK比普通RunC跑得更快,同時佔用內存更少。

最後,WebAssembly作為新一代可移植、輕量化、應用虛擬機,在物聯網、邊緣計算和區塊鏈等場景里會有廣泛的應用前景。WASM/WASI將會成為一個跨平台容器實現技術,也必將成為不可忽視的一個發展趨勢。

機密計算:眾所周知,數據在存儲態[1]和傳輸態[2]時都已經有相應的加密機制對其進行有效保護,保障了數據的機密性和完整性,而數據在使用態[3]時的保護正亟需新的技術填補空白。機密計算正是基於硬體的受信任執行環境中執行計算來保護正在使用的數據,它基於建立硬體的可信執行環境(TEE),如Intel的SGX和TDX、ARM TrustZone、AMD SEV/SEV-ES/SEV-SNP、RISC-V Keystone等技術,為數據在雲原生環境中的安全使用提供保障。目前在CNCF社區中就有Inclavare Containers和Confidential Containers等開源機密計算項目,它們已成為雲原生安全新趨勢。

函數即服務(FaaS):Serverless計算或簡稱Serverless允許用戶在不需要考慮伺服器的情況下運行應用和服務。它是一種執行模型,其中雲服務提供商負責通過動態分配資源來執行一段代碼,並且只對用於運行代碼的資源量收費。代碼通常在無狀態容器中運行,可以由各種事件觸發,包括HTTP請求、資料庫事件、隊列服務、監控警報、文件上傳、計劃事件等。發送到雲端被執行的代碼通常是以函數的形式。因此,Serverless有時也被稱為FaaS。未來我們認為FaaS會越來越流行,尤其在人工智慧、自動駕駛等領域,FaaS無疑更適合這些場景使用。除了代碼運行成本和可伸縮能力具備優越性外,FaaS可以讓開發人員更關注業務邏輯,而無需關心底層資源,提高了編程效率。

數據處理器(DPU):自2015年起,中央處理器CPU頻率趨於穩定,數據中心提升算力的邊際成本顯著提高。然而,應用的激增使得當代數據中心中的網路流量急劇增長。為了適應這種巨大的流量增長,數據中心網路向高帶寬和新型傳輸體系發展,數據中心算力提升遭遇瓶頸,難以匹配快速增長的網路傳輸速率,激發了DPU需求。另一方面,DPU的出現也可以降低CPU負荷,讓CPU更有效地處理業務數據。DPU必將成為數據中心和雲計算基礎設施里的一支新生技術趨勢。

結語

雄關漫道真如鐵,而今邁步從頭越。雲計算經過了十多年的迅速發展,目前在各行各業都得到了廣泛的普及,雲計算成為了支撐大數據、物聯網、元宇宙和人工智慧等各領域的基礎平台,也是真正意義上全面落地的熱點技術之一。未來,隨著新技術、新場景和新需求的湧現,雲計算市場上不會只有一種聲音,也不會有放之四海而皆準的一種方案。雲必定會以多種路線形態、多種解決方案、多種衍生技術等方式支撐這些新業務,充分體現「百花齊放,百家爭鳴」的態勢。

[1]存儲態:數據靜止地存在存儲設備上的狀態;

[2]傳輸態:數據在網路中或者一台主機不同組件間傳輸的狀態;

[3]使用態:數據在被此時正在運行的應用調用的狀態,例如此時數據被裝載到內存里進行運算。

而在金融專題中,來自中國工商銀行、郵政儲蓄、中信銀行廣發銀行中國人民銀行平安科技微眾銀行、螞蟻集團等十數家傳統金融機構和頭部金融科技公司的技術專家為我們帶來了關於各類新一代顛覆性技術的深入討論和案例分析。深入解答開發者應該如何更好融入金融產業,以及金融科技的人才培養之道,真正做好金融科技的技術創新和數字化轉型