以创新技术应对自然挑战

科技   2024-09-13 18:26   广东  




大家好,我是品高软件基础云产品总监,我叫林冬艺,大家可以叫我冬艺。

2008年,我们的基础云产品团队正式成立,开始了漫长的云计算发展之旅。

当时我们第一行代码的创始人依旧还在团队里,整个初创团队依然还在坚持不断地输出高质量的云计算产品与技术。

我们团队一直坚持基础软件自主研发,我们是一支具有匠心精神、强调自主研发、非常有独到意义的队伍。

后云时代的到来,把云计算的整个概念延伸了。我们希望能够把这款产品定义为一个更具有未来、更有想象空间的产品,所以我们树立了全新的产品概念——云无边,智无界。


我们希望我们的云平台变得无处不在,也希望我们这个云平台作为一个载体,让人工智能也变得无处不在。

——林冬艺


2021年12月31日,品高正式登陆科创板一个崭新的后云时代也随之到来。

那时候我们深知未来的发展会极具艰辛,但是我们依然保有对产品“云无边、智无界”的信念。

大家可以跟我一起想象这些场景:在一望无际的沙漠当中,有一朵云平台在默默地提供着稳定可靠的服务;在茫茫的大海上,有一艘船在行驶,它被大海的风浪不断地拍打,不断地在逆风前行,而里面有一朵云平台正在不断地保证着这个船上面的关键信息系统一直稳定运行;在漆黑的地底下,在一列300公里每小时的快速列车上,有一朵云平台正在保障着旅客出行的服务与出行的安全......

我们深知为了达成我们的信念,需要一个非常强大的云平台底座,要做出一个超越过往传统云计算架构的底座出来,所以我们提出了一套全新的云计算底层架构。

这套架构具备几个关键性的特点:

第一个,无人值守我们希望我们的平台尽可能在无专业人员的环境下运行,确保它能够完成自主决策、自主恢复与自主运维。

第二个,极其安全可靠我们不能要求云平台在24小时专业人员、“风火水电”(处于良好稳定状态)保证下完成。而是希望它能够在掉电、弱网、断网、高温天气,甚至是数据丢失等各种不确定的异常情况下,依然保证平台的高可靠运行。

接下来是轻量化云计算架构的本质是服务于应用的,我们不能说建一台云平台100台节点,要用二三十个节点来维持云平台工作,而是更希望我们的云平台能够跑在一个手机、一个摄像头、一个无人机的轻量化设备当中。

另外整个云平台交付的门槛要非常低让这个平台非常简易化地安装,用户无需太多的专业知识就能够轻松驾驭。

因此我们率先提出了一个全新的云计算底层架构

这套架构由两个关键理论组成,第一个是斯坦福大学提出的软件定义理论;第二个是最早IBM提出的自主计算理论。

我们将自主计算加软件定义的这两套理论共同形成今天带来的基础云全新一套底层架构。

整个架构采用一个OODA的软件定义的反馈环,从感知、分析、执行、反馈、调整,完成一套完整的闭环式设计,这套闭环设计能在有限时间内,捕获感知并且快速处理外部环境的间歇性异常。

比方说局部掉电、电源不稳定,DTL的间歇性网络中断或者关键数据丢失等不确定性异常,我们的平台都能感知到,并最大程度地确保平台的可持续运行。

在整套架构的内部组织,采用了自主计算的架构设计,这有别于传统云架构依赖于Mysql数据库这种事务性逻辑,或者集中式架构这种集中化控制逻辑。

我们的BingoCloudStack云平台,在整个架构设计之初,就采用了“一切可自主、一切皆AE”的思想。

AE就是Auto Element,意思就是说每一个AE组件都好像有心跳一样,能够自动发现问题、自动维护好自己,并能解决AE组件与AE组件之间的故障关系。

除了计算、存储、网络这三大基础组件之外,我们甚至连一个console、一个web都是AE自主的。

整个平台的一致性会依赖一套底层的分布式RAFT算法来完成。这套算法能够极大程度地帮助我们维持整个平台的一致性与可靠性,并且允许云外部的其他节点去共同见证、帮助我们保障整个平台的可靠性。

另外,各个AE组件之间是完全解耦的,一旦某个组件出现故障之后,会自动地进行安全隔离,防止故障的蔓延。

