自主可控云原生生态与架构研究

2022-09-01 13:00高允翔王奉军
信息通信技术 2022年4期
关键词:开源容器架构

林 灵 高允翔 王奉军

中国联通研究院 北京 100048

引言

随着信息科技的不断发展,以及行业内外的认同和重视,软件架构从集中式到分布式,从垂直架构到SOA架构再到微服务架构,一直在朝着降本增效的方向发展。近几年云计算火热发展,为了充分发挥云计算的弹性、分布式技术优势,软件架构进入了云原生时代。中国的软件厂商也一直在追赶云原生大潮。以Kubernetes为例,至2019年,中国已经成为Kubernetes全球第二大贡献国。同时,CNCF基金会中超过10%的会员来自中国,目前包括了阿里巴巴、华为、京东、火山引擎等白金会员,以及多个黄金会员。

在逆全球化背景下,尤其是俄乌冲突以来,西方软硬件企业对俄罗斯企业的种种制裁,促使企业从维护自身业务可持续运营和信息安全出发,考虑采取自主可控的产品建设业务应用系统。但当前企业选择的自主可控产品大多是基于传统架构的,其自主可控应用改造大部分是将传统架构的非自主可控软件替换成相同架构下的自主可控软件的过程。而老旧的架构将会逐渐被时代、市场和有能力维护的技术人员淘汰,其安全性也将随着时间的推移而逐渐降低,企业将来仍然需要进行架构升级,将现有的系统改造成更为先进的架构和软件产品,以增加功能性,提高可维护性,增强技术安全性。对于大型系统来说,每一次软件产品或者架构上的升级改造都需要投入大量人力物力,而且将存在一段时间的适应性和兼容性问题。因此,本文提出将企业单位的国产化改造和架构升级进程合二为一,并给出当前较为成熟的自主可控云原生产品以及可能的云原生软件系统架构以供企业单位参考选用。

1 自主可控云原生生态发展现状

为了追求更高效的资源配置、更合理的人员分工、更便捷的开发部署方式,以及软件工程学中的高内聚、低耦合的架构研发方向,随着容器、微服务、服务网格等相关技术的发展,云原生技术架构模式正在快速发展中。软件架构大都趋于复杂,软件使用者在选择软件产品构建软件架构时不但要考虑其实用性和适用性,更要考虑各个软件模块之间的兼容性和软件的相关技术支持。在软件市场中,一个技术产品的成熟和推广,与其社区支持和相关生态建设的发展是互相促进、相辅相成的。

成立于2015年的云原生计算基金会(CNCF)目前已吸引了超过600个会员,为云原生生态社区贡献了多个重要项目[1],推动云原生概念在开发社区、企业单位和市场中得到了广泛认可。其中,最热门的容器技术已经在众多行业和领域有了许多落地的案例,包括高科技、金融、制造、零售、教育、政府,甚至军事等。

2018年容器技术在中国大规模落地,云原生开始深入国内产业并形成潮流。据云原生产业联盟的报告称,2019年的国内软件行业中,六成以上的用户已在生产环境中应用容器技术,八成用户已经使用或计划使用微服务,Serverless技术也有近三成用户在生产环境中应用[2],表明云原生技术价值在国内行业中得到了认同。

从生态建设方面来说,国内几大公有云服务商本身就已经趁着云原生的东风,将自己的产品融合改造,打入了国际市场。以阿里云为例,从2008年开始自主研发大规模分布式计算操作系统“飞天”开始至今,其云计算技术经过自身软件的超大流量订单验证[3],为服务推广打下坚实的基础,同时也为其他云服务商提供了一条发展通路。阿里云的独特优势在于自主研发的技术,产品线囊括云原生架构中的大部分分类,形成了自身特有的一套云原生生态链体系。目前阿里云已经稳居亚太云数据库市场份额第一,在全球公有云IaaS市场占有率排名第三[4],说明阿里云产品服务也得到了全球范围内用户的广泛认可。

