链路压测(全链路压测技术 架构)

知梧 711 2022-12-14

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

本篇文章给大家谈谈链路压测,以及全链路压测技术 架构对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享链路压测的知识,其中也会对全链路压测技术 架构进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

  • 1、全链路压测流量模型

  • 2、阿里云服务器ECS如何选择?性能测试PTS助你测试和选择阿里云服务器

  • 3、全链路Controller压测负载均衡


全链路压测流量模型

现在全链路越来越火,各大厂商也纷纷推出了自己的全链路压测测试方案。特别是针对全链路压测流量模型,各家方案都有所不同。最近我看了一些这方面的资料,有一些感悟。分享给大家。

全链路压测流量模型的梳理呢,这里就先不讲了,各家公司自有司情在。因为主要是全链路压测模型的实现,其实实现也对应了流量模型的梳理结果。

业界常用的三种方一种:是基于业务模型的实现,一种是基于真实流量的录制回放,最后一种是灰度分流。

这个是一种比较常用的方式。首先要对公司业务模型进行梳理,也就是说对公司的业务链路进行梳理。这里的业务链路可能会比较复杂,不是像很多案例中到的了就非常流行畅的一条链路,中间很有可能会出现各种各样的支路。如果图图形化展示的话,某一条链路应该就是一个树形结构。树形结构的开始是用户的入口页一般就是入口页面的登陆,或者说是首页接口。树形结构的右侧是用户的出口,这里根据业务模型不同,用户的出口会非常的多,所以大多数来时候来讲,这就是一个分叉的树形结构。

要对这样的流量模型进行实现。是比较困难的。首先要梳理出这样的业务模型,就不太容易,再加上接口的相互调用啊,数据之间的相互依赖又可能是复杂程度增加一个量级。所以一般的实现方式就是做归拢。将比较复杂的树形结构简单化,或者干脆将以个业务联络分解成n个列有链路。然后分别实现。最终将流量汇聚,就变成了整个业务链路的流量模型实现。

在业务模型实现这个方向,各家都有不同的实现方式啊,基本上就分为工具以及脚本实现。我自己不怎么用工具做过接口的性能测试,全都是使用java和groovy脚本去实现的。首先,我会实现一个基于接口的业务测试框架,将每一个接口封装成一个方法。接口的参数即是这个方法的参数。然后将每一个用户封装成一个对象。将用户的各种信息变成这个对象的属性。然后用户在请求不同的接口的时候对用户的属性进行赋值这样就达到了一个参数传递的目的。然后通过调用不同的方法,我们就可以实现对不同接口的请求。通过控制参数或者说接口请求的频率,我们就可以达到控制当前用户。在整个业务链的走向。

基于流量录制和回放,这个是最容易实现的方式。也是最容易贴近真实情况的方式。哦,我接触到的主要有一个回放模型,就是用golang语言写的goreply。go语言的性能是非常好的,用于性能测试足够满足用户的需求。大多数公司都会选择在原生引擎的基础上做一些封装。然后对对业务进行一些兼容,最主要的还是适配流量来源。通常流量的来源是通过日志文件来获取的,但是我看行业内也有通过一些固定的流量存储分析引擎去完成。这里的技术我不是太熟,也就不多分享啦。

我觉得基于流量录制回放这种模式有一个比较难以解决的问题:流量的不可见性。一般来说,录制流量会非常大。介于几十万上百万之间。这么规模大的流量,是很难对他进行可视化的。常遇到的一个问题,就是对于一些请求量非常小的接口。录制的时候可能会录丢。还有一种就是录制流量的时间范围不会太广。那么录制出来的流量文件只能反映录制时的流量模型,并不能反映其他录制时间段的流量模型。如果某个服务的流量是根据时间变化的。那么就需要对多个时间段都录制流量,然后进行合并。由于流量的不可见性,所以对流量的模型进行分析,就会显得比较麻烦。

这是我在某个会议上看到大佬分享的一个方案。灰度大家听的可能比较多的是灰度发布。就是将服务或者app更新范围限制在某些一批人,或者说某个地理范围。这里讲的灰度分流,其实核心上差不多,就是将线上的一部分流量转到某些机器上。以实现对这些机器所在服务的一些压测。这种方案。基于线上流量完成,所以几乎不需要测试。投入过多的资源进行开发实现。这种方案有点儿基于业务模型和基于流量录制取了一个中间态。既能保证流量的真实有效性。又可以避免开发测试脚本带来的负担。

