MOSN 的无人值守变更实践

精彩演讲推荐|智能化变更防控方法、架构与组织实践 CSDI summit中国软件研发管理行业技术峰会由国内专业咨询机构百林哲匠心打造的软件行业技术领域顶级盛会,我司同学王月凡于9月18日进行内容分享“智能化变更防控方法、架构与组织实践”,以下为演讲实录; 阅读详情

本文主要是介绍 MOSN 在无人值守变更上的实践以及过程中的一些思考。主要分为 3 个部分:

-介绍 MOSN 在规模化运维中遇到的挑战

-无人值守上的实践

-MOSN 与技术风险方面的思考

MOSN 规模化后的运维挑战

MOSN 早期在内部推进的时候,变更方面的支持是比较传统的。早期的变更工具只有基础的 pod 粒度的 MOSN 升级的能力。变更过程中的问题,最初依赖于上层业务系统的监控和反馈,稍后我们又在 MOSN 内建设了错误码。发布控制上,将版本区分为稳定版和灰度版本,升级的灰度过程和大范围的覆盖过程都由人工控制。这些方式在小范围、大量人力投入的情况下,保证了 MOSN 早期的快速演进和范围覆盖,也兼顾了基本的稳定性需求。

随着MOSN的成熟,MOSN的接入规模快速增长到了覆盖多个技术栈,数千应用的数十万 pod,涉及蚂蚁内部几乎所有的业务,早期的这些做法也遇到了很多问题。我们接入的应用不再只是 SOFA 技术栈的某些版本,业务也不再局限在某几条链路,大范围变更影响范围数倍甚至数十倍增长,风险变得极高,需要投入大量的人力评估每一个版本变更的影响。

举个例子,早期的 MOSN 几乎只需要考虑与较新版本的 SOFA 的对接。而当 node.js 应用开始接入时,MOSN 的变更也需要相应的考虑对 node.js 应用的影响。

同样是为了减小风险,变更过程中尽可能减少单位时间的可能的影响范围,变更时长不可避免被拉长。

早期的 MOSN 可能只需发布数十个应用,当范围扩大到过千时,如果单位时间发布的 pod 数据不变,那么变更时长即增加数十倍,变更的总时长变得荒谬。而如果总时长不变,则影响面和风险增加数十倍,风险不可控,业务也无法接受。

最终结果是平衡单位时间的影响面和变更时长,风险放大无法避免,整体的迭代周期同样变长。更糟糕的是,新的特性不断堆积在下一个大版本,bugfix 也难以及时上线。这些问题最终不仅推高了下一次变更的风险,甚至直接影响当前生产的稳定。

这么一个负向的循环需要如何打破呢。我们希望跳出传统的运维模式,既要变更的高效率,又要整体的稳定性。我们希望用技术来解决问题。

MOSN 的无人值守变更

关于无人值守,一个可以借鉴的定义来源于近年火热的自动驾驶领域。同样都是希望把人从乏味的工作中解放出来,同样都需要面临复杂的环境问题。

自动驾驶领域的等级定义方式也给了无人值守变更一个很好的参考点。最低级别的是 L0,一切都是人工操作,像云时代之前的时代,从装系统到应用部署,都依赖于人工命令行处理。

然后是 L1,平台提供了原子粒度的变更工具支持和基础的观察工具支持,如同早期的 MOSN。

当这些工具更完善,提供一些基本的流程编排能力之后,开始进入自动化的时代,但可能随时需要人工介入处理。在此基础上,加上自动化的观测规则,把人工观察介入变成系统自动阻断,变更开始具备了无人值守的基本能力。

历经一年多的演进,MOSN 当前就处于这个阶段。我们也还在持续的完善和打磨,向着完全无人干预的方向演进。

接下来我们来看 MOSN 是如何逐步达到无人值守的。

首先来看下风险的防控。前面我们提到,在传统的变更流程里面,需要人工介入的有变更范围控制;还有变更准入的检查,变更批次完成后,还要抽查确认变更结果以及业务异常情况。

也就是图上标红的这些内容。

但是人本身是不可靠的。人为控制变更范围意味着灰度过程无法保证,准入的检查会存在比如信息不同步,规则遗漏的情况,完成情况的检查在大量应用或 pod 同步变更时,也只能做到少量抽检,无法避免问题被漏过。

把人工介入的部分交给系统,我们就有了一个初步可以脱离手动操作和人工观察的流程。

上图展示了变更防御的介入流程。

