美团全链路压测自动化实践

发布于:2024-10-24 编辑:匿名 来源:网络

来源:美团技术团队丨作者:欧龙数据源官网 | 今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰网丨阿里巴巴UC大学鱼丨新浪微博丨新浪观察丨百度百家丨博客中国丨趣头条丨腾讯云·云+社区 国内度假属于低频业务通常与假期相关。节假日期间客流量较平日增加百分之五至百分之十以上。

有时,会给生产系统带来很大的风险。因此,在2019年春节前,我们基于美团基础压测平台Quake,将整个国内度假业务打通全链路压测,系统评估容量,发现隐患,最终保证了春节期间系统的稳定性。

节日。 。

在整个过程中,我们认识到全链路压测在整个系统的稳定性建设中占据着核心和重要的地位,也是最有效的解决方案。结合实际的营业假期频率(基本上平均每月一次),如果我们能够将其作为保证稳定性的常规手段,那么我们系统的质量也能得到很好的保证。

同时,为了解决周期性常态化压测过程中人力成本高、多个团队重复工作、压测安全不可控、风险高等痛点,我们提出了????自动化全链路压力测试。通过统一压测实施的具体动作,推动压测各个阶段的标准化和自动化,尽力提高整个流程的执行效率,最终达到常态化的目标,如图1所示:图1 自动化实现总体思路 另外,在全链路压测的整个周期中,压测安全性和压测有效性也是需要持续关注的质量属性。

基于这些考虑,如图2所示,我们对压测自动化需要解决的关键问题进行了分类和分解: · 如何实现基础流程的自动化,提高人的效率; · 如何自动进行压测验证,保证压测安全; ·如何计算压测置信度的量化,确保压测有效。图 2. 问题分析。

最后,基于美团基础压测平台Quake(主要提供整个系统的流量记录、回放、施压等功能),设计并实现了全链路自动化压测系统,实现针对不同业务的综合测试。提高链路压测效率,保障压测安全。

系统: ·提供链接排序工具,可以自动构建压测入口链接完整的依赖信息,辅助链接排序; ·支持链路标记和配置功能。对于不需要压测接入的依赖接口,可以配置该方法,无需在业务代码中嵌入压测判断逻辑,即可完成相关接口的Mock配置; ·提供抽象的数据构建接口,通过平台,用户可以配置任意的数据构建逻辑和流程; ·压测前/压测过程中,自动对压测业务和流量进行多重验证,确保压测安全; · 平日根据压测计划提供周期性的低流量压测验证,使得业务迭代变更带来的压测能够尽早发现安全风险; · 提供压力测试计划管理功能,通过系统自动调度和控制压力过程,释放人力;同时,强制预压测试也提高了安全性; · 一键压力测试,自动生成报告,收集链路入口和告警信息,并提供问题记录和跟踪功能。

系统设计 系统总体设计 图3 系统总体逻辑架构 系统总体逻辑架构如图3所示,主要包括链路构建/比对、事件/指标采集、链路治理、压测配置管理、压测验证检查、数据结构、压测计划管理、报告输出等功能模块。通过这些模块,我们为全链路压测的全流程提供支撑,尽力降低业务部门使用全链路压测的门槛和成本。

链接构建/比对:负责服务接口方法调用链接的构建、更新、存储。链路治理:基于构建的链路关系,提供链路中核心依赖、导出Mock接口标注、上下游分析、展示、导出Mock配置等功能。

压测配置管理:自动发现注册服务的Mafka(美团基于Kafka开发的综合分布式消息中间件解决方案)/Cellar(基于Tair的分布式KV存储服务)/Squirrel(基于Redis-Cluster模式)二次开发分布式缓存系统)/Zebra(美团数据库访问层中间件)压力测试配置,协助压力测试人员验证和配置相关配置项。压测验证检查:确保系统可以进行压测,通过多种验证手段和机制设计,保证压测的安全性。

数据建设:为不同业务压测实施准备基础数据和流量数据。压测计划管理:设定压测执行计划,依靠“压测控制”模块自动调度整个压测执行流程。

