如何使用 PTS 快速发起微服务压测

简介:本文讲阐述什么是微服务架构、微服务架构对系统稳定性带来的影响,以及用性能测试验证稳定性的必要性、用户进行微服务压测的痛点和 PTS 的独特优势、云上使用 PTS 快速发起微服务压测的步骤,以及压测完成后排查分析相关问题的 Tips。

作者:亦炎

什么是微服务

通常而言,微服务架构是一种架构模式或者说是一种架构风格。

本文阐述了:

  1. 什么是微服务架构
  2. 微服务架构对系统稳定性带来的影响,以及用性能测试验证稳定性的必要性
  3. 用户进行微服务压测的痛点和 PTS 的独特优势
  4. 云上使用 PTS 快速发起微服务压测的步骤,以及压测完成后排查分析相关问题的 Tips

它提倡将单一应用程序划分成一组小的服务,每个服务运行独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。

微服务以其高内聚、低耦合等特性,提供了更好等容错性,也更适应业务等快速迭代,为开发人员带来很多便利。但是随着业务的发展,微服务拆分越来越复杂,模块越来越多,意味着服务间的调用链路比以前延长很多,在调用链路上发生故障的几率也就随之增大,这给我们的系统稳定性带来不小的挑战。比如:

  1. 在单服务流量激增情况下,需要快速响应扩容;
  2. 当一个服务无法承受大请求压力的时候,是否会影响所依赖的其他服务;
  3. 整个系统被拆成了很多的微服务,当某个服务出现故障时,是否有容错手段能够让业务继续跑下去,而不影响整体应用。

利用性能压测验证微服务稳定性

保障微服务稳定性的常见方式

1.超时机制如果调用一个接口,但迟迟没有返回响应的时候,我们往往需要设置一个超时时间,以防自己被远程调用拖死。超时时间的设置也是有讲究的,设置的太长起的作用就小,自己被拖垮的风险就大,设置的太短又有可能误判一些正常请求,大幅提升错误率。在实际使用中,我们可以取该应用一段时间内的 TP999 的值,或者取 TP95 的值 * 2。

2.限流限流就是限制服务请求流量,服务提供者可以根据自身情况(容量)给请求设置一个阈值,当超过这个阈值后就丢弃请求,这样就保证了自身服务的正常运行。阈值的设置可以针对两个方面考虑,一是 QPS 即每秒请求数,二是并发线程数。从实践来看,我们往往会选择后者,因为 QPS 高往往是由于处理能力高,并不能反映出系统“不堪重负”。

3.降级熔断由于微服务调用关系的复杂性,如果调用链路中的某个资源不稳定,最终会导致请求发生堆积。我们需要在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断。

4.扩容链路中的某一应用可能出现 cpu 使用率较高或者连接池资源不够用(rpc、jdbc、redis 连接池等),但本身对于拿到连接的请求处理又很快,这一类需要横向扩展资源。

利用性能压测验证微服务稳定性

那么如何验证上述保障稳定性的措施是否满足我们的需要?

1. 通过微服务性能测试,我们可以得到系统在“高压”下 RT 的 TP95 和 TP999 等指标分布,根据这些指标设计合理的超时时间;

2. 在 RT 没有明显飙升的情况下能承受多高并发的请求,摸清调用链路请求堆积的节点,设计合理的限流、降级熔断策略,在尽可能不影响用户体验的情况下,更好的提升微服务稳定性。

3. 验证服务扩容的有效性。

因此,无论是为了评估单服务上线或变更对系统性能对影响,还是需要对服务精准扩容并验证扩容的有效性,在全面正式压测前,对重点微服务应用做性能测试,摸清局部对性能极限,都是必不可少的。

微服务压测痛点

目前常见的微服务压测工具,比如基于自定义插件的 JMeter 和 Gatling,都存在以下难以避免的痛点:

1. 出于安全性的考虑,单个微服务应用不会暴露公网入口,这时就需要压测工具有打通 VPC 内网的能力,用户自建成本较高。

2. 无法模拟跨应用多接口的调用。

3. 每个服务的注册中心地址、接口名和参数配置起来十分繁琐。

4. 缺乏直观的调用链分析和监控。

