1.引子
弹性计算服务ECS(Elastic Compute Service)是阿里云营收的中流砥柱和流量担当。作为各行业客户新业务和技术创新的发动机和使能者,ECS不仅能在10分钟内交付出一个中等体量互联网公司所需的全部计算力,更能承载阿里集团双十一极大的峰值弹性需求以及互联网巨头客户业务高峰所需的计算力,帮助所有用户打破计算力边界的限制。而默默工作在舞台背后的正是ECS的调度系统,那个传说中的“后羿”。作为一个创建交付了不计其数的虚拟机的资源调度系统,后羿带来的感觉就像蒙娜丽莎的微笑,神秘而好奇。今天就让我们扒一扒“后羿”的前世与今生。
2.上古起源:后羿诞生
时光机回到2009年,那时全球的科技公司都在布局着云计算,演绎的精彩绝伦、百家争鸣,一如当下风口上的区块链、人工智能和新零售。也就在这一年,阿里云初试莺啼,在云计算领域开天辟地,自主研发了盘古、女娲、神农、夸父和伏羲。这些上古大神共同组成了阿里云的云计算基础系统平台--飞天Apsara系统。后羿的诞生也就水到渠成,它基于飞天将计算(Host)、网络(IP)和存储(Pangu块存储)等资源统一调度并通过虚拟化技术生产出一台台可交付给用户使用的虚拟服务器。2010年5月,第一个ECS集群在北京上线了。此时的后羿还是一个单纯的小朋友,干的活就是虚拟机生产线的流程控制,头脑(调度策略)也相对比较简单,因为一个集群内都是同等机型、同一网络Pod、同一个Pangu存储,所以基本都是按静态资源分配的方式进行调度选择。
3.工业革命:野蛮生长
唯快不破!是,就是这么快进入“工业革命”了!虽然后羿还没来得及懵懂几下,但因为ECS上线之后,业务量发展非常迅猛,妥妥地成为阿里云增长最快的业务,没有之一。ECS很快用事实证明以虚拟机的方式出售计算力是云计算商业化最合适的路径,它好比工业时代的蒸汽机,推动着阿里云进入了野蛮生长的时代。
ECS的规模很快达到了近百个飞天集群,而且每周都在继续部署新的集群,加上每周至少发布一个新版本,这样的节奏让我们原来维护和升级后羿系统的同学不堪重负。哇,那些年一起使出洪荒之力的同学,还记得苦苦挣扎的模样吗?伴随着规模的增长,后羿面对的简单小世界一下子变成了星辰大海,调度面临的复杂度与日俱增,需要突破网络Pod,需要突破机房。成长的烦恼不可避免,新的系统架构设计目标,大Region级别的资源管理调度能力,快速迭代开发……
好在借力集团的技术支撑,后羿采用了分布式服务的技术逐步重构演进。这期间最大的挑战是业务在发展,不可能停下来给我们几个月的时间去完成这个任务。我们使用先搭框架、再小步迁移的方案,在不影响业务发展的前提下,把一个一个功能模块,从功能迁移到数据迁移,逐步完成系统升级切换,用时髦的话讲这是给飞行中的飞机换引擎。换了引擎的后羿,从原来的单集群管控系统,升级到了基于分布式服务架构实现的大Region多机房管控系统;调度策略由原来的集群内简单的资源分配模型升级到目前经典的过滤器+权重因子评分模型;管理规模也由一套管控对应最大数百台物理机的集群变成了目前的一套管控可以管理数万物理机规模的集群。经过工业革命的锤炼,我们的后羿小伙子长大成人了。
这个时期ECS逐步完善的上层业务系统,主要提供了几大能力:
标准化的ECS Open API接口,对接官网售卖和API用户;
售卖约束,接入阿里云计费系统,实现了ECS特有的计费模式(包年包月、按量付费等);
在集群粒度配置业务属性和售卖规格,按用户的需求调度集群;
基本的库存服务和水位控制。
4.信息时代:渐入佳境
如果说工业革命时代是规模这个单维度纵向量的高速发展,那么信息时代则是个性化、多元化的多维度发展。一方面,ECS吸引了越来越丰富的客户群体,需求越来越多样化,包括不同的价格需求、稳定性需求、地域需求等等,这就需要ECS包装出不同特点的产品满足不同的客户场景。另一方面,ECS相关的技术爆炸也带来了“百家争鸣”的盛况:虚拟网络团队重点推出了用户可以定制的VPC网络;块存储团队推出高性能的SSD云盘和高性价比的混合SSD云盘,而ESSD云盘则实现了性价比和高性能的雌雄同体;虚拟化团队从最初的Xen全面迁移到KVM,同时推出了异构计算GPU、FPGA虚拟化技术,并开始自研新一代的弹性裸金属云服务器(神龙)。如此多的新产品和新特性对接的是底层几十种物理机型、多种网卡和网络架构、多种虚拟化方案和虚拟存储以及多种版本的虚拟网络。实现产品到资源的精准调度,并最大化资源使用效率,这,就是信息时代下的后羿系统需要提供的基本能力。
在野蛮生长期,集群级的调度由上层业务层负责、集群内的调度由后羿负责,因为当时每个集群部署一种业务,团队的设置也是按这样分两层。但现在为了支撑丰富的产品形态和优化库存效率,同一集群内的每个物理机都可能售卖不同的产品规格,原来那种分层的调度显然已经不合时宜了。我们进行了一次合体手术,重新定义了上下系统的职责分工,上层业务系统负责业务功能,下层后羿系统负责所有的调度相关逻辑。统一了调度逻辑,不仅仅大大提高了后羿的调度能力,同时可以让调度技术驱动产生了更多丰富的产品形态。列举下这个时期调度技术主要支撑的系统功能和产品:
弹无虚发-的精准调度
后羿基于Tag标签对资源进行分组和筛选,可在AZ大范围内实现精细的产品规格调度。丰富的权重因子,让后羿可以在多个目标下权衡出最优的调度决策,最佳配比装箱(最少碎片)那是最低要求,其他的随便举几个例子:
Deployment Set:满足用户自定义的部署位置要求,例如物理机粒度打散几个VM
资源消费打散:保障性能SLA,提升用户体验
客户VM打散
机架功耗平衡
……
神机妙算的库存精细管理
其实VM调度只是后羿的业务爱好,库存管理才是后羿的本职工作。由于产品形态的多样性,同一个地域同一个产品规格按不同付费类型、不同的付费时间计算出来的库存数据都是不同的!很多人知道电商的必杀技之一就是库存和供应链管理,后羿其实就是一个在网上卖VM的掌柜而已啦。他在背后可是耍了很多小聪明的:
库存水位控制:保障每个可用区的每个产品的在接近断供时可以保障刚需弹性扩容和升级需求;
库存共享:应付多种产品的不时之需;
库存预测:预测销售并相应地进行库存调配
卖跳楼价的竞价实例
1折的跳楼价后羿掌柜也敢卖?!是的,他已经卖好久了。这是一种叫竞价实例的游戏,而在游戏中坐庄的正是后羿。说白了,他就是把那些暂时空在那里的资源拿出来临时卖一下。为什么是”临时“?因为后羿在库存充裕时才卖竞价实例,库存紧张时就要收回去。但是回收实例也是有讲究的,不是随便回收的,比如要保证至少运行1小时,要提前5分钟通知,如此等等。那为什么要竞价?在资源紧张的地区多卖点钱?其实更重要的是跟库存的联动,是一种价格杠杆,让客户主动去选择价格便宜库存充足的地区和规格。这其实就是调度客户,背后的道道其实真不少。
火中取栗的性能突发实例
竞价实例虽价格便宜,量又足, 无奈的是因为它会被随时中止释放,所以适合的业务场景有限或者需要技术能力架构适配才能愉快使用。 有没有价格便宜,又不用担心被释放的高性价比实例类型呢?价格便宜、服务有保障的性能突发实例了解一下。这是后羿掌柜和ECS强大的虚拟化团队的一次高水平运作,可谓火中取栗。但在强大的技术保障下,后羿把一个物理线程掰成小片片拿出来卖,而且还能保障SLA。计算力在空闲时积攒人品(Credit),在需要突发计算力时来消费人品(Credit),未来还能拿钱来买Credit。
- 智能未来:演绎神话
未来的大门已然开启,智能的时代已经到来。在经历了野蛮生长和丰富功能的阶段后,后羿步入了深水区,需要更多的智慧和更广阔的视野来精耕细作。云计算的核心竞争力之一就是性价比,后羿未来要做的就是数据驱动的全链路、精细化的库存调配和调度一体化的大闭环,并在各个环节上挖掘使用更智能的方法带来的红利,从数据的可视化、到运营的自动化到最后实现综合的智能化。
后羿的故事还在继续。伴随着ECS业务的发展,风风雨雨的路上,我们眼里一路奇峰异景,执着前进!块存储、虚拟化、虚拟化网络、ECS管控,一群有情有义的兄弟姐妹,一个凝聚力彪悍的团队。当然,后羿是站在了巨人的肩膀上,他的成长离不开飞天云计算平台强大的核心技术和阿里云各个产品的All-In支持!很庆幸在阿里集团,兄弟团队无私的合作和帮助,能让后羿未来真正可以成为一个业界的神话。