这种方式对于公司的架构,主或者说是分流的实现来说,技术难度是比较高的。因为他用的全都是用户的真实数据,所以一旦出现问题的话,这个问题影响范围不太可控,而且比较严重。对于接收灰度分流流量的机器来说,压测流量完全真实。但是他也无法避免基于流量录制,回放同样的问题。就是流量的不可见性以及流量与时间可能存在于一个关联关系并不是线性的。甚至这一点流量的灰度分流还不如流量的录制与回放。我想这也是。我身边接触到的公司,都没有采用这种方案的原因吧。

阿里云服务器ECS如何选择?性能测试PTS助你测试和选择阿里云服务器

阿里云服务器ECS如何选择?很多新手用户并不知道PTS是什么,如果你不知道如何选择阿里云服务器ECS产品,性能测试PTS可以很好的帮助你快速对云服务器进行压力测试,从而助你选择适合自己的阿里云服务器ECS,下面是性能测试PTS详解!

阿里云开发者社区最近推出了一个“ ECS 选款利器!PTS助您快速上云 ”活动,PTS性能压测包仅需0.99/月起,真实模拟,免去繁琐的搭建和维护成本!现在您可以只支付10块钱不到的试用成本,即可体验使用 PTS 来帮助 ECS 进行容量规划选择合适规格的整个流程!

完成动手实验的同学,即可参与抽奖活动,小米手环 6、蓝牙键盘、掌上游戏机、笔记本支架、 数据线、优惠券等丰富奖品等您来拿!限量 1500 份,抽奖即得,百分百中奖哦!

性能测试PTS(Performance Testing Service)是具备强大的分布式压测能力的SaaS压测平台,可模拟海量用户的真实业务场景,全方位验证业务站点的性能、容量和稳定性。

PTS旨在简化性能压测本身的工作。

PTS目标是将性能压测本身的工作持续简化,使您可以将更多的精力回归到关注业务和性能问题本身。在PTS平台上,您可以用较低的人力和资源成本,构造出最接近真实业务场景的复杂交互式流量,快速衡量系统的业务性能状况,为性能问题定位、容量配比、全链路压测的流量构造提供最好的帮助。进而提升用户体验,促进业务发展,最大程度实现企业的商业价值。

业务场景

PTS广泛应用于各种压力测试和性能测试场景,包括但不限于以下场景:

PTS孵化于服务阿里巴巴全生态五年以上的单链路、全链路压测平台,是阿里巴巴内部最佳实践的输出。该平台对内除了支持日常的外部流量压测之外,同时支持了大大小小的促销活动,如天猫双11、双12和年货节等。

压测流程

PTS提供全面高效的压测流程:

压测流程说明:

1.在PTS控制台上,准备压测API数据,构造压测场景,定义压测模式、量级等;支持随时启停压测,压测过程中可调速。

2.压测启动后,PTS后台的压测控制中心将自动调度压测数据、压测任务和压测引擎。

3.通过随机调度全国上百个城市和运营商的内容分发网络CDN (Content Delivery Network)节点,发起压测流量。保证从虚拟用户并发量、压测流量的分散度等维度都接近真正的用户行为,压测结果更加全面和真实可信。

4.通过压测引擎向您指定的业务站点发起压测。

5.压测过程中,通过集成云监控、ARMS(应用实时监控服务)产品,结合PTS自有的监控指标,实时采集压测数据。

6.在PTS控制台,实时展现压测数据,进行过程监控;压测结束后,生成压测报告。基于整个压测场景的性能表现,定位性能问题、发现系统瓶颈。

压测创建方式

PTS支持以下4种方式创建压测场景(或称压测用例),如下图所示:

说明:

方式一:PTS自研零编码可视化编排,使用自研强大引擎压测。

方式二: 使用PTS自研云端录制器,零侵入录制业务请求并导入1中的自研交互中进行进一步设置。

方式三: 将导入脚本压测 1中的PTS自研交互中,使用PTS自研引擎。

方式四:JMeter压测并使用原生JMeter引擎进行压测,PTS提供自定义的压力构造和监控数据汇聚等产品服务。

其中,方式一、二、三由于使用了PTS的自研引擎,具备RPS(Requests per Second)吞吐量压测模式、秒级启动、实时控制、定时压测和流量遍布全国运营商网络的差异化能力。