故障诊断:根据采集到的关键业务/服务指标、告警等信息,判断分析服务是否异常,是否终止压测。置信度评估:从数据覆盖率、链路覆盖率、技术指标等维度评估压测结果的置信度,即各评估维度与真实流量状况的相似度。

非功能需求描述: · 可扩展性 · 兼容不同业务线数据构建逻辑的差异。 ·能够支持不同的流量记录方式。

·安全 ·集成单点登录,按团队对用户进行分组,并展示压测服务信息。保存关键操作的操作日志。

·试压验证检查是保证试压安全的关键。支持定期压测验证,可以检测待压测服务的可测试性随时间的下降情况。

·复用性·从长远来看,链路构建、事件/指标采集/故障诊断等模块是稳定性领域可复用的基础设施,构建为独立的通用模块。约束说明: ·基于Quake构建,流量记录、回放、压力等均依赖Quake。

下面对一些关键模块的设计进行详细介绍。链接治理模块设计 图4 链接治理示意图 链接治理模块是在链接构建模块的基础上实现的。

链接构建模块,底层以闭包表的形式存储两个维度(服务和接口)的链接关系,并会自动构建或定期更新。链路管理模块主要提供链路入口选择、链路标注、服务出口分析、出口Mock配置等功能。

如图4所示,注册压测的服务构成了压测服务的范围,这也决定了各个环节的边界。通过系统自动构建的树形结构中的链接关系,可以辅助压力测试人员梳理整个链接。

解决了以往链接排序依赖翻码等低效手段,缺乏全链接视角无法实现完整排序的问题。等等问题。

图 5:插座模拟已配置。同时,可以根据接口对整个压测范围进行手动标注。

哪些需要mock,哪些不需要mock,这样就可以持续维护压测特有的链接信息。对于需要Mock的外部接口(图4中的C接口),待压测系统通过引入专有的SDK来获得导出配置的Mock的能力。

如图5所示,这里使用了美团九鱼Mock平台的基本能力,并使用JVM-Sandbox作为AOP工具,动态增强配置的需要Mocking的外部接口。调用接口时,判断是否为压测流量。

如果是,则使用Mock逻辑进行模拟延迟处理,并返回预先配置的响应数据。这种情况下,首先简化了导出Mock的操作,业务代码中的Mock逻辑0侵入;其次,将之前的local Mock和Mockserver两种方案替换为一种方案,方便统一管理;第三,在实际压测过程中,平台还可以通过SDK收集Mock逻辑执行数据,并自动与后台标记的Mock数据进行比对,以确保应该mock的导出确实被mock了。

图6 数据建设 数据建设模块是为了解决不同业务的基础数据和流量数据的差异化建设流程。提出了两个关键概念:数据构建逻辑和数据构建过程。

数据构造逻辑是细粒度的、可重用的数据构造基本单元,由一段Java代码表示。平台提供统一、抽象的数据构建接口。

基于Java动态编译技术,开发了Java版本的脚本引擎,支持构造逻辑的在线编辑和更新。同时,基于美团RPC中间件的泛化调用能力,构建了泛化调用工具,帮助用户将对外部基础数据构建接口的调用整合到一个数据构建逻辑中。

数据构建流程定义了生成基础压测数据和流量数据的整个过程。通过与Quake交互,获取原始真实的在线数据;构建了流程引擎的简化版本。

在统一设置过程中,如图6所示,在标准扩展槽中配置了不同类型的数据结构。逻辑和执行顺序用于定义整个数据构造执行过程;最后将构建的流量数据绑定到Quake压测场景,作为后续Quake压测的场景回放流量来源。

通过这样的设计,可以支持任意的数据构造逻辑,通用性强、灵活。同时,它集成了Quake现有的交通记录功能,一键执行数据构建过程,大大提高了效率。

压测验证模块设计 图7 美团服务压测验证图 保证压测的安全性一直是自动化的难点。之前的经验大多是在非生产环境进行压测或者预压测试的过程中,依靠不同业务负责人的手动确认。

