北京冬奥会已经成为收视最高的一届冬奥会,在转播时长、技术、内容制作方式等多方面都书写了新记录。云技术的应用,是本届北京冬奥会赛事转播的一大特色。
而云原生作为云计算的新界面,如何稳定支撑北京冬奥会多个业务系统?
九大业务场景,打造冬奥会,体验「稳稳的」
业务场景一:奥运票务,践行ACK Anywhere,落地云边一体
票务系统是阿里优酷奥运小组依托大麦原有的现场服务能力,提供的奥运换验服务。主要承载现场售票的验证服务,提升现场服务安全、稳定性,力保为冬奥观众提供丝般顺滑的现场服务。
为了降低验票的时延,提升奥运观众的入场速率,票务系统需要分别部署在每个奥运场馆中,实现验票流程的本场馆闭环,充分发挥边缘计算大连接、低时延的优势,提升票务的验票体验,减少奥运观众排队等待时间。但是由于票务系统分散部署在每个奥运场馆中,奥运场馆距离都比较远,为了安全考虑,部署在奥运场馆的服务器不允许有公网 IP,每个奥运场馆都有自己的内网环境,这对于票务系统的开发、测试、验证和升级部署运维都带来了很大的挑战。若每个场馆安排几位应用交付人员去做应用的升级和部署工作,成本太高,效率太低。
工作人员现场验票
基于以上考虑,票务系统团队希望开发人员能够在云上开发、云上管理运维这些边缘侧节点和应用,实现云与边的一体化运维能力,因此急需要一套云边一体的架构和平台去支撑。
阿里云边缘容器服务(简称 ACK@Edge)是一款提供标准 Kubernetes 集群云端托管,支持边缘计算资源、业务快速接入、统一管理、统一运维的云原生应用平台,能够帮助用户轻松实现云边一体化协同。用户利用 ACK@Edge 通过纳管边缘节点将云上应用延伸到边缘,联动边缘和云端的数据,使得边缘节点拥有云端相同能力。在云端提供对边缘设备、边缘应用的统一 Ops 能力,保证边缘设备及边缘智能应用少运维、高可用。
基于ACK@Edge 云边一体、Kubernetes 容器编排调度的能力,以及 ACK@Edge 在Kubernetes 之上针对边缘场景叠加的如边缘自治、边缘单元化、单元化部署、Tunnel 通道的能力,切实解决了票务系统应用运维的痛点,最终承载了北京、延庆、张家口三地冬奥会、冬残奥会所有比赛场馆及鸟巢开闭幕式现场票务服务的统一管理和运维业务。
ACK@Edge 针对于 Kubernetes 在边缘计算场景提供了独有的增强型功能:
- 节点单元化-边缘节点池:分别每个奥运场馆代创建了对应的边缘节点池,奥运场馆的边缘服务器可以快速接入到对应的边缘节点池中。
- 应用单元化-单元化部署:票务系统通过 ACK@Edge 的单元化部署 UnitedDeployment,将业务部署到不同的奥运场馆的边缘服务器中, 实现了在云上统一分发应用、统一运维的能力,业务人员无需现场部署,即可实现全部奥运场馆票务系统的快速升级部署工作,此功能在票务系统上线过程中发挥了重要作用。
- 云端运维,远程调试:ACK@Edge 提供的 Tunnel 通道, 可以让业务人员快速查看容器日志和进入容器调试。
- 边缘自治:ACK@Edge 的边缘自治能力,可以在云边网络断开、主机重启这种极端情况下, 还能保证本地边缘服务器上的业务能正常运行。期间,ACK@Edge 团队与票务系统团队做了大量的断网、重启操作,最终证明票务系统始终正常提供服务。
截至目前,ACK@Edge 基于云原生的云边一体架构, 已经广泛用于 CDN、IoT、智慧物流、工业大脑、新零售等诸多场景。本次冬奥会票务系统的完美保障,进一步验证了ACK@Edge 在云边一体、边缘计算领域的价值。同时阿里云将 ACK@Edge 全部核心代码贡献出来,成立了 OpenYurt 开源社区。OpenYurt 作为 CNCF 的沙箱项目,秉承着开放、自由、中立的态度,吸引了大量来自于 VMware、中国电信、浙大实验室、中国联通、中国移动等公司和组织的众多开发者参与。在《2021 中国开源年度报告》中,OpenYurt 项目进入 CNCF 中国项目活跃度 Top 10。未来,阿里云会在边缘计算领域拓展更多的业务场景,通过不断打磨产品能力、壮大开源社区,来更好的服务社会。
业务场景二:奥运轻应用,基于容器服务 ASK 快速交付
因新冠疫情影响现场,现场观赛要求比较严格。PinQuest 推出奥运主题冒险类手游,可以让用户在手机上开启属于自己的“冬奥探险”之旅,让大众通过新奇、有趣的线上方式,增强与赛事的交互体感。
赛事的不同导致游戏在线人数实时变化,因此需要具备极致弹性的能力。该游戏基于 ASK(阿里云容器服务 Serverless 版)提供的极致弹性能力部署关键模块,后台服务可实时扩容,让用户体验如丝般顺滑。
ASK 集群是阿里云推出的无服务器 Kubernetes 容器服务。用户无需购买节点即可直接部署容器应用,无需对集群进行节点维护和容量规划,并且根据应用配置的 CPU 和内存资源量进行按需付费。ASK 集群提供完善的 Kubernetes 兼容能力,同时降低了 Kubernetes 使用门槛,让用户更专注于应用程序,而不是管理底层基础设施。
业务场景三:冬奥核心系统,从容应对大规模突发网络流量
冬奥核心系统是整个冬奥会和冬残奥会信息服务的重要载体,集成赛事相关信息,提供服务功能模块,实现“一个 APP 走冬奥”的个性化服务,也为赛会组织和运行提供移动通信协同和共享服务平台。冬奥核心系统是奥运会最重要的赛时核心系统之一。
其中,冬奥移动服务由北京冬奥组委提供,主要提供赛事信息、即时通信,以及冬奥会交通、餐饮、住宿、抵离、场馆等业务领域的移动信息服务功能。城市移动服务主要提供场馆以外的吃、住、行、游、购、娱等服务信息。举个例子,健康填报功能与运动员息息相关,海外抵达的运动员需要在冬奥通上进行健康填报,才可以顺利开启比赛计划,这只是冬奥核心系统功能的一个例子。总的来说,稳定性至关重要。
冬奥核心系统基于 ACK 集群实现了前端、代理和后台等服务。在这些种类繁多的业务中,系统统一页面入口部署在 ACK 集群上,也就是说客户的流量需要经过 ACK 才能访问到如上各种丰富的后台服务,流量链路非常复杂。
压测期间,在高流量、高并发访问的场景下,客户端请求错误率持续上升,成为上线阻碍。接到问题请求后,阿里云容器服务 ACK 团队第一时间会同客户在集群的各级链路部署了性能观测埋点。经过排查,ACK 团队发现该业务链路以短连接请求为主,作为流量入口的七层 SLB 在高并发场景下会高频地复用源端口,产生五元组冲突。经过详细验证,通过优化 Time-Wait 状态 TCP 会话的回收时间等手段,将压测流量提升到原来两倍,错误率降低到 0%,解决了冬奥核心系统上线前的一个重要的阻碍点,最终成功保障了冬奥会全程的稳定。
冬奥核心系统后台应用为 Java 系的微服务架构,包含了近千个 Kubernetes 的 Deployment 应用实例,这些应用实例混部在集群的大量节点上,既要高效的利用资源,又不能让这些应用间互相影响,这给资源的共享和隔离带来了比较大的挑战。
容器团队通过节点超卖评估、JVM 内存参数检查、Pod 资源调优、Pod 瓶颈和 OOM 实时监控等手段,对应用配置做调优,使集群的资源利用率和业务稳定性达到平衡。特别是在 JVM 本身的内存管理和实际的 Pod 内存限制带来的一系列匹配问题上,ACK 引入了自动化评估配置合理性的手段来快速发现异常的内存配置,避免冬奥会期间应用的 OOM 的产生,保障了赛事期间的应用稳定性。
业务场景四:奥运新闻发布平台,平稳运行背后的一站式容器智能诊断
InfoAV 是北京冬奥会的新闻发布会平台,承接了本届奥运会全部发布会的直播、导播、点播的核心功能,涵盖如赛前采访、赛后运动员群体采访等。最初,客户基于自建 Kubernetes 部署 InfoAV 业务,但是遇到了无法同城容灾、运维困难等问题。
采用容器服务 ACK 后,显著加快了业务的上云和迁云。InfoAV 所在的 ACK 集群不论是 Kubernetes Master 还是 Kubernetes Worker,都实现了同城多数据中心级别的高可用和容灾能力;InfoAV 使用了 ARMS 丰富的可观测性能力,高精度观测到Kubernetes 集群资源、组件、流量等指标,有力提升了客户的保障能力。
架构上,InfoAV 基于 ACK 部署的业务包括视音频编辑、媒体内容管理等业务。InfoAV 系统的业务特点是计算密集型、负载高,因此 ACK 提供的快速全面的日常巡检能力,显著提升了保障的可靠性。
InfoAV界面,新闻发布会现场
业务场景五:奥运全球化业务,云原生应用制品安全托管和高效分发最佳实践
北京冬奥的容器化业务,无论是在线场景的 APP、InfoAV 业务,或是边缘场景的奥运票务业务以及 Serverless 场景下的 PinQuest 游戏业务,都对业务应用容器镜像分发的安全性、稳定性、规模化提出了不同要求。北京冬奥业务扩大至全球多个地域,启用了 10+ ACR 实例来保障冬奥业务容器化应用部署、扩容、快恢等链路。
阿里云容器镜像服务(简称 ACR)是云原生架构重要基础设施之一,负责托管和分发云原生应用制品。其中 ACR 企业版为冬奥业务提供企业级云原生应用制品安全托管及高效分发能力。
本次冬奥业务涉及近 200+ 应用容器镜像,通过 ACK、ASK、ACK@Edge、EDAS、ECS 多种形式在边缘、Serverless、在线场景下进行部署,保障容器镜像的安全性,确保复杂场景下的稳定、高效分发。
针对冬奥业务的安全性要求,ACR 企业版提供公网、VPC 访问控制能力,控制业务应用容器镜像更新及分发源;同时针对容器镜像本身的安全性保障诉求,ACR 企业版提供了涵盖容器镜像漏洞扫描及修复、容器镜像加签及验签、分发安全阻断等云原生应用交付 DevSecOps 能力,进一步降低业务应用发布更新后的潜在风险。
针对边缘场景,ACR 企业版支持在边缘节点中部署边缘前置实例,提供分发缓存、边缘 P2P 组网等分发加速能力,提升云边互联场景下容器镜像分发效率。此外针对全球化业务,ACR 企业版也提供了全球同步能力支持容器应用全球多地域部署、容灾业务。
除业务链路保障外,在本次冬奥会保障过程中,借助于企业版实例全景监控及业务异常分析,ACR 企业版能够快速识别用户业务应用容器化部署异常并反馈给客户,让客户能够第一时间解决因凭证、权限、配置错误等原因导致的应用发布失败问题。同时依托于集群事件及监控实现全链路容器镜像分发问题识别及诊断,如本次冬奥会过程中识别到节点重启后 DNS 短暂解析异常导致节点拉取镜像失败(即应用恢复失败)的现象,能够让客户提前更合理地规划应用水位,提升应用整体稳定性。
业务场景六:数据交换与共享平台,基于云原生微服务的“数据中台”
2022 年北京冬奥会和冬残奥会数据交换与数据共享平台(以下简称交换共享平台)负责为组委会提供委内系统、组委外专线数据源以及互联网数据源的数据交换、数据共享服务,是名副其实的“数据中台”。此系统是所有云上核心系统群的数据中枢和数据大脑 ,承担了云上数据汇聚、数据过滤、数据投递,以及数据保护的功能。
交换共享平台基于 Spring Cloud 微服务架构设计,并依托企业级分布式应用服务 EDAS 实现了应用全生命周期管理、微服务治理能力和环境隔离管理能力。EDAS 企业服务助力交换共享平台完成了快速上云、迭代发布和运行支持。
- 应用生命周期管理:EDAS 对业务所在的 ECS 集群进行管理,提供应用分批发布、灰度发布等丰富的发布策略,以及变更记录、日志查询等功能,大大提高了交换共享平台的应用发布和运维管理能力。
- 微服务治理:提供应用监控、限流降级、全链路灰度等功能,确保了交换共享平台的高可用性。
- 环境隔离管理:通过微服务空间划分了生产环境和测试环境,保证环境之间数据、流量隔离;并支持服务东西向鉴权,确保交换共享平台的安全性。
本次冬奥会秉承云上绿色奥运理念,围绕赛事直播、数据发布、人员管理等多个场景构建了类似 ADS 人员抵离、MDV 数据大屏、InfoAV 数据发布、RHP 约车出行等 20 多个数字化管理系统。这些系统之间伴随业务逻辑会产生大量数据交换的需求。
由于业务子系统众多、业务逻辑分类复杂,传统的系统间同步调用会导致各子系统耦合度大幅提升、系统数据链路治理困难等问题。北京奥组委技术架构组采用了基于消息队列构建统一的 DES 数据交换平台,通过规范化数据格式和通信方式解决系统的耦合性和复杂性问题,为组委会内部系统、组委会外部专线数据源以及互联网数据源提供数据交换、数据共享服务。
在北京冬奥会 DES 数据交换平台中,使用阿里云 RocketMQ 构建了底层的异步可靠通信通道:
1. 各方数据源子系统通过统一的 API 规范上报数据到 DES 网关。
2. DES 网关进行数据格式、权限校验后,进行简单数据封装和格式转换,写入到后端的 RocketMQ 主题。
3. 下游数据消费方子系统订阅 RocketMQ 主题获取自身需要的数据,实现和上游系统的完全解耦。
冬奥会期间,基于 DES 数据分发平台传输的数据有两类,一类是任务同步型数据,例如需要的人员注册信息,核心 OMS 系统生成注册信息后推送到 DES,再由冬奥核心系统后台订阅拉取人员信息实现登录认证;另一类实时通知类数据,例如赛事赛程、奖牌榜和气象数据,通过内部 ODF 系统产生实时成绩数据并发布到 DES,再由消息队列推送到下游系统做大屏展示。
业务场景七:RocketMQ承载冬奥ADS抵离和RHP约车出行突发流量
冬奥期间,伴随着国内外众多人员的出入境和日常出行需求,北京奥组委技术架构组为人员出行管理设计实现了 ADS 人员抵离系统以及 RHP 约车出行系统。ADS 人员抵离系统负责从首都机场和移民局接收人员的抵离行程信息和出入境信息,写入后台管理系统,方便后续推送处理。RHP 约车出行系统则需要管理大量的网约车订单管理。
由于冬奥期间人员流动存在极大的不确定性,出行人员的出入境和出行数据处理存在不确定的流量压力。北京奥组委技术架构组在实现数据处理过程中,使用了阿里云消息队列 RocketMQ 来做流量缓冲和可靠数据传递,系统链路如下:
- ADS 和 RHP 的网关系统接收来自外部的数据调用,校验合法性。
- 网关系统内置 RocketMQ SDK,将流量调用写入 RocketMQ 消息做异步缓冲,避免突发流量打垮后台数据库等系统。
- 后台处理系统异步消费消息实现流量平滑写数据库等系统,如果遇到写入问题则使用 RocketMQ 可靠重试机制做重试处理。
借助 RocketMQ 亿级堆积能力和海量并发写能力,RHP 出行系统平滑承载了冬奥期间 6000+ 司机乘客的出行管理需求以及全部人员的出入境管理和推送需求。
业务场景八:云端一体,MQTT支持央视新闻App海量用户评论转发
央视新闻 APP 中,在直播间使用微消息队列 MQTT 版实现用户的评论发送,接收其他用户的评论信息。2 月 4 日,央视新闻 APP 直播了冬奥会的开幕式,开幕式开始后,微消息队列 MQTT 版平均消息并发数十万,当中国队出场时,评论区沸腾,2 分钟内达到了百万,全程上、下行消息总量数十亿。
阿里云微消息队列 MQTT 版是基于开源 MQTT 3.1.1 协议构建的端与云互通的消息中间件,适用于物联网,移动互联网业务场景。通过 MQTT 客户端-服务器的消息发布/订阅传输模式,为低带宽和不稳定的网络环境中的设备提供可靠的消息传输服务。而且,在业务高峰期如果出现了性能瓶颈,通过微消息队列 MQTT 版的负载均衡消息推送能力,只需要快速升级规格增加应用实例的数量,就能对用户无感实现水平线性的应用消费能力提升。
通过使用微消息队列 MQTT 版,开发者不需要在应用层关心弱网络环境、断线重连、异常处理、海量并发、系统高可用等复杂的技术问题,极大程度上降低了开发成本,提升了用户体验和业务的快速上线。
业务场景九:极速生成缩略图,Serverless支撑赛事转播
视频缩略图是在视频中某一帧动画的缩略图,相当于将视频的封面或其中一帧的画面内容转换成了图片文件,选取的视频缩略图能够把视频中亮点画面突出显示,快速抓住用户眼球,提高点击播放率,赛事视频缩略图与普通视频缩略图有些不同,需要对海量视频做更为快速实时的抓取。
函数计算支持的客户需要对北京冬奥会的海量比赛直播视频进行实时处理,在直播视频里的不同时间点上做截屏(专业术语 "视频图片采集"), 客户的需求如下:
- 需要定时事件触发截屏操作
- 客户只想集中精力在具体的逻辑开发, 核心视频截图逻辑代码量不大, 需要快速完成开发
- 客户不希望管理部署虚拟机/物理机,希望越简单越好
- 客户需要这个核心业务逻辑具有弹性高可用, 免运维
通过使用阿里云函数计算(FC),用户开发了视频截图的核心业务代码,开发成本低,一键部署,即得到了一个弹性高可用免运维的直播视频截图服务,帮助实现冬奥视频亮点实时抓取。
全面的保障体系,为冬奥会护航
在此前的东京奥运会上,阿里云容器服务 ACK 通过一体化运维、全场景诊断和完善的保障体系支持了奥运会的顺利运行。而本次的2022北京冬奥会,容器服务 ACK 加强了保障能力,提供新的数据化、精细化运维,打造更立体的护航保障体系。
数据化运维
容器服务 ACK 的统一运维平台集成了全网集群的监控、告警、事件、日志、巡检、元数据管理等功能,可以实时观测、管理全网 24 个地域的数万集群。但数据源分散异构且碎片化让运维压力较大,无法做关联分析,因此容器服务 ACK 按照标准的大数据体系构建数仓平台,将数据统一清洗并结构化存储,并按统计需求进行分层建模,提供富有运维语义的实时+离线数据模型。
建模好的数据可以直接绘图分析或用于报警,如量化集群健康程度:通过组件配置、监控值、事件/日志异常、历史水位等计算组件健康分,然后结合节点、工单、配额规格等加权计算集群整体健康分。再以该模型为基础,绘制宽表并按多维度聚合,展示高危项,并统一治理健康分低的集群。
异常分析
容器服务 ACK 运维平台将集群 Events 和组件日志进行清洗并统一格式存储,针对异常内容进行告警和趋势分析。对全网各类型集群进行异常归类,提前发现,并专项分级解决,保证核心业务重要时段不受影响。
同时,以 SLO 定义驱动可观测性体系,针对 Kubernetes 的容量规模建设性能压测常态化能力,对 Kubernetes 集群核心 Verb 的 QPS 数有明确了解,同时结合不同工作负载场景进行 SLO 梳理,持续关注请求量、延迟、错误数、饱和度等黄金指标。
集群级别灰度和封网
对于重保活动,容器服务 ACK 有完整专业的预案管理体系,大型活动保障期间遵循阿里云整体的管控计划,执行特定范围、特定时段的封网。本次北京冬奥会,ACK 将封网管控细化到集群级别,对重保集群的运维操作需要单独申请特定权限,读写操作分两级申请,发布变更需要走特殊审批流程,一键回收已有权限并重新下发特定人员。
通过细化到集群维度的灰度管控,可以更严格的控制风险范围,同时避免大范围拦截,影响常规运维。
完善的保障预案体系
针对奥运会,容器服务基于已有的保障流程,针对性地制定了全程保障方案,包括提前预案、应急预案、故障演练、值班排期等。容器服务有丰富的保障经验,每年例行的保障活动包括每年的双十一、618、春节等,这些大型保障活动复杂而全面,容器服务每年在这些活动过程中取得了近乎 0 故障的佳绩。
除了上述重大保障活动,容器服务内部有常态化的基于混沌的故障演练和突袭,混沌系统随机注入故障,容器团队值班人员会收到告警并根据预案系统中的预案,立即进行处理;经过常态化的训练,团队的应急处理能力锤炼得成熟默契,可以很好的实现 1-5-10(1 分钟内发出警报、5 分钟内定位故障、10 分钟内修复故障)的目标和方法论。这些经过实战反复打磨的保障体系,运用到了奥运会保障专项中,有力保障和支持了奥运会的稳定运行。
对奥运集群的提前预案,在赛事开始前会对每个奥运重保集群实施,可以最大程度上发现并提前消除风险点。巡检方式包括千舟平台和自动化巡检脚本,检查项目覆盖集群节点和组件的水位和状态、网络流量、Pod 是否按可用区打散、关键组件(CoreDNS、Ingress Controller 等)配置和技术指标、Kubernetes 事件等多维度;执行每日巡检的机制,可以持续发现新增问题,并快速反馈客户修正。
以 ACK 集群的 Apiserver 相关的预案为例来解释一下。ACK 具有精细化的流控策略,可以针对压测和故障演练过程中发现的异常进行防护能力建设。具体实现上,阿里云容器服务内置了自研的 UserAgentLimiter 进一步做精细化限流,更加全面的保障 Kubernetes。Apiserver 应急预案可以基于如上策略,快速下发限流配置,秒级稳定 Apiserver,快速恢复集群。
完善全面且持续迭代的应急预案,是故障发生后快速止血、保障业务的必备武器。针对北京冬奥运会保障,容器服务 ACK 和容器镜像服务 ACR 准备了针对中心管控和运维、管控链路、用户面、数据面 4 个大类的几十个应急预案并多次演练,全面覆盖高风险故障场景。确保如果险情发生,保障人员有严谨的步骤和流程来逐步操作,显著提升了应急响应的速度和效果。
极致的弹性能力
大型赛事、直播等业务场景,往往伴随着特定时间点的突发业务流量,对系统的压力也是实时变化的。阿里云消息队列提供 Serverless 按需服务能力,业务规模 5000 TPS 并发以内可以实时弹性,业务完全无感。超大规模并发也可以随时升级铂金版规格,分钟级平滑扩容,单实例最高支持 100 万 TPS。
在冬奥开模式期间,央视直播客户端大量的用户直播评论带来系统压力的上升。微消息队列 MQTT 版及时扩容到单实例 100 万 TPS 规格,极强的弹性能力保障了系统的稳定运行。
不说再见
北京冬奥会已经闭幕
但云原生的保障护航还在继续
在即将到来的冬残奥会
我们也将全力以赴
稳稳的!