变更范围改为由算法来自动产生的带有强度灰度的批次范围。前置准入与后置检查通过将变更类型与变更范围传递给变更防御的检查,通过检查才能继续执行。

举一个简单的场景。MOSN 覆盖很多不同业务的链路,各业务有不同的变更保护时段,怎么来解决呢?

首先在已经业务有保护时段的情况下,我们当然不能不管业务的风险强行变更。在有变更自动防控之前,我们只能找个共同的可变更时段,很多时候这就是半夜,但对于 MOSN 这么大规模的变更,半夜变更不仅仅是影响研发和运维幸福感的问题,只有半夜能变更的话,效率也无法接受。而有了变更的自动准入阻断规则,这个时间选择的问题立即就不存在了,我们只需要把所有应用的变更都跑起来,系统自动判断各自的可执行时段,甚至不需要参与变更的各方都知道所有业务的可变更时段。

变更防控上线以后,极大的解决了我们的变更风险问题。但它并没有解决效率问题,一段时间来看,我们的效率甚至下降了。为什么?

我们分析了自身的变更过程,注意到两点:一是我们引用的业务错误的检查标准不一,部分业务的敏感度偏高或是阈值不合理,导致变更被持续阻断,无法继续;二则我们的全面检查放大了上面的问题,多个批次下来被中断的的概率也极大的提高了。

仔细来看业务的错误检查。这些检查不仅说明了 MOSN 自身的检查,还包括了业务的自身的错误和其它中间件、基础设施的问题。这些检查无法直接说明 MOSN 自身的健康情况。怎么解决呢?我们决定不再依赖这个不靠谱的检查,由 MOSN 自己来说明自己的健康情况。

我们在 MOSN 中建设了两个层面的健康度观测能力。第一层是静态健康度,主要是 MOSN 的启动自检,在流量进入前完成,体现 MOSN 运行环境和基本启动依赖的健康情况;第二层是动态健康度,主要是 error metrics 日志,体现核心功能运行状态。结合这两层健康层,MOSN 就具备了完整了自身状态的观察能力,可以把业务的错误检查从变更检查中移除。

我们还做了一个进一步提升变更效率的事情,彻底解决业务冷启动消耗的时间。

无论是传统的原地升级或者是滚动升级的模式,过程都无法避免业务需要冷启动。由于业务依赖比较多,大部分业务的启动速度和成功率是大幅低于 MOSN 的,因此业务的冷启动时间一直是 MOSN 变更时间的大头。

一个很好的解决方案是热升级。MOSN 自身是具备热升级能力的,下图展示了热升级的过程。

稍微解释一下的 MOSN 热升级过程。sidecar operator 会给待升级的 pod 注入一个新版本的 MOSN sidecar,旧版本的 MOSN 会收到连接迁移的请求,所有的长连接会被新版本的 MOSN 接管,完成之后旧版本 MOSN 会停止,sidecar container 被删除。

热升级是一个很理想的升级方式,但是完善的热升级需要的条件和环境都比较复杂,需要 k8s 和 operator 的相应支持,而且被迁移的长连接需要同步的迁移状态,对于 MOSN 内的有状态协议也带来比较大的研发压力。

我们的选择是把复杂做到了运维侧,做一个相对折中的方式。相对于热升级,这个方案没有那么热,我们称为温升级。上图展示了温升级的过程。概括起来是三步:关闭待运维 pod 的所有入流量,升级 MOSN 的容器,打开流量。

温升级去掉了业务的冷启动时间,避免了业务重启失败。MOSN 只需要做好配置的向下兼容,升级过程和传统升级过程几乎完全一样,但成倍的提升了升级效率。

最后,我们说说 MOSN 整体研发流程。只有生产的提升是不足以全链路的提升 MOSN 的效率的。原有的研发流程里,CI 流程,灰度版本试点,生产发布是割裂在各个流程里的。我们希望把整个研发流程串起来,向 L5 无人值守演进。

我们首先引入了 nightly 发布,建设 nightly 版本的发布流,让灰度版本试点可以自动跑起来。我们打通了 CI 流程,借助质量同学在 CI 流程中建设的测试,保证 nightly 版本可发布,让 nightly 版本常态化、自动化推进到灰度验证阶段,加速每一个 commit 的研发反馈。最后,我们正在将正式发布串到 nightly 的驱动路径中,周期性选择通过评估的 nightly 版本推进到生产,缩短正式发布的延迟周期。

原来割裂的各个部分,在研发侧由 CI 驱动产出 nightly 版本,然后由 CD 平台驱动一直推进到生产。我们在持续的建设自动变更推进和变更自主决策的能力,向 L5 手机可关机的变更方向演进。