使用 PTS 压测微服务的优势

PTS 作为具备强大的分布式压测能力的 SaaS 平台,用户不需要去管底层环境的搭建,便可直接使用百万级的并发模拟能力和数据分析汇总能力,在微服务压测领域具有独特优势。

  1. 安全实惠,支持 VPC 内网压测PTS 支持 VPC 内网压测,可以在压测时快速打通施压机与用户VPC网络,保证内网压测的网络畅通。在压测结束后,也会即时关闭网路通道,保证网络安全。
     
  2. 随心所欲,支持多应用多接口场景编排一个微服务应用从开发到上线需要做哪些性能测试?首先我们需要对单服务的接口进行性能测试,可能会发现一些应用逻辑的问题,这时候有针对性的进行性能优化。当我们把单服务接口性能优化完以后,我们就需要结合用户场景进行多应用多接口的场景性能测试,这时候可能会发现一些服务与服务之间的接口调用的问题,同样也会进行对应的性能优化;最后我们还需要关注服务的伸缩能力验证,从而确定我们每一个服务所支持的扩容模型。
     
  3. 使用简单,支持直接压测 EDAS/MSE 应用PTS 天然打通 EDAS/MSE 应用,可直接对其发起压测,省去配置各项服务参数的烦恼,快捷方便。
     
  4. 直观清晰,支持调用链分析和监控在启动压测之前,用户可以接入 PTS 的问题诊断功能,实现微服务应用之间的调用链分析和监控。针对 Java 类型的服务,用户侧无需进行业务侧代码改造即可完成问题诊断的探针接入。对于压测中出现的各种异常信息,即使调用关系十分复杂,用户也能清晰地分析问题所在。

PTS 微服务压测的原理

我们通常会使用 RPC 框架来实现微服务间的远程调用,RPC 框架包含三个最重要的组件,如下图所示,分别是客户端、服务端和注册中心。

在一次 RPC 调用流程中,这三个组件是这样交互的:

  • 服务端在启动后,会将它提供的服务列表发布到注册中心,客户端向注册中心订阅服务地址;
  • 客户端会通过本地代理模块 Proxy 调用服务端,Proxy 模块收到负责将方法、参数等数据转化成网络字节流;
  • 客户端从服务列表中选取其中一个的服务地址,并将数据通过网络发送给服务端;
  • 服务端接收到数据后进行解码,得到请求信息;
  • 服务端根据解码后的请求信息调用对应的服务,然后将调用结果返回给客户端。

在实际压测中,PTS 扮演着客户端的角色,并且在本地维护了一个服务列表,每 5 秒主动请求一次注册中心,更新该服务列表,在保证实时性的同时,尽可能降低注册中心的负载。原理如图所示。

云上使用 PTS 快速发起微服务压测

  1. 创建场景。PTS 目前支持 Dubbo、Spring Cloud 和 gRPC 三种微服务框架,这里以 Dubbo 为例,压测事先接入的 EDAS 应用。首先,我们在 PTS 控制台的【压测中心】->【创建场景】中创建 Dubbo 压测场景;

2. 选择应用。我们选择压测应用来源为【EDAS】,地域为【杭州】,选择默认微服务空间;

3. 编辑场景。在场景配置-基础配置页中选择需要压测的应用、接口和方法,设置合理的连接和响应超时时间;PTS 支持同时压测多应用和多接口,还可以借助控制器与定时器实现场景编排。

4. 最后,在施压配置页中,用户只需要选择微服务应用所在的 VPC 内网、安全组、交换机,即可开启 VPC 内网压测。让您的服务无需暴露公网入口,也可以探测出性能指标。此外,PTS 还推出了 VPC 压测专属资源包[1],价格只需公网压测 1/10。

常见微服务性能测试问题分析

  1. 存在部分响应超时:a) 服务器繁忙,如某个服务节点 CPU 利用率高
    b) 网络 IO 超过 VM/EIP 带宽
    c) 后端微服务、数据库的超时时间设置过长
  2. TPS 未随着并发数增长而上升:a) 系统性能到达瓶颈,持续并发加压过程中响应时延增加(可观察响应区间统计)
    b) 验证进一步加压是否会出现非正常响应
     
  3. 运行一段时间后全部响应超时或者检查点校验不通过:a) 大压力导致系统中某个微服务崩溃
    b) 后端数据库无响应
  4. TP90 响应时延较短,TP99 时延高:a) 系统性能接近瓶颈
    b) 验证进一步加压是否会出现非正常响应

