一、背景
第七届世界军人运动会是中国第一次承办综合性国际军事赛事,有 100 多个国家、一万多现役军人参与竞技。武汉军运会票务系统建设和票务运营由大麦网承接,使用阿里集团基础技术能力,通过大麦麦座票务系统提供票务管理、售卖和现场换验服务。
大麦麦座票务系统(简称“麦座”)定位于现场娱乐的一站式行业服务平台,结合阿里的大数据、云计算等能力,为场馆向数字化、智能化的升级提供行业解决方案。麦座基础架构经历了从单机软件部署到阿里云的商户独立部署,再到 SaaS 化的演进过程。
目前麦座系统利用阿里巴巴的 pouch 容器,采用微服务的架构,为大量商户提供统一的服务。多用户共享服务的架构,实现了资源利用的最大化,方便版本的统一维护和升级。当承载军运会等大型赛事,或者面对头部 KA 客户时,从安全、稳定性角度考虑,需要做独立部署和流量隔离,从而避免突发流量影响到 KA 客户。
二、目标
针对军运会的场景,我们需要满足:独立部署、流量隔离。在满足独立部署和流量隔离的基础上,需要满足:
对开发尽量透明:尽可能少的定制和代码侵入,对开发透明,不能因为独立部署增加额外的开发和运维成本;
独立部署的容器与普通分组的容器完全等价,且可以动态的切流:某个环境宕机的极端情况下,能够快速切换,保证业务正常运行。
三、方案选型
为了实现独立部署和流程隔离的目标,同时支持动态切流,我们调研了单元化、独立应用、环境配置项、通过流量打标进行路由的方式。
通过对四个方案的比较,我们最终选择流量打标路由的方式。阿里巴巴中间件 Dpath(Dedicated path),在请求中添加流量标识,通过 Diamond(持久配置管理中间件)把 Dpath 的打标规则,推送到各个应用容器。RPC、消息队列等中间件根据流量标和 Dpath 规则,进行路由,选择相应的应用分组。
Dpath 实现的需求:
1)针对特殊流量可以圈定一些特殊机器作为他的专属的服务器,以便对特殊流量进行特殊保障或者测试;
2)普通流量不应该使用专属服务器,特殊流量可以按需使用普通服务器;
3)整个链路上的专属服务器组成了特殊流量的专属通道,类似公交专用道。
基于 Dpath,我们需要实现:圈定专属服务、识别特殊流量、在链路上引导流量到对应的服务器。
四、HTTP 流量路由
我们为每个应用申请独立的应用分组,专门为军运会提供服务(下文称为军运会分组)。然后在 Dpath 创建独立的环境,选择对应的分组,组成军运会的集群环境。通过统一接入层,为军运会分组配置独立的域名。在 VipServer 进行配置,军运会域名的请求关联军运会的分组。当某个分组宕机等原因导致服务不可用时。修改 VipServer,把域名的关联切换到可用分组,保证流量的动态切换。
五、RPC 流量路由
RPC 的流量可以分为麦座内部系统的相互调用和麦座外系统的调用。针对麦座的内部流量,当请求经过某个分组时,自动在链路的上下文中打标。常见的 RPC 中间件(如 Dubbo)支持路由规则的配置。针对外部的流量,在 Diamond 中配置路由规则。Diamond 把 Dpath 的路由规则推送到各个容器,包括流量标识和应用分组的映射关系。RPC 中间件根据 Dpath 规则和流量标识,选择对应的分组。
六、MQ 消息路由
Dpath 支持消息队列的路由。Dpath 通过为消息消费者(Consumer)配置消息 Filter 方式实现。不同分组的 Consumer,注册时在用户配置的 ConsumerId(cid)基础上添加后缀。普通分组和军运会分组都会接收到所有的消息。消息的生产者(Producer)发送消息时根据自己的机器分组,在消息体内打标。Consumer 在消费消息之前,添加消息的过滤器。根据 Consumer 自己的机器分组,过滤掉非同分组的 Producer 发送的消息,仅消费同分组的 Producer 发送的消息。
七、效果
通过 Dpath,我们用低成本的部署,实现了独立部署和流量隔离。保障业务功能快速升级,同时兼顾最低维护和运行成本,保障流量和风险隔离。整个军运会从上线到闭幕期间,整个售卖过程非常顺利,无任何问题和故障。
作者介绍:
阿里文娱技术专家 司楚
相关阅读
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论