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个部分:
- 社区开源项目:聚焦技术创新,弥补技术栈上的缺失,并为未来技术布局。目前社区包括云场景的cloud kernel,云原生Java JDK项目Dragonwell ,机密计算LibOS项目Occlum,机密容器项目Inclavare Containers ,系统诊断工具Diagnose,后续计划会有开源更多项目加入。
- 社区兴趣小组SIG:很多时候也被称为项目组,在很多操作系统社区被用来作为打包项目的组合,比如Desktop SIG,来构建所有桌面软件包,或者是存储SIG包括了整个存储系统栈的包。但OpenAnolis社区中的SIG更多的是从如何满足云计算对系统栈的需求出发,来提供全栈集成的垂直应用方案,来打造云平台技术的领先性。比如kernel只是一个单一的软件包,而在社区里面延伸出不同子系统和领域的多个兴趣小组,并与上层应用垂直打通。再比如针对云原生、AI、大数据等场景,也会各自有不同需求点的多个SIG。
- 开源发行版:所有社区的开源项目,和SIG的开发工作,最终都依托一个面向云场景的开源发行版分发出去。
社区也在和众多的生态伙伴建立合作关系,对于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社区,一起来构建云平台系统技术底座,推动云计算的向前发展。谢谢!
本文地址:https://blog.csdn.net/openanolis/article/details/109627582
上一篇: 读懂这篇文章,就掌握微服务测试核心了
下一篇: Go程序性能优化及pprof使用方法详解