在这里,我们为思考压测验证提供了两个新的视角:一是从待压测的服务系统的可压测性角度;另一种是从压测流量特征的角度。第一个角度,支持压测的服务需要隔离压测数据和流量。

对于不同的系统生态系统,需要满足不同的点。对于美团生态下的服务,可以进行压力测试的条件包括支持压力测试的组件版本、满足期望的影子存储配置等。

从这些条件出发,可以获得以下静态验证项: ·服务依赖中间件版本需求验证; ·斑马压测配置验证; ·Cellar/Squirrel压力测试配置验证; ·Mafka压力测试开关同步与验证; ·Service Mock逻辑存在验证。从第二个角度来看,就是要关注压测流程下会产生哪些独特的流量特征数据,并利用这些独特的数据来保证压测的安全性。

这里的数据主要有三类:美团分布式追踪系统(MTrace)中调用链路的压力测试标记数据(正常的压测链路应该一直有压力测试标记,直到压力测试范围的边界节点,请参考参见图4);调用标记为Mock的外部接口时上报的操作数据;基于监控系统获取的压测流量特有的监控数据。利用这些数据,我们设计了三个动态验证项来检测压测标记丢失、Mock出口被调用等异常情况: MTrace链路标记验证从压测链路入口开始,收集压测链路信息。

,验证压测标志信息传输是否符合预期。图8 MTrace链接标记验证图 ·服务Mock逻辑压测标记验证,通过增强的验证逻辑,将执行信息上报给平台,并与Mock配置时的标注数据进行对比进行验证。

图9 Service Mock压测与验证图 · 压测与真实链路进行对比验证。利用链路管理模块的能力构建链路,收集压测监控数据,重构链路,并与真实链路进行对比验证。

图10 压测与真实链路对比除了明确静态和动态压测验证规则外,在具体流程安排上,这些规则在压测时和平时都执行。不仅可以将压测和验证的压力分散到平时,还可以快速发现业务因代码迭代引入的新风险。

压测过程中,通过强制预压测试的流程设计以及静/动态压测验证项目的自动执行,保证安全。如果验证失败,就会发出警报,甚至在允许的情况下,也会直接终止设定的压测计划。

平日里,通过定期进行小流量压测验证,并对施压过程中的QPS进行个位数的精细控制,可以以最小的成本快速发现压测范围内压测安全性的退化情况。压力测试计划管理模块 压力测试计划管理模块旨在提供压力测试计划的预先设置,然后该模块可以自动调度和控制整个压力应用过程。

如图11所示,这里的压测计划是多个压测场景的组合,包括QPS增长计划等信息,主要分为预压测和正式压测两个阶段。自动执行压测计划,可以解决多场景组合压测运行时间较长、多场景压测QPS无法同步更改、压测方无法兼顾运行与维护等问题。

观察等,从而提高效率。同时,压测计划执行状态机中,只有预压测试正常执行后,状态才会转入正式压测的启动状态,提高了压测的安全性。

图11 压测计划执行 从图11可以看出,压测计划模块是整个自动化压测的核心,协调各个模块。执行特定计划任务时产生的事件,触发压测验证检查、压测进度广播、压测监控/告警数据采集,检测服务是否异常,并根据配置终止压测,从而出现故障时及时终止。

损害。最后,报告生成模块接收压测终止事件,汇总各种信息,自动生成包含压测基本信息等多维度信息的压测报告,节省压测后分析的时间。

案例分享以下是根据实际压测流程进行的案例分享。团队/服务注册·设置实施压测的虚拟团队以及压测范围内的应用服务。

链路管理 ·选择压测链路入口,可获取入口下方的接口链路关系树,方便排序。 ·清除需要Mock的外部接口并进行配置。

请参考“链路管理模块设计”部分。应用修改和压测配置 · 修改压测要访问的应用,满足“服务可压测条件”,参见图7。

