OpenAnolis开源社区的萌芽与发展
編者注:10月24日,2020中國開源年會暨阿帕奇中國路演在長沙舉行,阿里云智能高級技術運營專家金運通應邀在操作系統分論壇上做了主題為「OpenAnolis開源社區的萌芽與發展」的演講。本文內容根據其演講內容整理而成。
以下是演講全文:
近些年開源在國內變得非常流行,開源理念也得到了越來越多的開發者及公司的認同,機緣巧合,我的職業生涯幾乎都在和開源打交道,這里先和大家分享一下我與開源的緣分。
這張圖相信很多人都見到過,它介紹了云計算的技術發展,從最左邊的2000年開始,當然我參加工作沒有那么早,但我第一次參與開源項目的貢獻確實是在SUN 這家公司,那時候國內開源貢獻者還是一個很小眾的群體,當時我在openSolaris開源社區做桌面系統,包括Firefox開源瀏覽器的工作,記得在08年隨著Firefox 3.0的發布,它一周內的下載量就超過了2000w,這讓我第一次切身見證到了開源的力量。
后來SUN這家公司被收購了,已經消失在IT發展歷史的長河中,而它的衰落恰恰是和開源相關,雖然后期整個公司實行全面開源的戰略,當時也是業界最大的開源公司之一,但因為它開源的戰略實施的太晚了,沒能趕上產業發展的歷史潮流。
所以我覺得開源不僅僅是一種新的開發、協作方式,對公司而言也是一個新的商業戰略以及通過開源與產業界構建一種新的產業關系。
這張圖里把SUN放到最開始的位置,標稱為單臺機的發展階段,但其實它一度對IT界有著非常大的影響,也有很強的技術洞察力。Sun不僅發明了Java語言,它在很早的時候就提出“網絡就是計算機”的概念,這些都為后來云計算的發展奠定了基礎。
后來VMware在2001年開始虛擬化的工作,AWS在06年開啟了云計算元年,我也在11年 加入IBM KVM開源虛擬化團隊, 當時也沒有意識到開源虛擬化會成為的云計算發展的強勁推動力,并成為整個云計算技術棧的基石,那時KVM也才剛剛出來,身邊還很少有人談論云計算。
后來OpenStack橫空出世,掀起了開源云計算的浪潮,我在Intel有幸見證了OpenStack的蓬勃發展,比如本次大會上的開源黑客松的活動,我在15年參加第一屆的OpenStack黑客松,當時只有Intel、華為等3家公司,十幾個人,現在的黑客松活動有近30家公司,近百人參與,它也見證了開源越來越多的得到了國內開發者及公司的認同。
后來隨著容器技術的發展和云原生的興起,我也參與了kata Containers項目,也因此結識國內很多容器的開發者。所以回顧我的職業生涯,好像云計算發展的每個技術浪潮我都趕上,但我認為這不是能說明我對技術發展有多好的判斷力,而是因為開源,你會發現,開源往往會讓你處于技術發展的前沿。
所以,反過來想,如果我是在開源電子貨幣領域,現在是不是也財務自由了哈。。。
但現實是我又回到操作系統這一傳統的領域,之前一直在系統廠商,做開源系統軟件,服務于硬件系統平臺,現在來到阿里云做系統軟件的開源,那一個云計算公司做系統軟件開源與硬件系統廠商做又有什么不同的地方呢?
為了回答這個問題,我們先來聊一下社區發起的初衷,再對社區做個介紹,最后和大家一起來探討社區未來的發展。
?
社區萌芽
當來到阿里云操作系統團隊之后,我發現操作系統這一領域在云計算時代面臨著新的挑戰,也一直是在老樹發新芽:比如云計算的大規模部署所帶來的穩定性要求,以及隨著云計算規模的擴大,每一點的優化和性能的提升都會帶來可觀的經濟收益,所以云平臺的全棧集成和優化也就成為云平臺的核心競爭力之一。另外,云計算是希望能夠像水、電一樣為業務應用提供了即插即用的計算資源,把業務從基礎設施中解放出來 ,使得用戶可以更加關注業務的創新,而操作系統作為離業務應用最近的一層,需要提供和其他云產品一樣的長期穩定版的支持和SLA保障,這也是云平臺能力的重要部分。
隨著過去10多年阿里云的發展,操作系統團隊也一直在探索和實踐,構建了Alibaba Cloud Linux來滿足云計算場景的需求,比如對于穩定性的增強,對啟動速度和性能的提升,對多架構的支持并支持線上業務應用,對資源隔離、安全的加固,以及LSA的支持等。
但慢慢我們發現這些問題是云計算時代大家都普遍面對的挑戰,而其中的很多問題不是僅靠一個部門,一家公司就能夠有一個很好的解決方案。比如對異構平臺生產可用的支持以及硬件能力的快速引入,并構建軟硬一體的集成和優化,就需要和各硬件生態來緊密合作。再比如為了滿足云計算及互聯網業務場景帶來的需求,越來越多的云服務商以及系統廠商在定制自己的發行版,由此帶來整個發行版生態越來越碎片化,與上游社區的關系也在不斷的分化和遠離,這些又需要去從整個云計算的生態來解決。
而這就有了OpenAnolis操作系統開源社區的破土而出。
Anolis,is Not just Linux System,社區的名字是一個遞歸縮寫,靈感來自GNU,也正如其名字所寓意,OpenAnolis社區并不僅僅是一個單一的操作系統發行版社區,為了滿足云計算場景的發展需求,整個社區包含3個部分:
社區也在和眾多的生態伙伴建立合作關系,對于IHV來說,系統軟件和硬件平臺是天然的雙螺旋的生態,社區希望和IHV一起把新硬件平臺能力帶給應用,充分挖掘平臺性能,推動硬件平臺的快速演進和迭代。
對于OSv來說,構建一個適用于云計算的OS是大家共同面對的問題,會有很多相互學習、合作的機會,社區希望和OSV一起提供更優質的,適用于云計算的操作系統服務。
對于ISV來說,操作系統作為離業務應用最近的一層,社區希望和ISV一起讓應用更好的長在云上,提升端到端的性能,推動業務的敏捷性。
下面和大家介紹一下社區項目及SIG。
社區開源項目
Cloud Kernel,針對云計算場景的需求,基于上游kernel的LTS版本構建的開源Kernel版本,針對云上基礎設施,結合各類云的應用進行了很多特性的開發和優化,比如對穩定性提升,系統資源隔離的增強,云上配置及應用集成的優化,來滿足云計算場景的需求。(https://github.com/openanolis/cloud-kernel)
Inclavare Containers是一個面向機密計算場景的、開源、容器運行時,致力于把機密計算帶進云原生時代。
它也是并被OCI(Open Container Initiative)容器規范組織正式接納為OCI容器標準實現,也就是說Inclavare Containers機密計算容器運行時和runC及Kata Containers一樣成為了OCI容器標準的實現之一。它是由阿里云操作系統團隊、容器服務團隊,并聯合螞蟻可信原生團隊發起,并和Intel等進行開源共建。(https://inclavare-containers.io/)
Dragonwell是一款開源的、生產就緒型Open JDK發行版,被內部阿里電商業務和外部云上客戶所廣泛使用,它著力于在重塑云上的Java語言。比如它提供了Java靜態編譯技術,通過單獨的編譯階段將 Java 程序編譯為本地代碼,在運行時無需傳統Java虛擬機和運行時環境,只需操作系統類庫支持即可。將一個應用的啟動速度從60秒優化到3.8秒,適應了云上的應用尤其是在函數計算場景的需求。
同時它還有對協程的支持,線程阻塞式調度會變成更輕量的協程切換。之前大家使用Go語言的時候就,特別喜歡它的一點就是協程機制。現在Dragonwell也把協程帶到了Java語言。(http://dragonwell-jdk.io/)
Occlum是一個用于機密計算的LibOS開源項目,通過抽象硬件上的機密計算能力,大幅降低了機密計算應用開發的門檻,是機密計算生態重要的一環,也是Inclavare Containers默認的機密計算應用程序框架。(http://occlum.io/)
Diagnose tools也是阿里云操作系統團隊開源的一款系統診斷利器,通過深入探測系統運行時的數據來快速定位linux操作系統各種性能異常、抖動問題。(https://github.com/alibaba/diagnose-tools)
?
社區SIG介紹
目前在社區圍繞內核有4個初始SIG,包括:
核心服務SIG:核心服務是內核與應用之間的關鍵系統層,通過對核心的用戶態組件進行深度優化,來提供云上高可靠、高性能的核心服務。比如通過對systemd這一系統及服務管理器的改造,解決了cgroup 膨脹引發的集群抖動、掛載泄露(mount leak)等問題,提高了系統的穩定性。
高性能存儲SIG:在云場景下,網絡存儲的技術棧會更長,同時新的存儲硬件也在快速更新迭代,這都推動了存儲棧的創新發展。比如Intel有興趣在社區構建圍繞Persistent Memory的高性能存儲軟件棧,對PMEM的協議提供完善的支持,同時和上層應用匹配,比如支持Persistent Memory的Redis方案,構建端到端的高性能存儲應用方案。
跟蹤診斷技術SIG:跟蹤診斷技術是操作系統中必不可少的基礎能力。隨著云計算的大規模部署以及軟件棧的復雜性不斷提高,給系統的診斷和運維帶來了挑戰,傳統的人肉運維肯定是不行了,所以云平臺需要構建一套自動的、智能運維中臺,來自動的收集線上系統數據,提供智能的健康診斷和問題發現,并構建智能的客服來響應問題,同時還需要提供自動的、不停機的、熱修復和主動的故障隔離,來實現問題的自動修復。
社區開源系統診斷利器Diagnose tools:可以深入的探測系統運行時的數據,并致力利用更多的開源共建來構建自動的、智能的系統追蹤診斷平臺;?
資源隔離SIG:資源隔離是容器的支撐技術,社區在內核層對主機的內存、CPU、網絡、IO資源隔離有著全面的增強,比如率先完善了對cgroup v2的支持,解決了長期以來對IO資源無法徹底限制的難題,利用Intel RDT技術來對CPU LLC(Last Level Cache)的隔離,避免noisy neighbors的對性能的干擾,保障了云上虛擬資源的SLA;
同時,資源隔離的增強還應用在資源混部場景,經過電商業務的長期實踐,可以顯著的提高CPU等資源的利用率。社區還在探索資源混部與K8S資源調度的結合,歡迎對該領域有興趣的開發者來一起探索。
為了讓大家更好的了解社區SIG的工作,這里拿高性能存儲SIG中的一個項目為例:
io_uring 是內核5.1中的新異步IO框架,io_uring為了避免IO在提交和完成事件中的內存拷貝,設計了一對共享的ring buffer用于應用和內核之間的通信。社區在用FIO來測試,發現在pull的模式下,其性能堪比SPDK。
社區開發者圍繞io_uring機制,一方面貢獻上游內核社區,并在Cloud Kernel中對其提供完善的支持,另一方面為了能把這一新機制用起來,在與上層應用的匹配上,做了很多探索,比如利用io_uring對Redis中IO流程進行了改造,使得Redis的性能最多提高30%。再比如對Nginx web引擎的適配,使得Nginx長連接的情況性能提升超過20%。但上層的應用是紛繁多樣的,在不同的應用場景中如何最大化的發揮這一IO特性,希望大家能夠在社區中做更多的討論。
云原生SIG
隨著云原生的發展加速了應用和基礎架構的解耦,充分釋放云的彈性;對企業而言,云原生可以幫助企業優化云架構,發揮云的最大化價值。而系統層的復雜性則下沉到基礎設施,使得云原生系統層服務邊界不斷上移,這給系統層帶來新的挑戰的同時,也給了系統層更大的優化和創新空間。
這是云原生開源軟件棧的一個架構圖,其中,沙箱容器用在Serverless等云原生的場景中提供更安全的隔離能力,在函數計算場景中,Java等語言運行時也下沉到了系統層。比如阿里云沙箱容器2.0通過和云場景的Redis數據庫、Java語言的垂直優化,整體性能比在普通容器上還要高。
社區的云原生SIG致力于發展云原生系統全棧開源技術,從開放的硬件多架構的支持,到云場景的操作系統,從與業界共建cloud hypervisor到推動kata containers2.0架構的設計與實現,以及下一步3.0的演進,從對K8S整合到Java語言的云原生化,以此推動整個云原生系統層技術的演進,實現從硬件到應用的全棧優化。
機密計算SIG
云原生機密計算SIG致力于把把機密計算的能力帶給云原生應用。機密計算用于保護云上的敏感代碼和數據,不會被其他惡意的第三方來竊取和破壞,“哪怕對于最不情愿采用云的組織而言,現在也有機密計算等一些技術可以解決它對安全的顧慮,而不用擔心是不是可以信任云提供商。”所以機密計算被認為是未來5-10云計算的必備技術。
但是一個云原生的機密計算環境涉及到全棧系統,從硬件的TEE解決方案到到操作系統及虛擬化,從k8s的資源管理及編排到容器運行時,從到LibOS在再到語言runtime,OpenAnolis 云原生機密計算興趣小組希望通過孵化Inclavare Containers和dragonwell等項目,并連接其他開源社區,和業界一起通過開源、協作來推動這個目標的實現。
?
新模式,新生態
前面我們對OpenAnolis社區有了一個整體的了解,不論是社區的愿景目標,還是社區組織和架構都有著顯著的特點,都著力于解決云計算對系統軟件發展的需求,那么這樣一個面向云計算的操作系統社區,它的發展會給Linux發行版帶來什么樣的新模式,以及圍繞社區會構建出什么樣的開源新生態呢?
發行版新模式
業務閉環:相比于傳統的發行版,面向云計算場景的發行版有著業務閉環,傳統的發行版社區或者廠商僅負責OS本身,但OS從發布到為業務提供服務的中間還有很長的路徑,包括硬件提供方OEM做驗證,再由不同的信息集成商,做基礎設施的搭建,再到集成應用方案,最后才能交付給客戶。而在云計算場景,整個過程都是由云計算提供方來完成,因為客戶對于云平臺需求的是業務應用的托管平臺,這就形成了從OS到業務的閉環。這種閉環對于OS本身的影響,一方面是OS可以和整個云計算平臺棧更好的集成和優化,另一方面,作為云平臺提供方可以更貼近應用場景,更方便快捷的獲得業務對OS的需求和反饋。
端到端的應用方案:在云原生的時代,業務應用是生在云上,長在云上,系統層和基礎應用層甚至語言運行時都下沉到基礎設施,所以對業務的需求而言,不論是對于硬件架構,像X86、ARM的CPU還是GPU,XPU等,還是云平臺的資源能力像網絡、計算、存儲、安全等,以及像AI、大數據等應用領域,都需要云平臺來提供一個端到端的應用方案,同時這也是社區SIG想要去解決的問題。
快速迭代和演進:由業務的閉環和端到端的應用方案的需求推動了云計算平臺對于OS的快速迭代和演進,使得OS能夠更快的對新計算架構的支持,對硬件能力的最大化的利用,對新技術的采用,來滿足業務對新方案需求,并以此更好的推動軟硬件的發展。
開源新生態
圍繞OpenAnolis社區將會構建出一個開源的新生態。
全棧開源生態:隨著云計算軟件棧越來越復雜,對應用服務邊界的上移,以及對全棧的集成和優化的需求,社區通過SIG從某個云計算需求點、技術點出發來構建全棧的開源技術能力,從硬件的新平臺、新特性到系統層的最優架構,再到應用層的適配,從而推動軟硬件協同的發展及應用生態繁榮。
全方位開源:社區通過開源項目、興趣小組SIG以及開源發行版構建了一個立體的、全方位的開源生態。
開源賦能業界:社區也在發展完備的IHV、OSV、ISV等合作伙伴生態,社區和生態伙伴的合作也將會是一種新的合作關系和發展出新的合作領域,并攜手活躍的開發者及用戶來一起合作、共贏,成為云計算發展的最強動力。
云計算在為企業數字化轉型提供源源不斷的動力,相關技術也在持續的快速演進,操作系統處于整個云基礎設施的中間層,它向下管理和抽象了硬件資源,向上支撐了云平臺及云上的業務應用,在整個云計算架構中扮演關鍵角色,如何構建一個滿足云計算發展需求的操作系統是我們在云時代共同面對的問題,歡迎大家能參與到OpenAnolis社區,一起來構建云平臺系統技術底座,推動云計算的向前發展。謝謝!
總結
以上是生活随笔為你收集整理的OpenAnolis开源社区的萌芽与发展的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言中的指针,指针存在的意义
- 下一篇: MySQL讲义第 40 讲——selec