MOSN 技术风险的思考与方向

除了依托于技术风险的能力为 MOSN 保驾护航,MOSN 自身也是技术风险能力的重要承载。

举个盒子来说,我们在 MOSN 上建设了秒级自愈的能力,依赖于 MOSN 最接近于业务流程的特点,实现了在业务局部有损时秒级响应止损的能力。下图展示了秒级自愈的流程。 

MOSN 可以获取一段时间片内下游节点的调用情况做统计,推导下游可能的故障节点,并将故障节点加入到自己的亚健康下游列表里,在秒级时间区间将潜在的故障节点隔离。同时数据会同步上报给自愈中心。自愈中心可以通过多个 MOSN 的上报信息进一步聚合判定故障节点,做自愈处理。

类似长在 MOSN 的技术风险能力还包括 chaos mesh 的能力,自适应限流的能力等等。对于上层业务,MOSN 越来越成为整体技术风险能力的重要组成部分。

另一方面,技术风险能力的持续提升要让 MOSN 更稳更快。我们在持续建设更完善的 MOSN SLO 能力,更精准的判定 MOSN 的问题,从而建设变更流程中的自主决策能力,例如变更出现问题时的自主回滚;我们也在完善 MOSN 的持续发布能力,向月度发布演进,迈向 L5 无人值守。

MOSN:https://github.com/mosn/mosn

欢迎 Star~

 延伸阅读

蚂蚁金服开源 MOSN 核心概念解析 前言 MOSN 是一款使用 Go 语言开发的 Service Mesh 数据平面代理,2018 年 7 月由蚂蚁金服开源,开源地址 ,MOSN 旨在为服务提供分布式、模块化、可观察和智能化的代理能力。MOSN 是 Modular Observable Smart Network 的简称。MOSN 可以与任何支持 xDS API 的 Service Mesh 集成,亦可以作为独立的四、七层负载均衡使... 阅读详情

相关推荐

Eplan P8自动线号生成全攻略:从电位定义点到连接编号的完整流程

本文详细解析了Eplan P8自动线号生成的全流程,从电位定义点的创建配置到连接编号的标准化管理,帮助电气设计人员提升图纸规范性和工作效率。重点介绍了自动编号方案的定义与调整技巧,以及企业级标准化实施建议,是掌握Eplan P8自动线号功能的实用指南。

weixin_29254029的博客 510

无人值守时代,运维如何保障发布质量?

导读:阿里巴巴千亿交易背后,如何尽量避免发布故障?在面对实际运维过程中遇到的问题该如何解决?近日,在GOPS大会上,阿里巴巴运维技术专家少荃,给我们带来了解决方案和思路。 作者:陆叶平(花名少荃),阿里巴巴研发效能事业部技术专家。目前从事运维中台(阿里内部叫诺曼底)建设方面的工作,是集团内最大的应用发布系统(海狼)负责人。 前言 近几年...

weixin_34113237的博客 484

图解说明JLink驱动与目标板电源匹配的关键细节

深入讲解JLink驱动安装及使用过程中,如何正确匹配目标板电源,避免常见通信故障。通过图解方式清晰展示关键连接细节,确保调试稳定可靠,是嵌入式开发中不可或缺的实战经验分享。

weixin_42173218的博客 431

蚂蚁Service Mesh大规模落地实践与展望

宋顺读完需要10分钟速读仅需 5 分钟云原生的理念正如火如荼,然而真正大规模落地的公司依然屈指可数,蚂蚁作为国内比较早进行尝试的公司,经过了 2 年多的探索,沉淀出了一套切实可行的方案并...

中生代技术 523

小红书x-mini签名逆向实战:Frida动态Hook与算法还原

在移动App协议分析中,请求签名机制是保障接口安全的核心技术,其本质是客户端对请求参数、时间戳、设备指纹等要素进行加密认证的过程。理解签名原理需掌握Native层加密流程、JNI调用机制及密钥动态派生逻辑。Frida作为主流动态插桩工具,能绕过符号剥离、字符串加密和控制流混淆等反分析手段,在函数执行瞬间捕获寄存器状态、内存数据与调用上下文,实现签名算法的完整还原。该技术广泛应用于合规内容监测、API自动化调用与竞品协议研究等工程场景。本文聚焦小红书x-mini签名这一典型样本,详解从JNI_OnLoad定位

weixin_31264565的博客 457

法兰克仿真软件FANUC CNC Guide v25.0 安装教程及中文设置

