教材上的案例,看一下即可。
1. 背景和挑战
某旅行公司登录香港联交所主板挂牌上市,成为港股 “OTA第一股”。财报显示,2021年上半年,某艺龙MAU约为2.56亿元,其中在第二季度, MAU达到2.8亿元,同比增长58.3%,创下了历史新高。业务量的增长让某旅行的技术团队感到欣喜,但另一方面这也意味着团队需要直面高流量带来的新挑战,云原生改造成了解决问题的关键。
2019年,某旅行公司主要面临两个问题。首先,由于刚和某网完成公司主体合并不久,两个前身公司各自存在着不同技术体系的构建、发布等系统,这些系统随着公司业务的逐步整合,也必须在技术层面做进一步的收敛,以达到平台统一的目的。同时,在线旅行业务具有较明显的业务波动特性,在季度、节假日、每日时段上都有比较突出的波峰波谷特性。这样的业务特性对技术资源的整体利用率波动影响较大。所以此次云原生改造也面临了不小的挑战。
2. 基于云原生架构的解决方案
2.1 改造第一阶段
某旅行技术团队为了提升集群资源利用率,降低资源使用成本。利用云原生思维重构部分技术体系,将多套旧有系统合并、收拢到一套以云原生应用为核心的私有云平台上,同时将 IDC、 物理网络、虚拟网络、计算资源、存储资源等通过laaS、PaaS 等,实现虚拟化封装、切割、再投产的自动化流程。
基础层面,为了支持IaaS 层的网络虚拟化,运维人员选择了 Vxlan、 大二层技术,并用KVM作为计算资源的切割。在容器网络虚拟化这部分,考虑到要降低损耗,采用了 BGP、Host网络模式等技术,同时开发了绑核、 NUMA等相关技术。容器存储方面,远端存储选择了Ceph, 本地层使用块存储设备、 NUMA设备等。异构资源侧则采用了GPU 改 CUDA library 的方式来完成虚拟化的切分和分时复用。技术团队将资源调度变成了利用时序数据预测应用规模的方式,提升了资源利用率。
但是在改造完成后服务部署时,有大批量的物理机都出现负载上升的情况,原因是低版本的 Java 程序无法准确识别容器里的规格,导致GC(Garbage Collection) 时频繁发生资源争抢。由于无法确定其他语言是否会出现同样的问题,研发团队开发了垂直扩缩容,确保 GC可以使用更多的计算资源。另一方面进行了 JVM 版本升级,并且还引入了隔离性较强的 Kata Container 来彻底解决该问题。
第一阶段改造完成后,平台开始服务同程旅行的大部分在线业务。
2.2 改造第二阶段
随着服务器集群规模的扩大,部分机器开始频繁出现故障。此时,保障服务稳定性成了第二阶段改造的首要任务。基于公有云、私有云和离线专属云集群等新型动态计算环境,某旅行公司的技术团队帮助业务构建和运行具有弹性的云原生应用,促进业务团队开始使用声明式 API, 同时通过不可变基础设施、服务网格和容器服务,来构建容错性好、易于管理和观察的应用系统,并结合平台可靠的自动化恢复、弹性计算来完成整个服务稳定性的提升。
技术团队将公有云的镜像预热、分发,专线直连内网机房,解决了内网集群需要镜像快速分发等问题,依赖的缓存资源和持久化数据实现了常驻云上,离线资源所在的专有云集群也同步被打通。同时,依托弹性计算能力,团队将集群间资源使用成本降到最低,并将最高服务稳定性的智能化调度平台的服务动态部署在多个集群上。针对业务专有需求和特殊,平台可以输出基础设施API和基础能力API, 供业务构建自己的云服务。
为了解决应用出现了明显的卡顿,影响到用户体验的问题,团队通过弹性计算改造为业务快速提供支持,之后又尝试了Scale Zero等方式,最终将该业务的资源使用量降到了之前常备资源的20%。
2.2 改造第三阶段
2021年上半年,某旅行公司进入到云原生改造的第三个阶段。通过基础组件、服务的云原生改造、服务依赖梳理和定义等方式,使应用不再需要考虑底层资源、机房、运行时间和供应商等因素。此外,某旅行公司还利用标准的云原生应用模型,实现了服务的跨地域、跨云自动化灾备、自动部署,并向云原生场景下的 DevOps 演进。某旅行公司云原生平台架构图如图14-5所示。
3. 应用效益
通过第一阶段改造,订单业务从原先独享机器集群切换到了共享机器集群,仅使用之前独享机器集群40%的机器就完成了对全线服务业务的支撑,同时由于调度算法加入了自研的服务画像技术作为默认调度属性,资源调度的稳定性不降反升。并且同程旅行已实现纳入到该平台部分单机资源利用率提升了20%,并通过云原生化的旧应用改造,下掉了当时集群内一半的服务器和相应的机房水电资源。
通过第二阶段改造,原本用来应对季节性流量高峰期而采购的机器资源开始减少。通过判断服务当前冗余度来缩容线上服务的实例数,平台可以用最小的实例数量提供线上服务,而节省下来的资源可以提供给离线业务混合部署使用。并且在不额外新增机器的情况下额外获得的算力,成功支持了屡次创纪录的峰值流量。同时 Service Balance 系统可以在服务性能受损时自动尝试修复该节点性能,使得平台能够以较低的成本稳定运行。并借用弹性计算成功撑住爆款应用带来的日常流量300%的峰值流量,也顶住了2021年上半年的屡次刷新公司峰值流量,为公司同类业务场景提供了坚实的技术支撑。