中台架构下的性能测试实践方法

有同学私信问我:中台服务建设过程中,性能测试如何开展?问题背景如下:

  业务背景:银行业务;

  技术架构:业务应用和中台之间请求统一走ESB;

  当前阶段:中台建设中,一边拆分一边推动业务应用接入;

  具体问题:性能测试范围如何界定?业务应用是否需要纳入压测范围?

  在我看来,这是一个很典型的性能需求分析问题。只有明确了测试的范围和目的,才能制定合理的测试方案,采用正确的测试策略来对中台服务开展性能测试。

  一分钟快速了解中台

  中台这个概念,国内最早是在15年由阿里提出并开始实践的。中台的出现是为前台(业务层)提供服务,支撑业务规模化创新,进而更好的服务用户,让企业业务目标更好的达成。

  现在很多公司的技术部门都有基础架构团队,负责为公司技术部门提供各种支撑技术研发的底层设施和通用框架或工具。简单理解,可以将中台看作一种公司的基础设施,它具备三大特征:敏捷+解耦+服用。

  · 敏捷:业务需求变化快,变更频率以天甚至小时为计,将大应用变为多个小应用,才能支撑业务的敏捷。

  · 解耦:随着业务发展,业务系统间的交互也更复杂,一次变更带来的影响范围可能是多方面的。只有将需要大量交互的功能独立,从应用中拆解出来,才可以使得应用之间耦合度大幅下降。

  · 复用:将公共能力复用,可以提高开发效率,避免重复建设,同时使得数据和流程可以集中得以管理和优化。

  在上述的案例背景下,我个人认为性能测试活动的开展,可以分三步走。

  第一步:验证中台服务水位

  首先中台服务中包含的是多个公共需求组合而成的服务,比如用户、支付、订单业务,以及更基础的服务,如安全认证、权限管理、消息通知等。在开展性能测试活动时,应该遵循这几个步骤:

  ·单机单接口:验证中台服务中某个公共应用功能模块的性能表现,排查明显的性能问题;

  · 单机混合场景:验证中台服务中某个公共应用服务级别的性能表现,得到安全水位的性能指标;

  · 集群扩展能力:中台服务作为基础设施,要满足业务的快速扩展,支撑峰值流量冲击,因此其本身要具备性能的水平扩展能力。集群压测的目的是为了验证服务扩容后,带来的性能提升比率,便于后续的限流降级等服务稳定性保障手段开展。

  单机单接口的目的是性能问题快速排查和性能摸底,单机混合场景是得到服务级别的性能表现,而集群扩展能力的测定依赖与单机混合场景的安全水位下的性能指标数值。

  当然,单机混合场景的开展前提,需要对业务调用关系(业务模型)和调用次数及强弱依赖(流量模型)进行梳理,否则得到的结果往往是不准确的。

  业务模型和流量模型内容,详见:《核心链路四问》《构建三大模型》

  第二步:设定服务保护阈值

  中台服务作为一种基础设施,为业务应用提供支撑,原则上应该无条件支撑业务的扩展和高速迭代。

  但在实际建设和应用过程中,首先应该考虑的是先保障自己的稳定性。只有自身的性能和稳定性足够好,才能支撑业务,否则就会出现前段时间阿里云服务宕机带来的巨大影响和损失。

  中台服务本身是为了业务快速发展提供支撑,降低业务调用之间的耦合,提高复用能力,那么可以将其本身的性能看作一种对业务的承诺。

  即我承诺在多少并发及什么异常场景下,保障自己的稳定性达到多少(比如SLA=99.9999%),而超出的部分,为了保障整体服务的稳定性,我会进行限流降级熔断等措施。

  前面的文章介绍过限流降级熔断隔离等稳定性保障手段,这里大致介绍一下这些应急手段的副作用和相关的冗余手段。比如业务降级是有损的,需要提前进行详细的评估,并和业务方达成一致;

  比如限流熔断除了需要精准的测试得到指标数值之外,还需要完善及时的监控系统以及应急响应机制来支撑,否则大概率会出问题。

  第三步:业务链路端到端压测

  知道了中台服务本身的性能表现,又通过限流降级等手段保障了中台服务其本身的稳定性,接下来就是业务链路端到端压测,也就是全链路压测。

  全链路压测现在已经有了很成熟的落地方案和很多优秀的实践案例,但在现实工作场景中,对大多数公司来说,落地依然是一个很大的挑战。主要原因有如下几项:

  全链路压测并不是一个银弹,它只适合小部分公司,且不能解决所有稳定性问题;

  全链路压测特别是在生产环境落地,最大的挑战不是技术问题,而是跨团队沟通和组织协调问题;

  全链路压测落地的成本其实很高,并不存在什么低成本便捷的落地方案,因此端到端的业务测试性价比更高。

  当然,在上述案例背景下,除了考虑压测和性能优化,还要考虑ESB本身的性能扩展、带宽以及业务团队的配合度。

  复杂的问题往往需要整套的解决方案,但这个解决方案本身,其实是由一个个小而简单的方法构成。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2982009.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

