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

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

  业务背景:银行业务;

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

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

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

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

  一分钟快速了解中台

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何部署 wfs 分布式服务

说明: wfs是海量小文件存储系统。wfs1.x不直接支持分布式存储,但为了应对大规模部署和高可用需求,推荐采用如Nginx这样的负载均衡服务,通过合理的资源配置和定位策略,可以在逻辑上模拟出类似分布式的效果。也就是说&am…

【kettle002】kettle访问人大金仓KingbaseES数据库并处理数据至execl文件

一直以来想写下基于kettle的系列文章,作为较火的数据ETL工具,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。 熟悉、梳理、总结下人大金仓KingbaseES数据库相关知识体系 kettle访问人大金仓KingbaseES数据库…

Linux网络-DHCP原理与配置

目录 一.DHCP工作原理 1.了解DHCP服务 1.1.使用DHCP的好处 1.2.DHCP的分配方式 2.DHCP的租约过程 2.1.DHCP工作原理 2.2.DHCP交互过程 二.DHCP服务器的配置 1.关闭防火墙 2.检查并且安装DHCP有关软件包 3.查看系统的配置文件 3.1.设置参数 4.修改网络 4.1.修改虚…

redis基于Stream类型实现消息队列,命令操作,术语概念,个人总结等

个人大白话总结 1 在Redis Stream中,即使消息被消费者确认(acknowledged, ACK),消息也不会自动从Stream数据结构中删除。这与Kafka或RabbitMQ等传统消息队列系统的做法不同,在那些系统中,一旦消息被消费并…

MyBatisPlus详解(四)通用枚举、JSON类型处理器、配置加密、自动分页插件与工具类

文章目录 前言3 扩展功能3.3 通用枚举3.3.1 使用枚举类3.3.2 功能测试 3.4 JSON类型处理器3.4.1 使用JSON类型处理器3.4.2 功能测试 3.5 配置加密3.5.1 生成密钥3.5.2 修改配置3.5.3 功能测试 4 插件功能4.1 自动分页插件4.1.1 配置分页插件4.1.2 分页API 4.2 通用分页实体4.2.…

递归实现斐波那契数列的空间复杂度的讲解

题目:计算斐波那契数列Fib的空间复杂度 过程图解: 理解要点: 递归的运算顺序和方式不是同时进行图中的所有Fib函数,而是有顺序的! 第一步:单独的一个Fib(N)进行到底Fib&#xff08…

XV6源码阅读——进程地址空间

文章目录 前言页表实际情况 前言 一个本硕双非的小菜鸡,备战24年秋招。打算尝试6.S081,将它的Lab逐一实现,并记录期间心酸历程。 代码下载 官方网站:6.S081官方网站 页表 每个进程都有一个单独的页表,当xv6在进程之…

Linux套接字编程详解

Linux套接字编程 预备知识IP地址和MAC地址套接字结构网络字节序 UDP套接字编程服务端代码客服端代码 TCP 套接字守护进程 计算器模块1 日志头文件序列化和反序列化 预备知识 IP地址和MAC地址 MAC地址用来在局域网中标识唯一主机 Ip地址用于在广域网中标识唯一主机 &#xff0…

2767. 将字符串分割为最少的美丽子字符串

2767. 将字符串分割为最少的美丽子字符串 Java: class Solution {int cnt;int ans;int[] arr;Set<Integer> set;private void dfs(String s, String s1, int pos, int len) {if (pos len) {ans Math.min(ans, cnt);return;}for(int i pos; i < len; i) {String s2…

软件游戏缺失d3dcompiler_43.dll怎么修复?分享多种靠谱的解决方法

在我们日常频繁地操作和使用电脑的过程中&#xff0c;时常会遇到一些突发的技术问题。其中一种常见的情况是&#xff0c;在尝试启动或运行某个应用程序时&#xff0c;系统会弹出一个错误提示窗口&#xff0c;明确指出当前电脑环境中缺少了一个至关重要的动态链接库文件——d3dc…

Linux配置腾讯云yum源(保姆级教学)

1. 备份原有的 yum 源配置文件 例如&#xff1a; mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2. 下载腾讯云的 yum 源配置文件 例如&#xff1a; wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/…

将数字状态码在后台转换为中文状态

这是我们的实体类 可以看出我们的状态status是2如果返回到前端我们根本不知道2代表的是什么&#xff0c;所以我们需要再这里将数字转换成能看懂的中文状态&#xff0c;首先我们创建一个枚举类 先将我们状态码所对应的中文状态枚举出来&#xff0c;然后创建一个静态方法&#…

基于OpenCV+QT的人脸识别打卡项目

1.基本概念 基于OpenCV的人脸识别是一个多步骤的过程&#xff0c;通常涉及以下步骤&#xff1a; 人脸检测&#xff1a;使用Haar级联或深度学习模型来检测图像中的面部区域。OpenCV提供了预训练的Haar级联分类器&#xff0c;可以用于快速检测。 特征提取&#xff1a;一旦检测到…

eCharts 折线图 一段是实线,一段是虚线的实现效果

在lineStyle里写了不生效的话&#xff0c;可以尝试数据拼接 option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yAxis: {type: value},series: [{data: [150, 230, 224,218 ,,,],type: line},{data: [,,, 218, 135, 147, 260],type: line,lineStyl…

【御控工业物联网】JAVA JSON结构转换、JSON结构重构、JSON结构互换(5):对象To对象——转换映射方式

御控官网&#xff1a;https://www.yu-con.com/ 文章目录 御控官网&#xff1a;[https://www.yu-con.com/](https://www.yu-con.com/)一、JSON结构转换是什么&#xff1f;二、术语解释三、案例之《JSON对象 To JSON对象》四、代码实现五、在线转换工具六、技术资料 一、JSON结构…

JavaScript实现代码雨

一、功能描述 使用canvas实现一个代码雨的功能&#xff0c;炫一个~~~ 二、上码 html <canvas id"canvas"></canvas> js let canvas document.querySelector(canvas);let ctx canvas.getContext(2d);// screen.availWidth:可视区域的宽度canvas.width…

深度学习框架pytorch:tensor.data和tensor.detach()的区别

本文重点 本文我们区别一下tensor.data和tensor.detach(),我们所讲解的都是pytorch的1.0版本的情况 官方解释 返回一个新的张量,它与当前图形分离。结果永远不需要梯度。返回的张量与原始张量共享相同的存储空间。将看到对其中任何一个的就地修改,并且可能在正确性检查中…

测试用例设计方法-探索性测试

生活犹如骑单车&#xff0c;唯有前进才能保持平衡。大家好&#xff0c;今天给大家分享一下关于探索性测试的方法&#xff0c;在探索性测试中更加考验测试人员的经验&#xff0c;所以我们在平时的测试工作中一定要多记录、多总结、多复盘&#xff0c;对于经常出现的bug深究其根本…

【论文解析】笔触渲染生成 前沿工作梳理

最近的一些工作梳理 2023年 Stroke-based Neural Painting and Stylization with Dynamically Predicted Painting Region 2022年Im2Oil: Stroke-Based Oil Painting Rendering with Linearly Controllable Fineness Via Adaptive Sampling 文章目录 1 Stroke-based Neural P…

Python实现“黑猫投诉平台,舆论监控系统”

黑猫投诉平台&#xff0c;舆论监控系统 BuzzMonitor https://github.com/nangongchengfeng/BuzzMonitor.git 简介 "黑猫投诉"舆论监控系统是一款专为快速识别和响应网络投诉而设计的应用&#xff0c;旨在帮助企业或机构第一时间掌握公众意见和反馈。通过实时监控网…