小白网-奉贤部落-奉贤免费信息发布平台

标题: 阿里亿级长连网关的云原生演进之路 [打印本页]

作者: [db:作者]    时间: 2025-7-26 13:07
标题: 阿里亿级长连网关的云原生演进之路
作者:光锥
AServer接入网关承载着整个阿里集团的入口流量,负责维系数十亿用户的长链,支持数万条路由策略转发。它是连接几亿用户和几十万后台服务节点的桥梁。去年的双十一需要支持数十亿在线用户、数千万QPS和数万种有效的API控制策略,实现安全可靠的转发路由,保证用户体验的流畅。
在大规模业务流程和控制的支撑背后,需要对系统的每一个细节进行精准控制,消除每一个潜在的风险点。
借助云原生架构,可以大大简化运维操作,降低潜在风险。去年双十一阿里AServer接入网上千个pod顺利过了高峰。本文主要介绍阿里AServer接入网关如何拥抱来自上一代架构的改变,云原生的演进之路是全面的。
架构背景每年的双十一促销都是对阿里所有服务最严峻的考验。尤其对于AServer接入网关,作为阿里集团的第一个网关,需要抵御大促高峰带来的流量高峰,清洗攻击流量,所需集群规模巨大。
庞大的集群规模和对机器性能的极端要求,导致运维的复杂性;随着接入业务的增多,支持的业务场景变宽,业务对路由策略的灵活性和实时性要求变高,对路由策略的动态安排能力有着强烈的需求。由于业务的多样性、业务线的闭网节奏不同、故障隔离等原因,衍生出对流量隔离稳定性的需求。
运维的复杂性、动态布局的需求、流量隔离以及对性能的极致要求,推动了AServer接入网关的不断演进和成长。在紧跟业务发展的同时,逐步降低了运维成本,增强了系统的稳定性,经得起一次又一次“双十一”的考验。
工作经历
tengine gateway作为阿里集团的AServer接入网关,承载着整个阿里集团的入口流量,并初步支持域名转发策略,根据域名转发给不同的后端服务,业务形式相对简单。
在All in wireless时代,为了优化手机端的用户体验,降低服务器人员的开发成本,集团自行开发了MTOP(手机淘宝开放平台)API网关,为客户端和服务器端提供了一致的API平台。同一个域名仅通过URI携带的API信息转发到相应的服务,接入网关需要支持根据API(URI区分)的路由转发能力,几年间迅速增加到数万条规则。
随着业务发展的日益精细化,同一API下的不同业务场景有望细分。比如对于双十一发布会的来源,手淘、支付宝等出站页面等场景要更精细的控制。为了适应业务发展,网关需要支持精细化管控能力,根据业务请求参数和请求头进行管理和分流。每一个请求都要从成千上万条灵活的配置规则中匹配出唯一的路径,同时保持极高的性能,这是一件非常具有挑战性的事情。
业务模型图
操作和维护背景
一开始基础支撑基础设施不完善,网关层基于tengine搭建。最简单快捷的解决方案是使用物理机,部署流程和配置可以完成服务构建。随着业务的增长,配置管理成为瓶颈,网关层需要一个强大的配置管理平台,以标准化的方式生成业务配置。自主开发的配置管理平台将配置分为三部分:应用配置、公共配置管理和证书配置。
  • 常用配置:通过Git版本管理生成tenengine运行的基本配置,如启用模块配置、tenengine运行逻辑配置等。
  • 配置:通过标准模板生成业务所需的引擎配置。
  • 证书配置:由于证书有有效期,为了防止到期时忘记更新,还承担了自动更新证书的任务。初始系统部署架构:
    该方案可以实现服务自助接入,通过配置管理平台的模板生成tengine配置,然后定时推送到网关机器,重新加载流程使配置生效。
    通过这种运维模式,可以不依赖基础设施快速演进。然而,随着业务的增长和集群规模的增大,物理机运维模式的弊端逐渐显现。野蛮生长的时代已经过去,作为阿里服务的入口,稳定成为重中之重。物理机的二进制分发依靠手工部署,需要批量执行命令安装rpm包,批量重启进程,这些都是通过黑屏操作完成的。
    这种运维模式显然不能满足目前的稳定性要求,通过人工发布容易因误操作造成系统故障。另外,很难保证物理机器运维的一致性,包括二进制系统的一致性和机器环境的一致性检查(如内核参数等。).过去的人工运维方式显然已经跟不上时代的步伐。
    解决出版和环境一致性问题的最佳方案是容器化技术。随着集团基础设施的完善,接入网关的集装箱化改造扫除了障碍。不变量(系统配置和二进制)打包成一个整体进行发布,变量(应用配置、公共配置和证书)继续由配置管理平台管理,并使用容器化技术进行调整。
    容器转换后的发布和配置更改流程:
    容器化的架构简化了建站、扩容、收缩的操作,发布效率得到了大幅提升。增加了审批流程,卡点系统化,避免了人工操作可能带来的失败。发布过程还可以与监控系统连接,自动报警和暂停发布。
    核心问题
    随着电商业务发展越来越快,规模达到瓶颈后,业务会更加横向扩展,精细化程度会越来越高,迭代速度也会越来越高,网关层适应业务变化的成本也会变高。由此产生的核心问题:
  • 运维复杂度:由于对性能的极端要求,网关集群对机器有特殊要求;网关配置管理的特殊性导致了运维的复杂性。特殊性的存在不能很好的连接集团现有的运维系统,需要升级;
  • 动态调度能力不足:随着接入业务的增加,支持的业务场景拓宽,业务对路由策略的灵活性和实时性要求越来越高。静态配置无论是有效实时性还是策略灵活性都难以满足业务发展需求,需要支持路由策略的动态调度能力;
  • 流量隔离成本高:缺乏轻量级的业务范围隔离能力,新建集群成本高,需要轻量级的多集群流量隔离方案来支持业务线不同的网络关闭节奏和故障隔离。近几年云原生的快速发展也为网关层提供了更好的架构选择。
    针对接入网关存在的问题,云原生架构结合集团业务场景和云原生开源系统,开启了AServer接入网关的云原生演进之路。对于分步验证,分解为运维系统升级和服务治理三个阶段网关为网状,南北架构拆分。接下来,详细解释每个步骤的演变。
    操作和维护系统升级
    1待解决的问题
    通过容器化的升级部署,大大简化了部署运维模式,可以解决当时最突出的问题。然而,仅仅转变部署模式是远远不够的:
  • 由于接入网关的特殊性(比如需要和配置管理平台接口,有大量的VIP需求),不能直接和集团的基础设施接口,所以开发了独立定制的运维工具。扩展和收缩过程需要多个基础组件通过非标准接口协同工作,极大地影响了运维产品的迭代效率。
  • 故障机换机等操作依赖外部系统轮询检测,集团基础设置系统只能通过与定制运维平台对接处理,延时较长。
  • 运维从集团运维体系中分离出来。2进化思想
    随着集团内部针对云原生应用设计的统一基础架构ASI(Alibabaserver Less infra structure)的逐步完善,提供基于原生K8S API的完整云原生技术栈支持。
    云原生方案编排能力强,通过自定义实现k8s扩展,很容易抹平网关层的特殊性。ASI独创的自动化运维手段可以直接应用到网关层。
    通过节点池划分可以实现层对层模型的特殊性。网关机节点池可以自定义模型和内核参数,消除了网关运维的特殊性,统一管理运维。
    3进化方案
    通过k8s自带的控制器扩展能力,可以自定义容器布局,在扩展和收缩时监控Pod变化事件,向配置管理平台添加和删除机器,同时可以挂载/卸载VIPs,平滑运维的特殊性,所有资源都由声明式API定义,方便运维。
    对于网关的运维,需要预留一个非常简单的运维平台,只用于搭建网站。与常见的应用相比,网关需要在相应的区域创建VIP进行附加域等操作,轻量级且易于维护:
    通过ASI改造,将接入网关的运维整合到集团的ASI云原生系统(提高交付效率,去除专门的运维),通用能力下沉到ASI和基础系统,同时具备风险隔离、自恢复和弹性的能力。
  • 风险隔离:使用Sidecar功能来隔离安全和工程功能,以避免它们之间的相互干扰。如果安全能力异常,只会影响流量清洗。安全能力降级后,整个服务不会不可用。
  • 自恢复:对于容器的自愈能力,原有的容器化方法依赖于外部应用的轮询检测,缺乏准确性和实时性。ASI升级后,通过对集装箱本身的检测,可以在3-5分钟内识别并更换故障集装箱;
  • 灵活性:自动灵活性。通过对ASI的改造,标准的声明式API可以用于各种系统的对接,组内组件可以集成,大大简化了扩展和收缩操作,为自动化灵活性提供了支持。
  • 屏蔽模型差异:通过节点池划分,网关应用可以使用特殊模型,底层配置屏蔽差异,无需特殊操作。治理和网关网状网络
    1待解决的问题
    随着网关层接入服务类型的增加,需要支持数万条API路由规则,路由策略也越来越精细化,tengine的原生能力无法满足业务需求。在过去的几年中,以非标准方式定义的Teengine模块的定制开发已经很好地适应了业务的发展。但随着业务需求更加精细化,Teengine模块定制开发的成本也逐渐增加。
    2原始架构
  • 路由配置是模块配置和本机配置的组合。多个模块配置共同决定路由策略,分散的配置无法识别一个请求的完整路由路径。
  • 通过功能模块的划分,很难按照业务粒度实现增量更新;
  • 基于tengine架构,动态变更能力不足,域名变更每天定时推送配置并生效,无法满足业务快速迭代需求;
  • 非标准协议直接连接不同的管控平台,连接成本高,不容易控制;
  • 对于不同的业务线(如淘、优酷),要实现资源隔离,由于大部分模块配置采用静态公共配置,建站成本较高。3进化思想
    如何动态安排和细化控制路由策略是云原生系统下首要考虑的问题。参考业界网关层做法,如孔、大使等。,主流的网关数据平面实现都是基于nginx或者envoy。不同产品的可扩展性、动态布局能力和成熟度的比较:
    综合考虑动态、标准和性能,使用envoy作为数据平面更适合云原生演进方向:
    动态和灵活性
  • envoy实现的标准xDS协议足够灵活,可以动态配置和更改。
  • Envoy具有良好的可扩展性,通过实现过滤器扩展,可以实现集团独有的路由逻辑。标准
  • Istio标准组件,拥有强大的社区支持和快速发展。
  • 阿里巴巴集团mesh采用istio技术方案,使用envoy作为数据平面选项,可以与集团业务管控统一。表演
  • C++实现,性能足够好,开发效率比tengine高。envoy的缺点是作为一个istio标准组件,它有很强的东西向路由能力,作为一个南北向组件,它需要一些性能和稳定性的优化,但从长远来看,动态性和标准化更重要。
    4进化方案
    复用组导频作为统一的控制平面组件,实现网关自身的网状化;
    控制平面需要为权限关闭提供一层管理和控制逻辑,以便提供每个显示的业务产品的编写。各产品通过k8s声明式api编写路由策略,然后由飞行员控制平面转换成xDS数据平面协议,实时同步到数据平面特使。南向路由网关的实现架构:
    由于集团的大规模配置,几十万条路由规则,几千个应用,几十万个业务节点,开源系统很少有这样的规模。南北网关应用Pilot+Envoy方案后,需要对原生组件进行优化和定制,解决规模带来的性能和稳定性问题:
  • Pilot支持SRDS协议:解决大规模API配置带来的线性匹配性能问题。
  • 配置更新:实现和提高控制面的增量更新能力,避免全更新带来的变更半径扩大风险。
  • 节点变化优化:解决数十万业务节点状态变化对控制平面和数据平面性能的影响。
  • 定制:根据集团特有的路由规则定制过滤器的实现。通过对开源系统的定制和优化,可以很好的匹配集团内部的需求,通过灵活的配置和组合,通过快速迭代控制平面透明传输的能力,实现集团内部不同业务的特殊需求。
    南北分裂
    1待解决的问题
    作为网关用户和业务之间的桥梁,保持用户长链的活跃度,优化协议,让用户尽可能快速稳定的连接到群组;支持灵活的路由和融合服务限流策略,以及负载平衡。虽然连接保持活动和路由转发完全能够作为网关,但它们对迭代效率和业务特征的需求是完全不同的。
    在一些大的推广场景下,即使出现意外的流量高峰,网关层作为保护业务服务的屏障,依靠高性能和水位预留,依然可以稳如磐石。考虑到保活长链,协议优化有这个长迭代周期和高性能;由于路由和流量清洗的策略灵活复杂,资源消耗自然相对较高。如果将路由和流量清洗的架构拆分,整体资源利用率可以大大提高。
    2进化思路和方案
    与客户端交互的模块,如协议卸载、长链保持活动等。,并能保持极高的性能,被单独分割成北向集群。由于它们性能好,只需要几台机器就能筑起高高的堤坝挡住洪水;至于服务路由策略,以及安全清理能力,更消耗性能,所以拆分到南向集群,由北向高坝保护过载。南行集群可以降低预留水位,从而提高整体资源利用率。这样既可以提高资源利用率,又可以灵活配置,满足业务快速发展的需要。
    整体架构
    经过三个阶段的发展,最终的架构图如下:
    服务器接入网关云本地架构
  • 统一控制平面:通过集团统一控制平面进行业务接入、业务发现、融合和限流控制,起到统一处理变更和关闭的作用;
  • 北向连接层:基于tengine,承载上亿在线用户和流量峰值,起到高坝的作用,提高南向路由层的资源利用率;
  • 南向路由层:基于Envoy,通过导频转换xDS协议动态发布路由策略,实现动态安排路由和轻量级流量隔离的方案;
  • 云原生基础:运维运营基于集团统一基础架构ASI,屏蔽网关差异,降低运维复杂度。未来,阿里AServer接入网关将一步步向云原生演进。每一次进化都是基于困扰我们很久的问题,但并不止步于解决问题。同时,基于当前时代的解决方案,云原生架构的转型还远未结束,云原生的优势还没有完全发挥出来。技术升级最终是为了服务产品。云原生升级后,我们有了强大的引擎。接下来我们要做的就是利用这个引擎来改造产品形态,让基于网关的开发者最终受益。
    产品集成
    一个网关产品最好的状态是什么样的状态?开发者每天都在用,但不需要关心网关的存在,所以存在感最低的状态可能就是最好的状态。目前从接入网关的产品形态上暴露出一些实现细节。当一个门户应用上线时,它需要几个不同的系统进行交互来完成访问。云原生改造完成后,可以更好的实现All in One,实现产品的集成和闭环。
    快速弹性
    ASI Pod虽然经过了升级改造,但是可以自动进行机器更换、机器迁移等操作,降低了运维成本。而尚云最重要的能力是快速弹性,比如双十一高峰前快速扩张,大促后快速收缩,可以大大减少大促预留的机器资源,从而节省巨额成本。当然还有很多问题需要解决,比如安全性、可靠性、灵活性、实时性,这些都需要配合云的基础设施,才能充分利用云的优势。
    关注我们,每周3次移动技术实践为你想干货!




    欢迎光临 小白网-奉贤部落-奉贤免费信息发布平台 (http://www.ts-xiangyue.com/) Powered by Discuz! X3.2