下载地址在文末。我们公司用新到一批FANUC 系统的设备,为方便使用就装了一个 FANUC 数控系统仿真软件FANUC CNC Guide v25.0 ,还是最新版不是市面上流传的老版本。模拟学习一下。

hakesashou的博客 1万+

SOFAServerless 体系助力业务极速研发

文|赵真灵(花名:有济)蚂蚁集团技术专家刘晶(花名:飞廉) 蚂蚁集团技术专家以下内容整理自SOFAStack 四周年的分享本文5332字 阅读10分钟SOFAServerelss 研发运维平台是蚂蚁集团随着业务发展、研发运维的复杂性和成本不断增加的情况下,为帮助应用又快又稳地迭代而研发。从细化研发运维粒度和屏蔽基础设施的角度出发,演进出的一套解决方案。核心方...

金融级分布式架构 523

5分钟快速验证lvgl界面:VScode模拟器极简配置法(免环境变量版)

本文介绍了一种5分钟快速验证LVGL界面的极简配置方法,使用VSCode模拟器免环境变量配置,适合UI设计师和产品经理快速预览界面效果。通过预编译的SDL2库和配置好的VSCode工程模板,实现开箱即用的LVGL界面验证,大幅提升工作效率。

weixin_30790841的博客 314

MOSN(Modular Open Smart Network)-08-MOSN 扩展机制解析

MOSN 扩展能力和扩展机制的详细介绍;结合示例对 MOSN 的 Filter 扩展机制与插件扩展机制进行详细介绍;MOSN 后续扩展能力规划与展望;欢迎大家有兴趣一起共建 MOSN。在本次演讲中涉及到的示例就在我们的 Github 的目录下,大家有兴趣的也可以下载下来运行一下,关于这些示例我们还做了一些小活动,也希望大家可以踊跃参与。MOSN 作为云原生的网络代理,旨在为服务提供多协议、模块化、智能化、安全的代理能力。

1525

保姆级教程:用STM32CubeMX配置GD32的CAN总线(含异常处理)

本文提供了一份详细的STM32CubeMX配置GD32 CAN总线开发指南,涵盖从HAL库移植到异常处理的全过程。重点解析GD32与STM32在CAN总线初始化、报文发送优先级处理等方面的关键差异,并提供优化代码维护与版本控制的实用策略,帮助开发者高效完成项目迁移。

onion的博客 829

重塑计算的五层蛋糕:解读黄仁勋CES2026演讲背后的AI新秩序与物理世界

2026年CES演讲揭示AI新纪元:从语言模型到物理智能 NVIDIA CEO黄仁勋在2026年CES演讲中描绘了计算产业的根本性变革。核心突破包括: 计算范式转移:从指令执行转向意图理解,智能体系统崛起 物理AI突破:发布Cosmos世界模型,通过合成数据训练AI理解物理定律 全新VeraRubin计算平台:6芯片协同设计,解决摩尔定律放缓与AI需求增长的矛盾 自动驾驶革命:推出具备推理能力的Alpamayo模型,实现L4级自动驾驶 演讲标志着AI正从数字世界迈向物理世界,NVIDIA通过全栈布局,正在重

老孙 | Ethan Sun 的博客:AI 智能体与 AI 原生软件的工程实践 1274

恭喜 MOSN 社区成为可信开源社区共同体成员

恭 喜|Congratulations!“2021 OSCAR 开源产业大会”MOSN 开源社区完成可信开源社区评估也成为可信开源社区共同体成员同时,金融级分布式架构SOFASta...

金融级分布式架构 1540

大语言模型在金融风险预警中的推理应用探索

金融行业一直面临着各种风险,如信用风险、市场风险、操作风险等。准确及时的风险预警对于金融机构的稳定运营和投资者的利益保护至关重要。传统的金融风险预警方法主要基于结构化数据和统计模型,虽然在一定程度上能够识别风险,但对于非结构化数据的处理能力有限,难以捕捉到复杂的风险因素和潜在的风险趋势。大语言模型作为自然语言处理领域的重要突破,具有强大的语言理解和生成能力,能够处理各种形式的文本数据。

AI天才研究院 1169

MOSN 社区「田阳」在“2021 OSCAR 开源产业大会” 进行精彩演讲

MOSN 受邀出席本届OSCAR 开源产业大会的开源社会治理与运营论坛。蚂蚁集团的高级技术专家「田阳」,从 MOSN 的开源历程出发,对未来开源社区的发展进行探讨与展望。OSCAR - ...

金融级分布式架构 172

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