总结

本文阐述了:

  1. 什么是微服务架构
  2. 微服务架构对系统稳定性带来的影响,以及用性能测试验证稳定性的必要性
  3. 用户进行微服务压测的痛点和 PTS 的独特优势
  4. 云上使用 PTS 快速发起微服务压测的步骤,以及压测完成后排查分析相关问题的 Tips

原文链接

本文为阿里云原创内容,未经允许不得转载。 

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

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

相关文章

一首让计算机崩溃的歌曲!

大家好,我是轩辕。想象一个场景:手机里播放一首音乐,然后你带着手机从一台电脑旁经过,电脑就被你弄崩溃死机了。这是不是有点像电影里的桥段?一年前,我写过一篇文章:电脑关机了,黑客…

OpenYurt 之 Yurthub 数据过滤框架解析

简介:OpenYurt 是业界首个非侵入的边缘计算云原生开源项目,通过边缘自治,云边协同,边缘单元化,边缘流量闭环等能力为用户提供云边一体化的使用体验。在 Openyurt 里边缘网络可以使用数据过滤框架在不同节点池里实现边缘…

金融核心系统云原生转型的三个挑战、六个误区和四个步骤

嘉宾 | 马振雄出品 | CSDN云原生近年来,云原生技术发展如火如荼,IT系统云原生转型已成共识,留给各行各业的只是何时云原生、怎样云原生的时间和方式问题。金融行业作为各类转型历来的排头兵,在推进云原生转型上同样不逞多让。金融…

Java 定时任务技术趋势

简介:定时任务是每个业务常见的需求,比如每分钟扫描超时支付的订单,每小时清理一次数据库历史数据,每天统计前一天的数据并生成报表等等。 作者:黄晓萌(学仁) Java 中自带的解决方案 使用 Ti…

从再造到赋能——360数科举办第二届技术开放日

8月31日,360数科在北京举办“从再造到赋能——2022年技术开放日”。这是360数科的第二届开放日,全面展示了公司在金融科技业务全环节的精细化运营成果,呈现了360数科从市场连接者到流程再造者的技术演化历程,展望了其成为行业赋能…

EventBridge 特性介绍|以 IaC 的方式使用 EventBridge

简介:本文将重点介绍 EventBridge 和 IaC 的重点概念和特性,然后演示如何应用 IaC 理念自动化部署 EventBridge 来使用这些概念和特性。 作者:王川(弗丁) 引言 EventBridge 作为构建 EDA 架构的基础设施&#xff0c…

如何使用 Serverless Devs 部署静态网站到函数计算(上)

简介:部署个静态网站到函数计算~ 前言 公司经常有一些网站需要发布上线,对比了几款不同的产品后,决定使用阿里云的函数计算(FC)来托管构建出来的静态网站。 FC 弹性实例自带的500 Mb 存储空间对静态网站来说简直是太充足了 。 函…

盛邦安全创始人权晓文入选IDC中国CSO名人堂十大人物

在近日举办的IDC 2022 CSO全球网络安全峰会(中国站)上,盛邦安全入选API领域推荐厂商,盛邦安全创始人权晓文入选“中国CSO名人堂(十大人物)”,展现了盛邦安全在网络安全创新方面的不断进取和突出…

硬核调试实操 | 手把手带你实现 Serverless 断点调试

简介:本文将借助 Serverless Devs 工具,对函数计算 (FC)应用的断点调试步骤进行详细指导,手把手带你实现 Serverless 的断点调试,并从以下四个方面为你厘清“硬核调试”的脉络步骤,干货满满。 导读&#x…

兑现 Service Mesh 的新价值:精确控制“爆炸半径”

简介:本文分享了阿里云内部所沉淀的全链路流量打标与路由的能力,做出服务网格技术新体验的同时,很好地兑现了服务网格的新价值。 作者:至简 软件是以持续迭代的方式去不断演进的。某种程度上,我们并不担心软件不完善…