· 压测应用依赖中间件配置,系统可以自动发现基于构建的链接信息。提供统一的配置和验证页面功能。

Quake准备·压力测试自动化系统基于Quake构建,流量记录、回放、施压等依赖于它。因此,您需要在Quake上配置用于记录流量的“流量任务”和执行压力测试的“压力测试场景”。

数据构建 · 配置数据构建逻辑。当然,现有的逻辑是可重用的单元。

你可以先检查一下现有的逻辑是否能够满足你的需求。 ·配置数据构建流程。

压力测试实施 ·设定压力测试计划,当开始时间到来时,系统将自动启动压力测试。 ·压测过程中,关注压测验证的告警信息并及时处理。

·压力测试结束后,您可以查看压力测试报告。记录并跟踪发现的问题。

总结与展望 目前,压测自动化系统已投入使用,美团酒店、国内度假所有团队均已接入,有效提升了压测效率。未来,我们将在两个大方向上继续打造和升级。

一是将全链路压测放在“容量评估与优化”领域,不仅注重整体系统的稳定性,也希望兼顾成本的平衡;另一方面是与稳定性的其他子领域,比如断层演练、弹性伸缩等进行生态融合,在更多场景下发挥压力测试的作用。最终,通过这些努力,线上系统的稳定性已经成为了板上钉钉的事情。

参考文献 [1] 全链路压测平台(Quake)在美团的实践 [2] 阿里巴巴 JVM-Sandbox [3] Dubbo 的泛化调用 [4] Java 的动态编译 作者简介 欧龙,美团工程师研发,加入美团2006年成立,目前主要负责稳定国内度假交易。

