本文为《蚂蚁金服 Service Mesh 大规模落地系列》第五篇 - 网关篇,该系列将会从核心、RPC、消息、无线网关、控制面、安全、运维、测试等模块对 Service Mesh 双十一大规模落地实践进行详细解析。文末包含往期系列文章。 引言本文结合无线网关的发展历程,解读进行 Service Mesh 改造的缘由和价值,同时介绍在双十一落地过程中如何保障业务流量平滑迁移至新架构下的 Mesh 网关。分享将从如下三个方面展开:
前世今生蚂蚁金服无线网关当前接入数百个业务系统,提供数万个 API 服务,是蚂蚁金服客户端绝对的流量入口,支持的业务横跨支付宝、网商、财富、微贷、芝麻和国际 A+ 等多种场景。面对多种业务形态、复杂网络结构,无线网关的架构也在不断演进。 中心化网关在 All In 无线的年代,随着通用能力的沉淀,形成了中心化网关 Gateway。
2016 年新春红包爆发,蚂蚁森林等新兴业务发展壮大,网关集群机器数不断增长。这加剧了运维层面的复杂性,IT成本也不能承受之重。同时,一些核心链路的业务如无线收银台、扫一扫等,迫切需要与其他业务隔离,避免不可预知的突发流量影响到这些高保业务的可用性。因此,2016 年下半年开始建设和推广去中心化网关。 去中心化网关去中心化网关将原先集中式网关的能力进行了拆分:
此时,客户端请求的处理流程如下:
去中心化网关与集中式网关相比,具有如下优点:
但凡事具有两面性,随着在 TOP30 的网关应用中落地铺开,去中心化网关的缺点也逐步显现:
Mesh 网关去中心化网关存在的诸多问题,多数是由于网关功能与业务进程捆绑在一起造成的。这引发了我们的思考:如果网关功能从业务进程中抽离出来,这些问题是否就可以迎刃而解了?这种想法,与 Service Mesh 的 Sidecar 模式不谋而合。因此在去中心化网关发展了三年后,我们再出发对蚂蚁金服无线网关进行了 Mesh 化改造,以期籍此解决相关痛点。 Mesh 网关与后端服务同 Pod 部署,即 Mesh 网关与业务系统同服务器、不同进程,具备网关的全量能力。客户端请求的处理流程如下:
对比去中心化网关的问题,我们来分析下 Mesh 网关所带来的优势:
至此,我们卖瓜自夸式地讲完了无线网关的前世今生,解释了为何要撸起袖子进行网关 Mesh 化。但细心的你想必怀疑:
接下来的章节将对上述问题进行解释。 Mesh 化架构首先,从架构层面详细介绍网关 Mesh 化所做的相关工作。依照 Service Mesh 的分层模型,Mesh 网关分为数据面和控制面。 解读:
MOSN:https://github.com/sofastack/sofa-mosn 数据面采用 Go 语言实现了原先网关的全量能力,融合进 MOSN 的模型中,复用了其他组件已有的能力。 同时网络接入层 Spanner 也实现了请求分发决策能力。 数据转换将客户端的请求数据转换成后端请求数据,将后端响应数据转换成客户端响应。利用 MOSN 协议层扩展能力,实现了对网关自有协议 Mmtp 的解析能力。 通用功能授权、安全、限流、LDC 和重试等网关通用能力。利用 MOSN Stream Filter 注册机制以及统一的 Stream Send/Receive Filter 接口扩展而来。 请求路由客户端请求按照特定规则路由到正确的后端系统。在网关层面实现 LDC 逻辑后,复用 MOSN RPC 组件的路由匹配能力。其中大部分请求都会路由到当前 Zone,从而直接请求到当前 Pod 的业务进程端口。 后端调用支持调用多种类型的后端服务,支持对 SOFARPC、Chair 等后端,后期计划支持更多的 RPC 框架和异构系统。 控制面为网关用户提供新增、配置 API 等服务的管控系统,可将网关配置数据下发至 Mesh 网关的 Sidecar 实例; 性能大家比较关心的是多一跳对业务性能是否有影响? 这个是蚂蚁金服内部 MOSN 层面的性能损耗分析,具体分析参见敖小剑的「蚂蚁金服 Service Mesh 深度实践」。得出的结论是相较于复杂的业务逻辑,Mesh 的性能损耗在可接受的范围内,同时带来了快速获得收益的能力。同时 Mesh 网关在此次接入过程中做了 Session 精简化:
在带 Session 校验场景下,相较于去中心化网关,基准性能压测得出的结论是:QPS 提升近 1倍,RT 下降约 15%。在此也感谢业务方在 Session 精简化改造过程中的理解和支持。 双十一落地本次双十一,Mesh 网关的落地情况如下:
从上述引流情况可以看出,Mesh 网关支持多维度百分比引流。当然,新的架构体系在大促时落地,充满了各种风险。 为了做好风险管控,我们严格按照三板斧(可监控、可灰度、可回滚)的要求建设相关能力。当前的 Mesh 网关的路由具备 API 百分比、服务器、Zone 以及应用级别的开关能力,支持业务灰度和应急止血。
这里着重分享下 Mesh 网关 API 百分比分流策略。我们和网络接入层 Spanner 配合,开发了 Mesh 分流功能,实现了秒级生效的单个 API 百分比切流 Mesh 网关能力。某 API 配置了
其中百分比信息由业务方在 API 管控页面配置,随着 API 响应头带回 Spanner Worker,由 Worker 自主学习后,按照对应的百分比做分流决策。同时实现了路由失败回退机制,优先级 最后写了这么多,也到了本次分享的尾声。随着双十一落地和验证,后续我们会加快推进 Mesh 网关在蚂蚁金服落地节奏。期待 Service Mesh 在蚂蚁金服云化战略中发挥重要的作用。Mesh 网关也会持续迭代演进,融合云原生技术,支持南北和东西向流量。 艰难困苦,玉汝于成。 作者介绍陆鑫,花名悟尘,蚂蚁金服 Mesh 网关负责人,专注领域:无线网关、服务高可用。 |
|