蚂蚁金服 Service Mesh 大规模落地系列 - 运维篇

《蚂蚁金服 Service Mesh 大规模落地系列》将会从核心、RPC、消息、无线网关、控制面、安全、运维、测试等模块对 Service Mesh 双十一大规模落地实践...

金融级分布式架构 402

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SOFA Weekly | SOFAJRaft 发布新版本,QA 整理

SOFA WEEKLY | 每周精选,筛选每周精华问答同步开源进展,欢迎留言互动SOFAStack(ScalableOpenFinancialArchitecture Stack)是...

金融级分布式架构 323

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

MOSN 子项目 Layotto:开启服务网格+应用运行时新篇章

作者简介:马振军,花名古今,在基础架构领域耕耘多年,对 Service Mesh 有深度实践经验,目前在蚂蚁集团中间件团队负责 MOSN、Layotto 等项目的开发工作。Layotto...

金融级分布式架构 824

mesh的简单理解

在K8S里一个Pod是一个调度单位,原先Pod里只有业务容器,现在新增了一个sidecar代理容器,跟业务容器共享network namespaces,它通过iptables拦截客户端流量,实现监控采集、解密、鉴权、限流等通用功能。 dapr 中间件下沉的能力。 对于istio的理解。 1.mosn网络模型的分析和压测 在端上,也就是数据平面最核心的就是代理流量。流量代理转发的逻辑参考mosn,采用golang经典的netpoll模型,底层调用的是linux epoll,最大的特点是多路复用,一.

一个初学者 的博客 480

MOSN 多协议扩展开发实践

Service Mesh 是当今云原生的关键部分,蚂蚁已经在生产环境完成了大规模的落地,但是业界整体 Service Mesh 改造程度还不高。其中平稳的进行 Mesh 化改造是可以对已上...

金融级分布式架构 462

社区文章|MOSN 社区性能分析利器——Holmes 原理浅析

文|Junlong LiuShopee Digital Purchase & Local Services Engineering本文1743字 阅读6分钟贡献者前言MOSN我是在开发工作过程中了解到 Holmes的,为了保障系统稳定性需要一个性能排查工具,因此也需要一个保留现场的性能监控工具。当我在网上查询该方面的开源库时,发现可用的并不多。后续找到 ...

金融级分布式架构 821

云原生网络代理 MOSN 透明劫持技术解读 | 开源

MOSN 是一款使用 Go 语言开发的网络代理软件,作为云原生的网络数据平面,旨在为服务提供多协议、模块化、智能化、安全的代理能力。MOSN 是 Modular Open Smart N...

金融级分布式架构 1219

基于 MOSN 和 Istio Service Mesh 的服务治理实践

Service Mesh Webinar 是由 ServiceMesher 社区和 CNCF 联合发起的线上直播活动,活动将不定期举行,为大家带来 Service Mesh 领域的知识和...

金融级分布式架构 773

云原生网络代理(MOSN)的进化之路

本文系云原生应用最佳实践杭州站活动演讲稿整理。杭州站活动邀请了 Apache APISIX 项目 VP 温铭、又拍云平台开发部高级工程师莫红波、蚂蚁金服技术专家王发康、有赞中间件开发工程师张超,分享云原生落地应用的经验心得,以下是王发康《云原生网络代理(MOSN)的进化之路》分享内容。 王发康(毅松), 蚂蚁金服可信原生技术部技术专家,专注于高性能网络服务器研发,MOSN、Tengine 开源项目核 心成员,目前关注云原生 ServiceMesh、Nginx、Istio等相关领域。 今天主要分享 MOS.

github_36774378的博客 885

MOS管限流

行者 9380

使用 MOSN 作为 HTTP 代理

简介 该样例工程演示了如何配置使得MOSN作为标准Http协议的代理+ MOSN之间的协议是HTTP2 为了演示方便,启动一个MOSN监听两个端口,一个转发Client的请求,一个收到请求以后转发给Server 其访问路径如下: 相当于一个HTTP代理 ![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29t...

jiweigang1的专栏 954

MOSN 平滑升级原理解析

本文作者:田阳,花名烈元, 蚂蚁金服技术专家,专注于高性能网络服务器研发。Tengine 项目团队成员,MOSN 开源项目成员。Service Mesh 中 Sidecar 运维一直是一...

ServiceMesher 1674
上一篇: SOFAGW 网关:安全可信的跨域 RPC/消息 互通解决方案
下一篇: WebAssembly 在 MOSN 中的实践 - 基础框架篇
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值