美团全链路压测自动化实践

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 一次性公布18部年度片单,华谊兄弟因缺钱而“负重前行”

    一次性公布18部年度片单,华谊兄弟因缺钱而“负重前行”

    自救还得有库存。 作者|沈周抓住了电影政策放松的消息。 2019年9月16日,华谊兄弟公布了18部年度影片名单。 创头条了解到,除了已经上映的《八佰》外,片单还包括贾樟柯的《一直游到海水变蓝》、冯小刚的《春天一岁》、陈正道的《未来的未来》、周星驰的《美人鱼2》、罗兰艾默

    06-18

  • 高通新一代7nm X55 5G基带芯片发布

    高通新一代7nm X55 5G基带芯片发布

    科技讯讯:就在下周召开的世界通信大会(MWC)之前,移动处理器巨头高通(Qualcomm)正式发布了新一代Snapdragon X55 5G基带芯片。 与此前发布的骁龙X50 5G基带芯片相比,X55 5G基带芯片不仅支持端带通信连接,而且还是首款达到7Gbps速度的基带芯片,比X50的5Gbps速度提升了4

    06-06

  • 山六科技超额完成数千万元Pre-A轮融资,浙民投资领投

    山六科技超额完成数千万元Pre-A轮融资,浙民投资领投

    投资界消息(微信ID:pedaily),山六科技宣布超额完成Pre-A轮数千万元融资,本轮融资由浙民投资领投,华盈投资跟投。 融资资金将主要用于推进公司GMP厂房、医疗器械注册等相关工作,以及拓展公司研发管线。 山六科技是一家基于微流控技术的即时分子诊断解决方案公司。 通过团

    06-18

  • 香港交易所就小鹏汽车上市向投资者提供多项产品选择

    香港交易所就小鹏汽车上市向投资者提供多项产品选择

    香港交易及结算所有限公司(港交所)今日(周一)宣布,将宣布小鹏汽车股份有限公司(小鹏汽车,股份代号:)上市,上市后将推出以下产品及措施,为投资者提供便利有更多的选择。 小鹏汽车期货期权将于7月7日推出;小鹏汽车股票将于7月7日被纳入沽空指定证券名单;小鹏汽车股

    06-18

  • 博士在中国科学技术大学创业,基因测序平台“真麦生物”完成4.1亿元B+轮融资

    博士在中国科学技术大学创业,基因测序平台“真麦生物”完成4.1亿元B+轮融资

    投资界(ID:pedaily)9月15日消息,深圳真麦生物基因测序平台独立研发制造商真麦生物科技有限公司(以下简称:真麦生物)宣布完成总额4.1亿元的B+轮融资,由盛翔生物共同参与科创板上市公司,知名创投机构同创伟业、中欧联合资本,以及珂玺资本、赤石资本等老股东持续投资。

    06-17

  • 6款iOS应用打折,《仙剑奇侠传》史上最低价,还有更多游戏打折

    6款iOS应用打折,《仙剑奇侠传》史上最低价,还有更多游戏打折

    鲜面连接又回来了。 本期精选了以下4款iOS应用和2款iOS游戏在售,以及2款macOS特价应用,可前往客户端限定免费区直接下载。 此外,Steam平台上有5款游戏,Switch平台上有4款游戏,EPIC上有2款免费游戏。 想买就快点吧!对于iOS应用程序,请记住Notes Widget¥1→¥0,这是一个

    06-21

  • 特斯拉降价游戏

    特斯拉降价游戏

    特斯拉能卷起来吗? 在新能源汽车的舞台上,特斯拉的主角光环已经变得有些黯淡。 1月12日,特斯拉发布降价信息:“特斯拉新款Model 3后驱刷新版售价下调1.55万元至24.59万元;Model 3长续航刷新版售价下调1.15万元Model Y后驱版售价降至25.89万元;长续航版售价降至29.99万元

    06-18

  • 继村田制作所之后,另一家大型MLCC制造商也因疫情暂停运营

    继村田制作所之后,另一家大型MLCC制造商也因疫情暂停运营

    全球第一大MLCC制造商村田制作所宣布旗下武雄工厂将于8月25日至31日全面停工,全球第四大MLCC制造商太阳诱电发函称,其位于马来西亚主要供应苹果的工厂受疫情影响,部分工序将暂停,直至9月10日。 据台媒《经济日报》报道,太阳诱电表示,该公司马来西亚工厂的一名员工感染了

    06-08

  • 江西国控向大辰投资5亿

    江西国控向大辰投资5亿

    12月12日,深圳市大辰财智创业投资管理有限公司(以下简称“大辰财智”或“大辰”)与江西省国有资本运营控股集团江西国康股份有限公司(以下简称“江西国康”)在南昌签署战略合作协议。 双方将在资本投资、基金投资、产业培育、人才交流等领域开展全方位合作,打造大湾区与

    06-18

  • 国华材料科技有限公司完成近亿元融资,国投创投领投

    国华材料科技有限公司完成近亿元融资,国投创投领投

    据投资界(ID:pedaily)消息,广东国华新材料科技有限公司(以下简称“国华新材料”)简称“国华材料科技”)已完成近亿元融资。 人民币融资,本轮融资由国投创投领投,华工科技投资跟投。 韬伯资本担任本轮融资首席执行官。 国华材料科技股份有限公司成立于2019年8月,是全

    06-18

  • 正大集团携手高合资本设立100亿元城市更新产业基金

    正大集团携手高合资本设立100亿元城市更新产业基金

    投资社区(微信ID:pedaily)1月8日消息,据中国证券网报道,正大集团与高合资本宣布将共同设立1000亿元专项基金城市更新产业基金,用于投资一线、重点二线等战略城市的街区更新、商业中心或大型商业综合体。 据了解,正大集团与高合资本的此次合作,旨在发挥正大集团在全球产

    06-18

  • 创业明星-极客大数据:培养超级学生,不如打造超级教师

    创业明星-极客大数据:培养超级学生,不如打造超级教师

    “互联网+”热潮尚未退去,“人工智能+”浪潮已开始汹涌。 本期,阿里云创新中心创业者明星是“人工智能+教育”赛道上的先行者。 随着我国经济实力和科研实力不断增强,大数据的应用以其准确、高效的特点,成为DT时代教育行业的新驱动力。 今年以来,吉科大数据专注K12阶段大

    06-18