15M安装包就能玩《原神》,带你了解云游戏背后的技术秘密

简介:对于大多数玩家来说,云游戏已经不是一个陌生的概念,它经常和秒玩、不吃设备、大屏临场感、上手门槛低、真香等字眼一起出现在评论留言区。的确,对于既想尝试高品质游戏大作又不想一直卷装备的玩家来说,云游戏做到…

ref绑定dom的三种写法

1、字符串形式 这种字符出串写法因为效率不好&#xff0c;所以不推荐使用 语法 标签上使用ref"name" 进行绑定 方法中this.refs.name拿到dom <input ref"input1" type"text" placeholder"点击按钮弹出内容" /> <button onC…

一文看懂边缘云在广电行业的应用

简介&#xff1a;随着中国广电的5G布局在不断加速&#xff0c;各地广电运营商均已开展面向边缘云建设和业务探索。边缘云作为5G网络架构中关键一环&#xff0c;具有广覆盖、低时延、大带宽的技术特点&#xff0c;是打通智慧广电建设的“经脉”&#xff0c;对未来开展4K/8K超高清…

2022 互联网中秋月饼大赏,腾讯送火腿,字节寓意圆满,你最钟爱哪款呢?(文末有抽奖)...

整理 | 梦依丹出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;配图来自视觉中国又是一年花好处&#xff0c;人月中秋两团圆&#xff01;今年的中秋&#xff0c;你是在家乡还是在他乡度过呢&#xff1f;无论在何处&#xff0c;只要心在一起&#xff0c;多远都不是距…

宜搭小技巧|自动计算日期时长,3个公式帮你敲定

简介&#xff1a;使用「时间函数」实现日期时长自动计算功能&#xff0c;让表单填写更轻松。 上一期&#xff0c;我们学会了如何巧用日期组件保证时间填写不出错。 今天&#xff0c;宜小搭要出差&#xff0c;由于公司要根据出差时长发放补贴&#xff0c;但手动计算出差天数太…

构造函数、实例、原型对象、继承

一、构造函数与原型对象之间的关系&#xff1a; 有一个Star构造函数&#xff0c;每一个构造函数里面都有一个原型对象&#xff0c;是通过构造函数的prototype指向这个原型对象的 同样在这个原型对象里面也有一个属性叫constructor&#xff0c;它又指回了构造函数 可以把构造函…

从中心走向边缘——深度解析云原生边缘计算落地痛点

简介&#xff1a;边缘计算平台的建设&#xff0c;以 Kubernetes 为核心的云原生技术体系&#xff0c;无疑是当前最佳的选择与建设路径&#xff1b;但是云原生体系庞大&#xff0c;组件复杂&#xff0c;将体系下沉至边缘会面临很大的挑战与困难&#xff0c;同时充满巨大的机遇及…

5G+元宇宙创新应用来了,第五届“绽放杯”5G 应用征集大赛云 XR 专题赛落下帷幕...

2022“云 XR 年度十大标杆案例”诞生&#xff01;8 月 31 日&#xff0c;第五届“绽放杯”5G 应用征集大赛云 XR 专题赛决赛在浙江杭州举办&#xff0c;经全天激烈角逐&#xff0c;“中国历代绘画大系 5G 云 XR 应用”等 10 个优秀项目脱颖而出荣获一等奖&#xff0c;并将经组委…

阿里云资深专家李国强:云原生的一些趋势和新方向

简介&#xff1a;云原生不仅仅是技术&#xff0c;更重要的是云原生技术需要和云计算进行结合&#xff0c;帮助用户构建云原生架构的应用。 2021 年 11 月 26 日&#xff0c;阿里云用户组&#xff08;AUG&#xff09;第 3 期活动在广州顺利举行。具有丰富的容器、微服务等领域经…

从建好到用好,阿里云原生微服务生态的演进

简介&#xff1a;随着微服务技术的成熟&#xff0c;微服务核心架构分层愈加清晰&#xff0c;技术标准化和产业化正在形成&#xff0c;服务治理成为用好、管好服务的必选项&#xff0c;服务网格则成为多语言微服务架构下的技术趋势&#xff0c;阿里云原生微服务生态的演进恰好映…