近年来,云原生架构设计的流行,让越来越多的企业拥抱云原生和享受其带来的红利,而开源成为这一技术变革的主要驱动力量之一。
11月4日,2021腾讯数字生态大会云原生开源生态专场在武汉顺利举行。会上云集行业云原生领域专家,以开源的视角,深入探讨云原生操作系统、云原生数据库、云原生微服务,云原生容器等核心技术和云原生开源未来的发展趋势,共同探索了利用开源云原生技术为产品迭代提速,加快业务创新步伐和开源商业化的实践路径。
腾讯开源联盟主席单致豪表示:“开源可以打破技术垄断,通过开源我们也可以构建下一代企业需要的新的技术栈。”在腾讯,云原生的开源是五大重点开源领域之一,推动着云原生技术的发展,并不断打破着旧有技术的壁垒。
单致豪提出,云原生的演化中,第一阶段是通过微服务、容器、DevOps等技术降低企业在数据化转型的成本;第二阶段是面向开发者的云原生,是Serverless的架构,可以面向现有的大数据和数据库等云上服务,让开发者不需要搭建非常复杂的开源组件,就可以应用云上技术服务快速开发产品,进行快速开发,降低了运维的复杂度、提高了研发效率;而第三阶段的云原生,是通过低代码架构,让业务人员迅速学并且能开发所需要的企业应用。目前在国家政策的驱动下,新基建和企业数字化转型是大趋势,运用云原生技术成为许多转型中的企业的实际需求,这也是云原生商业化的机会。
会上,腾讯云虚拟化产品中心总监陈立东做了题为《“TencentOS Server”为云而生的云原生OS》的演讲,分享了腾讯云在操作系统研发方面的进展。据介绍,腾讯自2010年就开始自研操作系统,随着越来越多的业务采用云原生的方式设计自己的软件架构,操作系统也面临云原生领域新的技术挑战,对操作系统提出了众多新的要求。比如,需要提供良好的在内核级别的隔离技术,确保容器之间相互之间完美的隔离性;需要提供一个容器级别的完善监控指标,给到上层业务监控,确保整个容器运行在一个健康的状态;需要一个良好的定位工具,可以快速定位整个内核运行过程中性能抖动问题,保证业务的稳定运行;最后,整个操作系统需要针对云原生进行定制开发,满足云原生定制场景的需求,比如满足容器快速启动的需求。
为了解决这些挑战,团队在云原生领域持续深度开发。目前最新版本的TencentOS Server3发行版可以达到稳定,经历过千万级的实地部署规模;同时针对云原生深度定制优化,有专业的团队持续进行性能优化,并且是完全开源的操作系统。
具体的云原生的优化方向上,腾讯云推出了离线混部解决方案RUE,将计算量较大的离线业务与在线业务放在同一个服务器,以降低运营成本。目前RUE系统已经在腾讯内部的微信、广告、游戏AI、视频转码等多个业务大规模落地,并对外输出,曾帮助客户企业将CPU利用率提升到50%,降低运营成本43%。
其次,为了解决实际业务中抖动的问题,为云原生提供平稳的运营环境,团队开发了云原生SLI。它的核心思想是将整个内核子系统运行状态进行统计,对外提供接口来提供给业务团队进行监控;同时开发了monitorbuffer,保存抖动瞬间内核关键信息,方便之后的快速对应。“通过这套机制,我们成功定位和解决了多个由于内核长时间进入系统调用而导致业务抖动的问题。”陈立东说。
此外在性能优化方面,腾讯云性能优化团队已经持续五年不断研发优化,并将性能优化的工作积极贡献到上游社区,其中有41个优化项被社区接纳,同时腾讯云也是国内唯一一家连续五年进入KVM全球企业开源贡献榜的企业。
在开源共建方面,OpenCloudOS社区由开放原子开源基金会托管和指导,以保证其中立性。陈立东表示,腾讯作为开源云操作系统社区发起方之一,会将腾讯在OS领域所积累的研发经验完全贡献到OpenCloudOS社区中;同时会持续投入大量的研发人力,并将自身运营中发现的问题及时反馈给社区,保证OpenCloudOS发行版稳定,为广大行业提供一个稳定并值得信赖的操作系统。目前开源云OS社区已经有20多家联合发起方,覆盖了芯片、服务器、操作系统、云厂商,金融等多行业。他也呼吁软件厂商、硬件厂商、开发者、行业用户积极加入到开源云社区,本着互惠互利的原则,将社区发展成具备良好生态的操作系统社区。
除了云原生操作系统,多云以及硬件异构和硬件平台异构也是未来重要的技术方向,腾讯自2009年开始,便在容器技术方面持续积累,也有大量在云原生领域的业务应用。腾讯云容器产品中心技术总监周亮宇介绍了2019年由腾讯自研和开源的企业级容器管理平台TKEStack,该项目在2020年作为首批孵化项目,捐献给开放原子开源基金会。
TKEStack是一个完整的多租户多集群容器管理平台,具备多种版本集群的自动化创建、升级、扩容、删除能力,无论是较小的环境还是大企业更复杂的环境,都可以方便地通过在线或离线的方式部署安装,国产OS和TencentOS是TKEStack安装的优选操作系统。据介绍,TKEStack集成了业务的集群资源、命名空间、配额等管理能力,能帮助企业高效地进行应用程序发布。
目前TKEStack在公有云、私有云都得到了广泛的使用,并成为腾讯云、公有云TKE和EKS的底座,“大家如果有用过腾讯云TKE的控制台,可以看到资源管理的界面跟TKEStack是一模一样的,所有的这些集群内Kubernetes原生和CRD的资源管理,其实都是通过TKEStack来管理。”周亮宇说。在私有云场景,腾讯的专有云和TKE企业版的底座管理、业务管理相关逻辑,也全部使用TKEStack。
作为开源项目,TKEStack能够成为商业化产品的底座,源于其技术上的多项核心优势。首先在设计上,TKEStack支持AppID和业务双维度的租户管理,支持硬多租和软多租,可以满足大型企业在子公司、部门等不同维度实现更好的分级资源管理。其次也能很方便的和企业现有的统一认证中心、授权中心实现对接。
周亮宇认为,除了技术优势外,更重要的是生态值得信任。“2019年,从第一行代码开始写的时候,我们就已经把TKEStack整个代码完全贡献托管给GitHub上开源。”截至目前1.8版本,TKEStack经历了24个版本的发布,提交数达到1500,所有公有云特性都是毫无保留的放在TKEStack社区里,同时TKEStack用到的组件全部来自开源社区的其它产品。“一旦哪天您对TKEStack不满意了,不用TKEStack这个平台,创建出来的集群还是照样可以接管和升级,我们是站在一个完整开放的态度去做这个事情。”周亮宇说。
在微服务领域,为了解决微服务维护实例问题,产生了大量的服务治理框架和产品,但如何实现框架、网格、K8s服务的统一治理、保证超大规模服务注册中心的稳定性,一直以来都是困扰很多开发者的难题。不久前,腾讯开源了自研的“PolarisMesh”框架,为此提供了解决问题的途径,“PolarisMesh”在腾讯内部经历了四次功能和架构迭代升级,积累了腾讯从虚拟机时代到容器时代分布式服务治理的经验,截至2021年9月,腾讯注册的PolarisMesh服务节点已经突破了五百万,几乎90%以上的业务部门都在使用PolarisMesh。腾讯云微服务中心技术总监王洪智在演讲中详细介绍了PolarisMesh与其它开源组件的区别和优势。
首先,PolarisMesh有非常丰富的一体化服务发现和治理功能,可以解决服务发现和治理中所有的问题,而其它的开源组件大多功能较为单一。由于PolarisMesh提供了丰富的系统组件,适配不同微服务开发的技术站,用户即使没有使用任何框架也可以简单地调用PolarisMesh的SDK,实现全量的服务发现和治理功能。
其次,来自腾讯内部海量业务的不断打磨,让PolarisMesh具备高可用性和高扩展性。第三,PolarisMesh统一了VMmare和K8s,支持K8s服务和网格Sidecar的自动注入,支持K8s多集群的全局服务发现和治理,打通了K8s和框架的服务发现和治理体系,打通了K8s和虚拟机的服务发现和治理体系。
在腾讯内部,微信支付就使用PolarisMesh实现了路由和跨地域的切换,以及流量调度功能;2019年在腾讯与央视频合作的跨年项目中,也使用到了PolarisMesh。目前,在满足腾讯海量业务的场景情况下,PolarisMesh开源后,也可以解决其它公司遇到的共性的问题。王洪智表示:“我们的产品通过云给大家提供企业级服务,减少技术研发或者运维的成本。PolarisMesh项目的所有组件都已经提交到GitHub上,对外开源包括核心组件以及新开源的组件,PolarisMesh的功能设计也考虑到开源之后的扩展性,采用插件化的方式,外部使用的时候也可以对每一个功能做定制化的插件,解决一些特有的问题,降低外部开发使用PolarisMesh的成本。”
在开源云原生领域,还有一项重要的技术备受关注,就是数据库。现场,腾讯数据库技术总监张青林也分享了企业级云原生数据库TDSQL-C在可用性、性能和可靠性方面实现的多维度突破。
据介绍,TDSQL-C分为计算和存储,计算主要负责原子性、一致性,ACID里ACI特性的实现,存储主要负责数据持久化。相比传统数据库,TDSQL-C通过将计算和存储解耦,可以支持PB级别的存储,而且扩缩容极快,备份能力也很强,并且可以实现秒级启动关闭,更加方便且节约成本。
张青林用一个例子来作解释:“如果我们要有新业务或者新游戏在开发测试过程中,之前购买CDB实例的计费取决于本身购买的规格,以及你使用实例所需要的时间。但是TDSQL-C里面,价格取决于计算时间节点的价格和存储所付出的价格,只有真正使用服务过程中才会计费,整个服务监控力度达到秒级级别。”除此之外,相比传统数据库,TDSQL-C的弹性容量特性可以实现按需扩容,按操作本身产生的数据量动态计费,可以更好地控制成本。
TDSQL-C这些特性的实现,离不开腾讯数据库团队对产品的不断优化,包括对可靠性、能用性、深度结合业务所做的优化。张青林表示,未来TDSQL-C的演进还会追求更加极佳的读写性能,以及更快的日志响应速度和更大的整体吞吐量,并提供金融级的可靠性和跨区域灾备等。
当前云原生领域的开源项目层出不穷,2020年,CNCF共接纳了35个项目加入基金会,托管的项目总数超过80个。在云原生领域,开源商业化的发展趋势越来越明显,2020年,国内发生了至少11起开源领域投融资事件,综合累计融资额接近30亿人民币,云原生开源发展与商业化也成了当下值得探讨的问题。