此外,这些云服务商都有深入云原生技术生态研究的发展规划和相应落地实践经验,由它们带领其他国产软件产品进入生态链,建立国内云原生相关技术产品生态圈,是国产软件推广产品、深入产业链、追赶云原生浪潮,进而建立健全国产软件生态的时代机遇。以华为为例,作为全球首批CNCF认证的Kubernetes服务提供商,华为从CNCF创立前期至今都在CNCF社区活跃且积极贡献,是最早将云原生技术在生产环境中使用的公司之一,也积极把需求带到社区进行落地。华为云云原生服务栈目前已覆盖CNCF的技术全景图,可以全面支撑企业应用上云前后的全生命周期环节,同时还在CNCF开源生态里贡献了相当多自研的开源组件,如ServiceComb、Volcano、KubeEdge、openGauss等[5]。2019年华为推出了鲲鹏凌云合作计划,与国产软件服务提供商合作,涵盖了数据库和中间件、应用提供类、解决方案和企业云迁移实施服务等厂商[5],对国产软件的发展和生态圈建设有着积极的推动作用。

2 自主可控云原生架构

随着技术发展和应用场景的丰富,云原生架构及其中各领域产品都有了几次技术更新迭代。以其中最为核心的服务编排调度框架为例,早期的OpenStack技术栈是国内外公有云的主流计算框架,其开源社区吸收了各大科技公司的贡献[6],拥有稳定成熟的开源方案,国产芯片如鲲鹏、海光,国产服务器如曙光、泰山,国产操作系统如麒麟、openEuler都对OpenStack有较好的适配支持,国内云平台如京东云、百度智能公有云等也有基于OpenStack的云原生化改造应用。但随着海量数据和大规模计算场景的增多,OpenStack以虚拟机为单位的调度方案不再满足更高的计算需求;同时OpenStack子项目及组件较多,要进一步提升集群规模和扩展性,需进行深度研发优化组件性能,因此现在OpenStack大多应用于IaaS层的调度。较为流行的调度框架还有Apache基金会的Mesos、Docker公司的Swarm,Mesos适用于大规模任务调度,Swarm较为轻量操作简单[6];这两个项目较擅长把一个容器按照某种规则,放置在最佳节点运行起来,即容器的调度,目前使用不是特别广泛。

谷歌公司开源的轻量级容器编排项目Kubernetes更关注容器化应用的管理与编排,擅长按照用户的意愿和整个系统的规则,自动化地处理好容器之间的各种关系,对主流容器编排调度的需求适应性高[6],凭借其优秀的开放性、可扩展性以及活跃的开发者社区,目前已成为分布式资源调度和自动化运维的事实标准[7]。国内有很多云厂商都发布有基于Kubernetes的容器编排管理方案和云平台,如阿里云、华为云、百度智能边缘云、DaoCloud[8]等。

国外云计算、云原生的概念和产业落地实践都比国内各大科技公司要早,因此云原生生态和架构中的部分国内产品还是使用以国外产品为基础、国内厂商进行改造和包装、个性化定制、技术优化等模式推出的。对于提供综合云服务的国内厂商,有些将各个领域的成熟国产云原生软件产品整合,搭建完整的国产云原生框架,提供综合型的云原生服务;另一些使用整个产品线自研开发的构建模式,如阿里云、华为云等国内知名厂商,提供产品间绑定性较强的一系列服务。

3 自主可控云原生架构参考方案

国内各企业单位当前的业务应用大多基于传统架构构建。当应用系统需做自主可控改造或构建基于自主可控产品的备用系统时,如果目标架构仍然是传统架构,虽然应用系统选用的是自主可控软件产品,安全性得到了提升,但应用架构依然落后于国内外先进技术,其易用性、灵活性、可靠性、可维护性等各方面特性都跟不上时代,后期可能面临二次改造来完成架构升级。当前信息技术创新产品资源池中,相关产品多是传统架构的自主可控产品,尚缺乏云基础设施、云平台、云原生相关品类及相关产品;不过对于大多数企业单位来说,在业务引用自主可控改造过程中的产品选择方面并非刚性约束,在保证信息技术产品供应链安全、信息安全的前提下,企业的自主可控改造拥有自主选择的权力。因此,建议企业在进行应用系统自主可控改造过程中完成架构升级,根据实际应用场景和应用特点的需要,考虑采用更先进的云原生架构的可能性,而不仅仅只是产品的变化。