方式一是PTS最核心的一种压测场景创建方式,所有资源包均可使用。其他几种创建方式面向不同规格资源包开放。

适用于多业务场景

不论您处于哪个行业,在以下业务场景(但不限于),PTS都是您值得信赖的性能测试工具。

适用行业广泛

PTS应用行业广泛,涉及电商、多媒体、金融保险、物流快递、广告营销、社交等等。

PTS服务阿里巴巴全生态多年,支持了天猫双11、双12、年货节等大促活动。植根于电商行业的PTS,对电商的典型业务模型支持得更友好,压测来源更广泛,脉冲能力和流量掌控能力更强。

PTS自商业版发布以来,吸引了来自多媒体、金融保险、政务等众多行业的用户,以其强大的压测场景编排能力和报表能力,帮助用户快速发现问题,进行针对性地调优,提升了系统承压能力。

适用于多种网络环境

不论您的业务位于公有云、专有云、混合云或者自建IDC中,只要能够通过公网访问,PTS都能够通过遍布全国上百个城市和各运营商的CDN节点发起压测流量,最大程度地模拟真实业务场景。

适用于使用HTTP/HTTPS/WebSocket等协议的客户端

PTS本身的GUI模式支持HTTP/HTTPS协议的压测,无论您的客户端是自研的App、移动端网页、PC端网页、微信小程序还是C/S结构的软件,都可以使用PTS进行压测。PTS同时集成了开源JMeter,支持更多的协议和场景,例如您可以通过“JMeter + WebSocket插件”的方式,对使用WebSocket协议的客户端进行压测(在PTS上传相应的插件JAR文件即可),其他协议以此类推。

下面以电商典型业务场景为例,为您介绍如何在PTS中编排压测场景。

什么是压测场景

要发起一次性能压测,首先需要创建一个压测场景。压测场景中包含一个或多个并行的业务,每个业务包含一个或多个串行的请求。

示例

淘宝网需要对产品A和B相关的页面(即存在多个API)进行压测,假设其主要业务场景为:

业务A:浏览产品A。

业务B:购买产品B(登录 → 浏览产品B → 加入购物车 → 提交订单)。

那么在压测场景中的设置如下。

串联链路1:浏览产品A 和串联链路2:购买产品B是并行关系。

根据业务逻辑,一部分用户在浏览产品A,另一部分用户在进行购买产品B的一系列操作,即两个业务是同时发生的,所以将它们设置为两个串联链路,压测中会并行发起请求。

串联链路中的多个API是串行关系。

根据业务逻辑,串联链路2:购买产品B中的一系列用户行为是存在先后顺序的,所以将这些存在先后关系的API添加到一个串联链路中,PTS压测中会按照顺序发起压测。

综合来看,在压测中,示例中的浏览产品A的API和登录的API,会同时发起压测流量。更多性能测试PTS场景示例,可参考阿里云帮助资料: 性能测试 PTS最佳实践


全链路Controller压测负载均衡

LoadRunner有两种方式可以模拟用户:一是线程;二是进程。一般情况下我们进程方式来模拟虚拟用户,即如果我们设置10个虚拟用户,那么在后台会生成10进程,进程名为mmdrv.exe,来模拟10个虚拟用户,每个进程相当于一个虚拟用户在操作服务器。

需要多少台负载机的算法是这样计算的,首先需要计算出所有用于模拟虚拟用户进程所消耗的内存量。

● 总的内存=N*mmdrv.exe(所消耗的内存)

● N表示虚拟用户数。

计算每台负载机最多可以使用内存,所谓负载机就是我们说测试机,用于产生mmdrv.exe进程的测试机。

将总的所需要的内存除以每台负载机最多可以使用的内存,即可以计算出一共需要多少台负载机。

负载机工作原理:

控制器与负载机是通过lr_bridge.exe这个进程来实现的,通过这个进程来让两台机器进行通讯。

当有多台测试机时,我们希望将所有的请求平均的分配到不同的负载机,我们把这个过程称之为负载均衡。

只能在百分比模型才可以设置负载均衡,普通的场景模式下是无法设置负载均衡的。 关于链路压测和全链路压测技术 架构的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 链路压测的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于全链路压测技术 架构、链路压测的信息别忘了在本站进行查找喔。


上一篇:有赞全链路压测(全链路压测平台)
下一篇:全链路压测(全链路压测实战30讲)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~