最后,故障恢复之后,会自动把这个AE组件加入到整个架构当中,减少用户在过程中的专业化介入。

这样一个底层架构,从理论到原始代码的实践当中,是从最底层一步步搭建起来的,因此我们能够从最根源开始,就保障整个平台的安全性与可靠性。

从2016年开始,我们这套架构就持续三年在特种装备最高安全等级测试中完成通过。

从代码的行级、到极限性能测试、到边界强度测试、到128天无人值守的压力测试下,我们全部通过。

些测试能够帮助我们的云架构平台的可靠性达到一个前所未有的新高度。

这里先来介绍一个比较有意思的技术创新——无人值守环境下的动态高可用技术。

我们知道传统的数据中心是需要有24小时人员专业值班的,保障整个机房的“风火水电”、网络、服务器等关键基础设施稳定的情况下,软件才能稳定。

而我们定义的BingoCloudStack云平台,恰恰是要面对一种无专业人员值班的场景 ,怎么解决这个问题?

我们面对很多挑战,比方说硬件故障的更替能不能由非专业人士完成?还有一个更有意思的话题就是,如果说云平台的控制平面出现了严重故障,它能不能够迁移到其它可用的节点当中?

结合底层自主计算理论架构的体系,我们提出了云平台管理控制平面的动态高可用办法。

有别于传统OpenStack或者是K8s,他们是需要一个中央的master或者是controller来完成这样的可靠性逻辑的,而我们通过底层的RAFT协议,联动外部的设备共同完成一套共识算法。

在故障发生后,我们会选举出一个最合适执行接管的节点,把控制管理节点接管过来。又依赖于RAFT协议形成的数据一致性,我们的控制节点是可以在任意节点上进行漂移的,不会影响业务的稳定运行。

另外,在恶劣环境下,还会面对设备异常掉电的情况,或者说在运行过程中,因为电池容量不足,要提前降功运行的过程,云平台集成了设备的BMC接口,平台能够在电源不足、网络中断的情况下,自动完成节点的启动、关闭,整个过程是无需要人员介入的。

还有个很重要逻辑就是自主路径选择技术。过去传统有个非常有意思的东西叫做KeepAlive,叫做心跳网络。心跳网络还活着,我们的系统是基本可以保持稳定的,但在恶劣的环境下,网络是不可靠的,心跳会中断;一旦心跳中断,会出现脑裂、系统崩溃等,就需要人工去介入,甚至可能带来非常大的故障问题。

这次提出了自主路径选择的理论是我们内部AE的所有组件,包括外部用户使用SDK去访问我们的云平台,这个路径都是自主选择出来的,我们可以让用户在主节点出现故障以后,重新选择到新的可用管理节点当中,守护好整个云平台控制入口的稳定性与可靠性。

整个底层平台通过RAFT的共识算法保护,与联动外部社会形成一个共识环,从而保证整个平台系统的数据性与可靠性。

这样的设计是安全可靠系统的一个非常重要的技术,能够解决平台应对各种恶劣环境的适应性与自主恢复性问题。

我们提出一个很关键的指标,我们云平台节点在工作过程中哪怕故障到只剩一台节点,依然可以保证这一台节点的云平台业务能持续稳定运行。

——林冬艺


接下来我们聊一个非常有意思的技术——eBPF的网络空间虚拟化技术。

我们经历过很长的云网络发展之路。最开始用Linux的传统网络协议栈,Linux Bridge、Route、Iptable等网络协议栈技术来完成虚拟化网络的构建,这些技术非常臃肿,也不合时宜;很快我们进入到下个阶段,就是Vxlan跟SDN的网络时代,这个时代的到来也印证着控制转发分离的网络时代到来;另外我们还有DPDK的高性能网络来提升网络的性能,到现在还有DPU网络来加速我们的网络过程。

但是我们似乎一直没有摆脱一个非常关键的问题:如何能够做出一个可靠性很高、轻量化、并且极其灵活、可满足非常复杂场景的网络技术?

我们也一直在探索有没有这么一套网络架构技术的出现,能改变现状,能满足我们云无边、智无界的理念与愿景。

它要极度灵活,可以在云、边、端各种复杂网络场景下快速部署,并且能够满足各种场景化的需求;另外它极低功耗,我们不希望我们的虚拟化网络组件是依赖昂贵的硬件或者占用大量的服务器资源的;另外还要有很高性能,在各种场景下能够展示出非常强劲的网络处理能力。