通过对国内云原生生态架构的调查分析,可以得到国产云原生生态架构图,如图1所示。

图1 国产云原生软件架构生态

综合各个产品的开源单位、开源协议性质、软件成熟度等方面的情况,本文给出一个自主可控云原生架构建议,如图2所示,以供有需求搭建云原生架构的单位或技术人员参考。

总体来说,云原生架构由应用定义与开发、服务配置与编排调度、应用服务运行时、无服务架构、运维分析等部分构成。

1)应用定义与开发层

在数据库方面,传统数据库在云原生时代特别是大规模分布式集群应用场景下将产生高额成本及运维困难等问题,因此用户纷纷转向云原生数据库,这成为追赶云计算大潮的国产厂商的新机遇。蚂蚁金服全自研的OceanBase两次打破了TPC-C测试世界记录并维持排名第一[9],在去“O”困难的金融领域得到了多家商业银行和保险机构的认可和欢迎[10]。

图2 自主可控云原生架构

消息中间件和流式处理领域较为突出和使用较为广泛的国产产品是阿里开源的RocketMQ。此外,EMQ应用于5G时代物联网场景,支持百万级连接,在全球物联网市场得到了广泛应用[11]。

2)服务配置与编排调度层

服务注册与发现领域,存在AP、CP安全性条件的取舍问题,阿里开源的Nacos可支持切换AP、CP模式,可以与Spring Cloud Eureka无缝结合,比传统的单纯的Eureka、Zookeeper更适应云原生分布式场景,已经在国内获得了非常多的实践[12]。

编排调度方面,基于kubernetes的个性化优化项目在国内有了一定的发展。源于华为AI容器的Volcano项目主要面向大数据计算和AI训练场景,弥补了Kubernetes在高性能应用方面的不足[13];腾讯开源的TKEStack结合了腾讯创新的GPU虚拟化技术,面向离线计算和在线业务混合部署场景,能够稳定管理万级别Kubernetes集群,目前也已经进入孵化阶段[14]。

RPC远程调用方面,阿里巴巴开源的Dubbo可以和Spring框架无缝集成,是国内第一款成熟的商用级RPC框架,目前在国内各个行业的应用已经非常广泛[15]。

服务代理方面,老牌Nginx已经家喻户晓,国内也有这方面的生产实践。蚂蚁金服开源的MOSN可以与任何支持xDS API的Service Mesh集成,亦可以作为独立的四、七层负载均衡使用,并已经过几十万容器的生产级验证[16]。

服务网关方面,阿里开源的Sentinel积累了大量的流量归整场景以及生产实践,目前已经在6000多个系统中得到使用[17]。

容器镜像仓库方面,除了与Docker配套使用的Docker Registry之外,阿里云容器服务中的ACR可以提供安全稳定的镜像构建和托管服务,解决了国内用户访问国外仓库和服务时的网速和限制问题[18],深受国内用户好评。

云原生安全技术方面,小佑科技Dosec、青藤云安全的青藤蜂巢、探针科技的Tensor Security从不同维度、颗粒度提供了对容器、应用、运行时环境、镜像等的安全检查、控制、防御、异常追踪、合规检查等能力[19-21]。

3)应用服务运行时层

存储技术作为底层技术框架,也可以充分利用云计算的分布式优势,构建灵活弹性的存储框架。华为开源的OpenSDS可以解决多云环境下异构资源存储的统一纳管的问题,有多家业界领先的存储厂商和优秀企业提供技术指导和业务需求分析[22]。

