阿里妹导读:新年伊始,国家科学技术奖励大会在北京人民大会堂隆重举行。阿里云获得国家技术发明奖、国家科技进步奖两项国家大奖。这是互联网公司首次同时荣获两大国家科技奖,也实现了互联网公司在国家技术发明奖上零的突破,这意味着阿里巴巴以十年为周期的技术战略进入收获期。
此次阿里云联合上海交大过敏意教授团队开展的“面对突变型峰值服务的云计算关键技术与系统”获得国家技术发明二等奖,背后的相关技术源于超大规模互联网电商场景。早在2009年11月11日,阿里巴巴发起第一届“双十一购物狂欢节”,如何在“突变型峰值”下继续服务好行业新消费模式,就成为阿里巴巴面临的技术难题。十年后的今天,“突变型峰值”场景不降反增,逐渐成为行业技术普遍要解决的,甚至关乎国计民生的问题,比如:交通运输域的“春运抢票”、电子商务域的“秒杀”、全民共聚的“春晚”与“跨年”等大型场景。十多年的战略技术投入,伴随着十多年的云计算成熟之路,阿里云成功解决了“突变型峰值”难题,并通过普惠行业的云计算技术,将能力输送分享到行业的各个领域。
我们将走进获奖背后的故事,为大家介绍其中的技术。
1. 突变峰值的挑战
首先,我们要搞清楚阿里云“突变型峰值下的云计算技术”究竟是什么。
“突变型峰值服务”通常指:相邻单位时间内终端用户请求量显著增长的互联网服务。互联网服务在峰值突变时易出现用户请求响应慢、系统崩溃等后果,比如:
2014年某电商网站在“618”购物狂欢节时,响应慢、网站崩溃;
2015年除夕时某社交app红包出现无响应、交易失败等问题;
虽然云计算在面世之初,弹性能力和近乎无限的资源就是其卖点之一,但是传统的云计算技术面向通用性弹性计算设计,在处理突变型峰值服务时,常容易出现以下几类难题:
“成本高”:应对峰值需求预备容量,成本不节约;
“延迟长”:云中低算力节点负载高,调度不均衡;
“吞吐低”:存储设备扩展故障剧增,回复不迅速;
“扩展慢”:服务镜像仓库网络拥塞,分发不及时;
“运维难”:专家经验演进和查询慢,分析不智能。
阿里云经过多次阵痛和无数工程师的心血,解决了以上难题,造就了十年一剑的“基于容器与混合部署的高效资源整合技术”。
2. 技术探索的起点
阿里巴巴的容器与混部技术绝非一日之功,突变峰值的挑战亦非单一技术点可以应对的。但万事开头难,这些技术突破的起点可以追溯到“双十一”的诞生初期。
2011年,时下整个行业的虚拟化技术正发展得如火如荼,以KVM、XEN以及VMware为代表的虚拟化技术,几乎有着一统基础设施的大势,而阿里巴巴内部以多隆、毕玄为首的一个小团队,剑走偏锋,选择探索一个代号为“t4(淘宝第四代计算引擎)”的项目,t4的技术理念与如今云原生领域的核心技术——容器,恰恰如出一辙。每次提到这段历史,当时阿里的工程师都会提到两点:“扩展效率”与“资源利用率”。一来,“双十一”大促势必会给计算服务带来巨大的流量压力,面对访问峰值时,如何提供后端系统实时的“弹性可扩展能力”是一个技术难题;二来,面对超过日常情况几十倍、甚至几百倍的流量压力,如何做到提升数据中心资源利用率,实现资源不随着流量线性增长?(显然我们不能因为有百倍的流量压力就购买100X的服务器来解决这个问题)。
提出了正确的问题,让阿里巴巴在容器技术上的先行一步,从实际问题出发展开了有针对性的攻坚,为未来打开了道路。
3. 终成一剑的容器化、微服务与混部
容器技术在默默前进的同时,随着双11面临的系统峰值负载压力逐年增加,基础设施采购投入的成本也逐年成指数上升;同时由于日常业务日均仅有10%左右的利用率,新增购置的硬件服务器资源会造成巨大浪费。为此,在2014年,阿里巴巴开始探索混部技术,通过将在线业务和离线大数据计算的负载混部运行在共享的集群中,以期可以显著提高数据中心资源利用率。
在线业务和离线大数据计算这两类负载有多个可以互补的特点,构成了数据中心大规模混部技术的可行性基础:
在数据中心日常态下,在线业务普遍资源利用率较低,且业务峰值压力时间短,或固定在大促脉冲波峰时间,白天压力较大,且对延迟和抖动敏感;
离线业务正好相反,平时资源使用压力较高,业务资源使用较为固定,主要资源压力集中在晚上,重视高吞吐,但对时延不敏感。
直观地看,两类负载只要能跑在共享的集群中,就可以达到提升利用率的目的。但我们的目的并非利用率这个数字,而是所有负载是否可以正常运行。在集群资源利用率较高时,在线和离线业务会发生资源争抢(CPU、内存、网络带宽、IO以及各种微资源)。对于具有超长复杂链路的微服务,在超高集群资源压力下,任何一个环节的延时响应都会造成整个业务链路对外暴露的服务体验下降。如何在混部场景下保证极低的时延和稳定性便成为了历史难题。
为了全方位、系统性地解决这个问题,从2016年起,阿里巴巴用三年时间,通过重建数据中心、全量业务迁移和集团全量业务容器化改造,在早期阿里巴巴业务的微服务化的基础上,形成了基于容器和微服务的统一混部调度资源池,促进了整体基础实施架构的演进升级。下面我们简单列举部分有代表意义的措施。
宏观的资源管理方面,实现在线业务和离线业务调度器的协同工作,在调度层为混部负载之间的隔离建立了良好的技术架构,让两个调度器在各司其职的同时能够最大限度保证在线业务的瞬时需求(保证可以在需要时及时拿到资源)和离线业务的长期需求(保证在给定时间窗口内可以获得足够完成计算任务的资源)。为了降低大规模部署时的资源碎片,工程师们还通过升级智能调度算法,解决类似高维度背包问题,大大提高了服务器的资源部署密度,让同样数目的服务器可以承载更多应用同时正常运行,降低成本:若仅考虑CPU资源,在满足内存、网络带宽、磁盘IO、打散、亲和等约束的同时,将CPU分配率从70%(普通贪心算法)提升到95%以上(智能调度算法)。
微观的资源隔离方面,阿里工程师深入到操作系统和内核当中,针对不同业务特点进行了多方面的努力。在CPU资源分配方面,工程师深度优化了Linux的CFS调度算法,在排队时间、驱逐等级等方面为重要性不同的业务设计优先级,保证重要任务在需要时可以迅速获取CPU资源,降低业务响应时间、提升业务稳定性。在多核处理器环境中,通过Noise Clean等技术,保证了高优先级任务可以充分使用自己所在的CPU核(Hyper Thread)的微资源,进一步保证业务的稳定性。CAT、NUMA、JVM冷内存回收等技术也在这里大放异彩。
在超大规模部署效率方面,阿里云的Dragonfly提供了高效镜像分发技术,实现了指数级别的镜像分发时间的提升,将原本需要数十分钟才可以完成的镜像分发工作降低到数秒之内完成。Dragonfly现在已经是CNCF认可的正式项目之一。
上述这些措施也为集团全面上云,以及云原生升级打实了基础。正是这套完整的资源隔离和弹性共享机制,使得阿里巴巴的大规模数据中心在提高资源利用率的同时,稳定支持了在线业务大促脉冲峰值,最终实现了大促0增量成本投入。
实际上,容器化、微服务、混部这些脱胎于应对“突变型峰值”问题的技术,在大促以外的日常运行带来了更大的经济价值:通过混部技术,阿里巴巴数据中心的日均资源利用率由10%提高到40%,每年节省数十亿成本,实现了历史性突破。2019年阿里巴巴集团基于阿里云智能天然的弹性能力和自研神龙服务器强大稳定的性能,通过混部集群全面上云,实现了基于安全容器的新一代云原生混部技术的架构升级;且通过基于数据智能驱动的运维、调度和管控等创新方法,实现了自动智能化的云原生混部集群管理能力,大大提高了混部集群的业务稳定性,更进一步降低了成本。
4. 走出阿里:从服务内部到普惠社会
为了无法计算的价值,阿里一直把内部多年沉淀下来的核心技术逐步推向社会。一方面通过开源,比如高效轻量的企业级富容器引擎技术Pouch,大规模低耗时的P2P分发系统Dragonfly;另一方面,通过阿里云,让企业可以非常简单的使用全球最具领先的企级容器技术,并享受到云时代带来的技术红利。根据Forrester的第三方报告,阿里云的容器服务能力,中国排名第一。
应对突变型峰值的能力也不例外。阿里云如何通过阿里的容器技术来帮助业界的呢?下面我们就来讲两种在阿里云上常见的峰值问题的解决方案。
4.1 云上电商:让秒杀活动不再被秒杀
电商场景下,它的特点是短时间内峰值较大,而且活动比较频繁。在传统情况下,因为弹性效率不高,所以扩容的资源平时就预置并长期处于就绪状态,费用开销太大,另外扩容的资源需要根据活动的时间来预置,活动越密集运维工作量越大,频繁的进行扩缩容,手工介入越多越容易出错,扩缩的时间长难度大。
在非业务峰值时,保持少量节点维持日常业务,通过业务容器化,业务和运行环境统一进容器镜像,极大的简化部署,并且由K8s来保障业务故障自愈高可靠,弹性伸缩等能力,容器业务的全生命周期管理都交给K8s,简化运维工作量。当业务峰值,原有工作节点已不能满足当前的业务需求,需在大促峰值前快速扩容工作节点的数量。通过已对接弹性伸缩服务ESS的能力,集群具备工作节点自动伸缩能力,我们可提前配置好自动伸缩的规则,而容器化的业务会在工作节点就绪后,迅速自动扩容并调度到可用的工作节点上去,自动配置好网络,并由K8s来保障应用的高可用。当业务峰值结束后,K8s会根据HPA(horizontal pod autoscaler)的能力将业务进行自动缩容,业务缩容后,集群自动伸缩规则会缩容释放工作节点。
4.2 基因计算:让典型计算类型任务也受益于更好的弹性和混合云能力
基因行业中的基因检测计算也是一种典型的计算场景,虽然不像前面的秒杀、双11那样有突发峰值的挑战,但是同样也得益于容器突发弹性场景所锤炼出来的弹性性能和成本优势。目前,国内70%以上的基因测序公司和研究机构都在使用阿里云的服务。在传统的模式下,由于线下资源的限制,需要几天甚至更长的时间才能出得出结果。如果要提升计算效率,那必须要持有大量的计算资源,但这个检测工作又不是每时每刻都需要运行的。如果采用混合云容器弹性计算的方式,那么这个问题就能迎刃而解。当线下的数据采集完成时,通过混合云,把数据传递到云端,并通过容器化的弹性能力,在分钟级内,自动快速拉起成百上千个检测程序,从而快速完成计算。而当检测完成时,又在分钟级内快速销毁资源,极大地降低了资源使用的成本,充分利用了云的能力。除了成本的降低,由于有了阿里云中强大的计算能力作为依托,仅用15分钟,即可完成一个科学界普遍需要120个小时才能完成的高精度个人全基因组测序全流程。
容器已经成为最流行的云的构建方式和最佳的应用运行环境。阿里巴巴自身是容器的重度用户,加上在公有云中通过服务海量客户积累的经验,配合阿里云中弹性计算ECS、神龙服务器、ESS、各种中间件和大数据服务能力等,让阿里云在公有云、专有云或混合云,成为企业级业务上云和数字化改造的最佳实践。
4.3 12306的故事:帮助每个回家的人
12306是我们每个人都熟悉的应用,它是一个以售票业务为核心的交易系统,用户在购票之前需要做余票查询,尤其是在十一、春运这样的特殊情景下,12306必须提供海量数据查询服务,是系统中最重要的一个环节。在传统IT解决方案里,为了每年一次的春运,需要按照峰值采购大量硬件设备;春运后,这些设备会处于空闲状态,造成巨大资源浪费。另一个致命问题是,按照传统方案,如果春运峰值流量超出预期,服务将面临瘫痪,而大规模服务器的采购、上架、部署调试至少需要耗费一两个月时间,是完全来不及的。在这种情况下,将业务上云并且充分利用阿里云提供的弹性能力,可以将成本优势发挥到极致,同时完全满足业务的需求。从十一到春运这些旅游出行高峰时刻,阿里云上的余票查询业务每次扩容的资源交付在分钟级就能完成,并且可以做到在流量洪峰过后将资源进行及时的释放,大大降低成本的同时,也让每个人都能体会到流畅的购票体验。
5、 总结
突变型峰值服务中的云计算技术突破,最初源自阿里巴巴自身的电商特点和阿里工程师们勇于面对困难的精神,也凝结了阿里工程师和国内高校的高水平团队的心血。随着相关技术难点的陆续攻克,我们发现在当前日新月异的发展大潮中,我们的技术可以帮助社会解决更多、更加重要的问题,对此我们深感自豪。这里我们引用邬江兴院士对本项目的评价作为总结:
“‘面对突变型峰值服务的云计算关键技术与系统’体现了我国科技创新的一种特有模式:超大规模市场中蕴含的巨大技术挑战,让很多只有通过大规模应用的经验及教训反复迭代锤炼的技术能够百炼成钢,而且量变的过程必然会伴随质的飞跃,期间无疑会内生出不竭的科技创新动力。过去大家可能对互联网企业有偏见,觉得他们没有硬件厂商技术含量高,但能满足全球最大规模用户群的需求,背后一定是有全球最顶尖的技术能力支撑的。”