这似乎是个不可能的三角形,但这次BCS产品发布会中我们隆重推出国内首个基于eBPF的NFV网络功能虚拟化技术。

——林冬艺


我们成功利用eBPF网络空间的编程技术,在整个eBPF态完成了整个虚拟化网络的空间逻辑的实现。

我们利用eBPF的XDP和HOOK,成功绕开整个Linux网络协议栈,单独实现一套满足我们BCS网络需求的网络空间技术。

我们基于eBPF,实现了DHCP动态地址分配,实现了分布式的交换机、路由器、负载均衡、防火墙以及NAT等多项NFV的网络能力。

恰恰这样的技术是完全基于内核态的,而且它非常轻量化。

经过长时间测试,在120万的随机并发网络访问过程中,我们的CPU占用率一直保持在4%以内,另外在PPS的波动率也小到近了1%,相较于传统的OVS的软件方案,我们的整个性能损耗降低了近50%

这项技术除了在云数据中心之外,我们还应用在边缘的各种端设备当中。

接下来聊聊轻量化,核心的话题就是什么是轻量化?

大家都在谈轻量化,是不是只需一核一G这么少的资源占用,它就轻量化了?

这还不够!


我们认为的轻量化,除资源占用少之外,它的重量要很轻,要很方便放在一个背包上,感受不到它的重量;体积要很小,可以装在一个口袋里面。

——林冬艺


给大家看一下,在我手上的这就是一个完整的云平台。它能够放在我的口袋里面,它的功耗很低,在一个充电宝电量下就能够维持它的运行;它的通讯带宽很小,能够支持在128k的窄带通讯网络下,完成云边端的通讯要求。

除此之外,它依然是一个完整的BCS云平台,它具备虚拟化、智能化、有非常强大的调度能力,以及极强的可靠性。

为了实现轻量化架构,我们从最底层的技术路线与技术实践开始。

采用Golang语言作为我们的主要的开发语言,部分核心代码用到了一种分布式语言Erlang。这样搭配可以摒弃掉一些高级语言带来的运行时的损耗。也因为这两种语言它编译出的就是二进制语言,所以它整体底层资源占用率会很低。

从每一行代码每一个单元测试用例开始,我们就把资源占用作为一个非常重要的考核指标。云平台所占用的资源会随着环境的变化呈现出缓慢的线性增长,我们可以确保云平台的资源占用不会超过整体资源的2%

另外自主计算架构也帮助我们去掉大量的冗余性设计,保证了整体系统的简洁。

最后,根据服务器的情况,我们还做一些分区资源管理,尤其是针对国产GPU这种NUMA架构。

另外我们会限制资源可延伸的区间,确保整个云平台的资源调度处于一个可控且可靠的状态。

当然这里面会涉及到包括缓存设计、CPU亲和性、CPU分区隔离等诸多细节,大家有兴趣的话可以在线下跟我们再做一些交流。

另外为了让云平台的交付能力变得更加简单,变得更加容易让用户能够共同完成,为了达成我们无处不在的云平台这么一个目标,我们深知一个最简单的道理,BCS的实施,我们一定要跟我们的合作伙伴、行业客户共同完成。这个云平台,我们的合作伙伴可以很轻松地对这个平台进行实施交付与运维。

在过去两三年的时间内,我们经历过在40多度的大热天,我的一个Partner,他脱掉上衣,晒得黑黑的,钻进了一个列车里面去完成产品的实施。

我们从中产生一个信念,我们希望我们云平台的实施变得更简单一些,变得更快一些,哪怕是一分钟,我们都可以减少同事在工作当中的一些辛苦,我们也希望这一些艰辛就停留在这里,让我们通过技术的手段解决掉它。

结合品高10多年的云计算经验,我们设计了一套产品安装交付到运维的完整体系。

这种交付过程中,我们能够让用户非专业的人员在30分钟内就能完成三节点的部署。

我们整个运维过程会从多维度的方式去自动发现平台的问题,并直指问题根源,帮助用户快速地去诊断和解决,确保整个平台的自动化以及智能化,也确保业务能够持续稳定地运行下去。




联系我们

如需了解更多
请拨打客服热线400-8300-246

为不断努力的品高云点「赞」「在看」

懂企业的品高云
为中国政企行业数字化转型赋能
 最新文章