容器运行时环境方面,国内创业公司开源的kata底层将Intel Clear Containers和Hyper.sh的RunV合并,与谷歌的gVisor项目并称为目前两大安全容器技术[23]。

云原生网络方面,灵雀云开源的企业级云原生Kubernetes容器网络编排系统Kube-OVN将OpenStack领域成熟的网络功能集成到Kubernetes中,提供了跨云网络管理、传统网络架构与基础设施的互联互通、边缘集群落地等复杂应用场景的能力支持[24]。

4)无服务架构

无服务架构方面,阿里的FaaS框架Midway Serverless主要应用于前端快速构建Node.js云函数的场景,提供了多个云平台的运行时启动器,使其可以在多个云平台上快速部署[25]。此外,华为的FunctionStage、腾讯云的Serverless Cloud Function等都能提供Serverless云函数托管和计算服务。

5)运维分析层

运维方面,可以分为监控、日志、链路追踪和混沌注入。监控方面,除了当前比较主流的Google开源的Prometheus外,小米开源的Falcon提供了面向互联网的企业级、高可用、可扩展的监控解决方案[26]。日志方面,阿里云的Log Service、七牛云的Pandora、日志易的Rizhiyi都可以提供日志采集、查询分析等相关功能。蚂蚁金服的服务链路跟踪工具SOFATracer,国内开源爱好者开源的基于分布式跟踪的应用程序性能监控系统SkyWalking可提供链路追踪服务。混沌注入方面,目前国内主要产品是阿里云的面向云原生的混沌工程工具Chaosblade,可实现底层故障的注入[27]。

此外,在服务网格、持续集成与交付(CI/CD)、私钥管理等领域,国内软件存在一些空白,但国外产品已比较成熟,目前市场基本被国际知名厂商占据。

对于国内市场还没有较为成熟产品的领域,如果有需要,可以使用风险较低的国内公司开源产品暂为替代,以保证架构的完整性;若国内开源产品中也没有比较突出的,如开发工具、服务网格、持续集成与交付、操作系统等领域,则可使用风险较低的国外开源产品填补,但使用这些开源产品必须考虑其开源许可协议对衍生产品的限制规定。由于部分强著作权型开源许可协议存在“传染性”,如GPL(General Public License)规定,如果原始授权人采用GPL来发布自己的作品,那么无论该作品的任何衍生作品,都要遵从GPL的规则,不允许修改后和衍生的代码作为闭源商业软件发布和销售[28]。因此,在选用以GPL及类似协议作为开源许可协议的产品时,需要受到知识产权方面的法律限制,有一定风险。而像BSD、Apache、MIT等协议属于宽容型许可协议,若使用了以这些协议作为许可协议的软件,则基本不被限制开源或商业化行为。因此我们认为,使用宽容型开源许可协议的软件产品属于风险较低的软件产品,可以作为国产化改造的产品选用替代参考。

4 结语

结合以上对于国产云原生生态及相关产品的分析,我们可以认为以开源产品和国产自主可控产品为主的云原生生态已逐渐成熟,品类也较为齐全。在企业业务应用自主可控改造过程中,应探索从使用非自主可控产品、传统架构,转变为使用自主可控云原生产品来构建系统架构的自主可控改造方式,把一步到位地升级到最新的云原生架构列为选项进行评估,从而避免二次升级带来的成本浪费及对业务生产的二次冲击。国内综合云服务厂商也可以将低风险开源产品和国产自主可控产品整合,构建自主可控云原生服务框架,为客户提供全面的云原生服务。

猜你喜欢
开源容器架构
校园武术“学、练、赛”一体化实践探索
功能架构在电子电气架构开发中的应用和实践
传播开源精神 共迎美好未来
基于B/S架构的图书管理系统探究
难以置信的事情
构建富有活力和效率的社会治理架构
五毛钱能买多少头牛
2019开源杰出贡献奖
液体对容器底及容器对桌面的压力和压强
VoLTE时代智能网架构演进研究