记录一下用MobaXterm建立隧道的配置

【为什么要建立隧道】 在公司环境中,我们通过本地Windows机器没法直接访问公司的服务器(安全考虑,都装了防火墙),要访问公司服务器的通常做法是,在本机安装个代理插件(如Proxy SwitchyOmega&am…

什么因素可以影响到代理IP稳定性?爬虫代理IP有哪些作用?

一、什么因素可以影响到代理IP稳定性 代理IP的稳定性受到多种因素的影响,以下是一些主要的因素: 代理IP的质量:不同的代理IP提供商提供的代理IP质量参差不齐,一些低质量的代理IP可能经常出现连接问题或速度慢的情况,…

有人说展会变成了零售?

最近在听楼下的阿姨们都在讨论他们在展会上淘来的宝贝,价格便宜,货物优美,原因是附近的平乡自行车展会刚刚结束。 从朋友圈里来看,有的去年参展的企业今年没有去参展,有的企业也在坚持参展并告诉展位的位置&#xff0…

qmt教程2----订阅单股行情,提供源代码

链接 qmt教程2----订阅单股行情,提供源代码 (qq.com) qmt教程1---qmt安装,提供下载链接 今天我重新封装了全部qmt的内容,包括数据,交易 qmt交易 我本来打算全部上次git的,但是考虑到毕竟是实盘的内容,就放…

Memecoin再迎爆发:是本轮牛市大反弹的开始吗?

在加密货币市场上,Memecoin再度掀起了一波热潮,引发了人们对于本轮牛市是否即将到来的猜测和期待。近期,诸如BONK、PEPE和POPCAT等Memecoin的价格出现了显著的上涨,涨幅之大令人瞠目。这一现象引发了广泛的讨论,人们开…

(vue)el-select选择框加全选/清空/反选

(vue)el-select选择框加全选/清空/反选 <el-form-item label"批次"><el-selectv-model"formInline.processBatch"multiplecollapse-tagsfilterableplaceholder"请选择"style"width: 250px"no-data-text"请先选择企业、日…

程序员英语之Spring篇

spring.io/quickstart 本期课程讲解Spring官网的快速上手页面 官网地址 https://spring.io/quickstart Spring Quickstart Guide Spring 快速开始指南 Guide 指南 What you’ll build 接下来你将要构建的是什么&#xff1f; build 构建 You will build a classic “H…

科学高效备考AMC8和AMC10竞赛,吃透2000-2024年1850道真题和解析

如何在校内学习之余科学、有效地备考AMC8、AMC10美国数学竞赛&#xff1f;多做真题&#xff0c;吃透真题是科学有效的方法之一&#xff0c;通过做真题&#xff0c;可以帮助孩子找到真实竞赛的感觉&#xff0c;而且更加贴近比赛的内容&#xff0c;可以通过真题查漏补缺&#xff…

AIGC技术的发展现状与未来趋势

AIGC&#xff08;人工智能生成内容&#xff09;技术是近年来快速发展的领域之一&#xff0c;它涉及使用人工智能来创建或编辑内容&#xff0c;包括文本、图像、音乐和视频等。这项技术的进步为各个行业带来了革命性的变化&#xff0c;同时也引发了一系列伦理和风险问题。 一、技…

ACL的知识点和实验

1.ACL的组成 ACL由若干条permit或deny语句组成。每条语句就是该ACL的一条规则&#xff0c;每条语句中的permit或deny就是与这条规则相对应的处理动作。 2.规则编号 &#xff08;1&#xff09;一个ACL中的每一条规则都有一个相应的编号。 &#xff08;2&#xff09;步长是系…

嵌入式Linux driver开发实操(二十二):写一个ALSA驱动程序

如何编写ALSA(高级Linux声音体系结构)驱动程序?比如PCI声卡。在其他设备类型的情况下,API也可能有所不同。然而,至少ALSA内核API是一致的。对开发者而言需要具备足够的C语言技能和基本的linux内核编程知识。什么时在ALSA上编写PCI声音驱动程序的标准方法? ALSA驱动程序的…

mysql-connector-java和spring-boot-starter-jdbc和mybatis-spring-boot-start

mysql-connector-java和spring-boot-starter-jdbc和mybatis-spring-boot-start JDBC是什么意思&#xff1f; JDBC是使用java语言操作mysql数据库的规范&#xff0c;java语言必须按照这个规范写才可以操作mysql数据库。 mysql-connector-java 在最开始的时候 程序中是不允许…

游泳耳机怎么选?这四款游泳耳机一定要看!综合实力遥遥领先!

如今&#xff0c;在健康生活的风潮推动下&#xff0c;游泳作为一种全身性的有氧运动&#xff0c;不仅深受广大健身爱好者的青睐&#xff0c;更是许多人夏季消暑、塑形和放松心情的首选方式。而随着科技的不断进步&#xff0c;传统的游泳体验也逐渐与现代科技产品相结合&#xf…

2024.04.24记录所解决的问题

一解决了使用VM虚拟机作为dubbo-admin服务器提供者在浏览器访问失败问题 一开始在服务器上面即使运行了zookeeper和dubbo-admin容器都没有访问出dubbo-admin的界面管理器。查看了其他映射端口以及注册中心的地址等等其他参数&#xff0c;都不行&#xff0c;然后就一直没有去处…

JetBrains RubyMine v2024.1 安装教程 (Rails/Ruby集成开发环境)

前言 JetBrains RubyMine是一款杰出而全面的Ruby代码编辑器&#xff0c;能够深入识别动态语言的细节&#xff0c;为用户提供智能编码辅助功能。它能够自动检测错误代码段&#xff0c;并提供智能的编写和修复代码的建议&#xff0c;帮助用户进行代码重构。此外&#xff0c;Ruby…

前端css中filter(滤镜)的使用

前端css中filter的使用 一、前言二、补充内容说明三、模糊&#xff08;一&#xff09;、模糊效果&#xff0c;源码1&#xff08;二&#xff09;、源码1运行效果1.视频演示2.截图演示 四、阴影&#xff08;一&#xff09;、阴影效果&#xff0c;源码2&#xff08;二&#xff09;…

SS26A-ASEMI超低VF值肖特基SS26A

编辑&#xff1a;ll SS26A-ASEMI超低VF值肖特基SS26A 型号&#xff1a;SS26A 品牌&#xff1a;ASEMI 封装&#xff1a;SMA 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;2A 最大循环峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;60V 最大正向电压&a…

社交媒体数据恢复:Facebook

在使用Facebook的过程中&#xff0c;可能会出现数据丢失的情况&#xff0c;如误删了重要的帖子、照片或其他文件。在这种情况下&#xff0c;你可以尝试以下方法来恢复Facebook的数据。 首先&#xff0c;确保你备份了Facebook的数据。如果你定期备份数据&#xff0c;那么恢复起…

探索SmartEDA:电路仿真的教学新境界

在电子工程的教学领域&#xff0c;随着技术的飞速发展&#xff0c;传统的教学方法已经难以满足现代学生的学习需求。近年来&#xff0c;电路仿真软件在教学中的应用逐渐受到关注&#xff0c;而SmartEDA作为一款功能强大的电路仿真软件&#xff0c;为电子工程教学带来了革命性的…

GaussDB数据库SQL系列-聚合函数

背景 在这篇文章中&#xff0c;我们将深入探讨GaussDB数据库中聚合函数的使用和优化。聚合函数是数据库查询中非常重要的工具&#xff0c;它们可以对一组值执行计算并返回单个值。例如&#xff0c;聚合函数可以用来计算平均值、总和、最大值和最小值。 这些功能在数据分析和报…