全链路压测

本文转载至老_张

本文原文

之前有和认识的同行聊过他们全链路压测的一些技术实现方案,自己也看了很多相关的资料,这篇博客,说说自己对全链路压测的理解,以及整理的一些知识点。。。

PS:主要罗列的是问题点,以及对应的一些解决方案,仅供参考。。。

相关链接:

阿里全链路压测

有赞全链路压测

京东全链路压测

饿了么全链路压测

滴滴全链路压测解决之道

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

逻辑思维在全链路压测方面的实践

一、什么是全链路压测

基于实际的生产业务场景、系统环境,模拟海量的用户请求和数据对整个业务链进行压力测试,并持续调优的过程。

二、全链路压测解决什么问题

针对业务场景越发复杂化、海量数据冲击下整个业务系统链的可用性、服务能力的瓶颈,让技术更好的服务业务,创造更多的价值。

三、面对的问题点以及解决方案

1、业务模型梳理

首先应该明确的是:全链路压测针对的是现代越来越复杂的业务场景和全链路的系统依赖。所以首先应该将核心业务和非核心业务进行拆分,确认流量高峰针对的是哪些业务场景和模块,

针对性的进行扩容准备,而不是为了解决海量流量冲击而所有的系统服务集群扩容几十倍,这样会造成不必要的成本投入。

2、数据模型构建

数据构建和准备,应该考虑这几点问题:

①、数据的真实性和可用性

可以从生产环境完全移植一份当量的数据包,作为压测的基础数据,然后基于基础数据,通过分析历史数据增长趋势,预估当前可能的数据量;

②、数据脱敏

基于生产环境的全链路压测,必须考虑的一点是不能产生脏数据,以免对生产造成影响,影响用户体验等,因此在数据准备时需要进行数据脱敏;

③、数据隔离

同样,为了避免造成脏数据写入,可以考虑通过压测数据隔离处理,落入影子库,mock 对象等手段,来防止数据污染;

3、压测工具选型

全链路压测应对的都是海量的用户请求冲击,可以使用分布式压测的手段来进行用户请求模拟,目前有很多的开源工具可以提供分布式压测的方式,比如 jmeterNgrinderlocust 等。

可以基于这些压测工具进行二次开发,由 Contorller 机器负责请求分发,agent 机器进行压测,然后测试结果上传 Contorller 机器。

考虑到压测量较大的情况下回传测试结果会对 agent 本身造成一定资源占用,可以考虑异步上传,甚至事务补偿机制。

4、压测环境搭建

全链路压测都是基于生产环境,解决了业务模型和数据以及压测工具选型开发,就要考虑系统扩容和风险规避了,比如压测不能影响实际的生产业务运行,还有资源申请等。

重新搭建一套完全匹配生产环境的压测环境,成本太高,且需求频次较低,投入成本太大。

5、系统容量规划

前面提到了业务拆分和流量预估,在系统容量规划阶段,首先应该对单个接口单个服务进行基准测试,调整配置参数,得到一个基准线,然后进行分布式集群部署,通过 nginx 负载均衡。

至于扩容,要考虑到服务扩容和 DB 资源扩容,以及服务扩容带来的递减效应。

至于大流量冲击情况下,可以考虑队列等待、容器锁、长连接回调、事务降级等方式来解决。

6、测试集群部署

能做全链路压测的业务系统,基本都是分布式系统架构,服务集群部署和负载均衡,就是需要实现和考虑的技术点。

需要解决的问题有:

①、服务间通信问题

一般通信方式有两种:同步和异步。

同步调用:

REST(JAX-RS,Spring Boot)

RPC(Thrift, Dubbo)

异步调用:

(Kafka, Notify, MetaQ)

同步调用一致性强,但是要考虑性能和调用失败的事务处理。

异步调用的话,可以降低服务间的耦合,提升性能体验,但是一致性是需要解决的(分布式架构有个 CAP 理论,感兴趣的可以查询相关资料看看)。

②、负载均衡问题

需要将大流量冲击均匀的分发给集群上的每台机器,目前比较优秀的负载均衡服务器是 nginx,但 nginx 的部署貌似也存在一些问题,我们公司之前就遇到过订单重复问题。

③、容灾问题

需要确保的一点是:当服务中的某台或者某部分服务宕机,可以及时的进行服务转发,而不至于连锁反应下整个系统链路的服务挂掉(可以参考我之前的博客:容灾测试)。

7、数据收集监控

压测数据收集,需要由 agent 机回送给 Contorller 机器,但数据量过大会占用一定的资源,可以考虑异步实现测试结果回送。

至于监控,现在有很多优秀的专业监控工具,比如 NmonZabbix,全链路监控工具 ZipkinPinPoint 以及携程开源的全链路监控工具 CAT

或者可以针对需要,二次开发JVM自带的一些监控工具,做到实时全方位监控。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容

  • 前言 随着业务的快速发展我们日常遇到的系统性能压力问题也逐渐出现,甚至在部分场合会遇到一些突发的营销活动,会导致系...
    公子小白123阅读 654评论 2 6
  • 前言 随着业务的快速发展我们日常遇到的系统性能压力问题也逐渐出现,甚至在部分场合会遇到一些突发的营销活动,会导致系...
    monkey01阅读 29,251评论 4 46
  • 背景与意义 境内度假是一个低频、与节假日典型相关的业务,流量在节假日较平日会上涨五到十几倍,会给生产系统带来非常大...
    生活的探路者阅读 1,675评论 0 7
  • 我从来都觉得自己是自信的人。 上学的时候,分数给了我无比的自信,我很享受我总是“对”的那种感觉。那时的我...
    绝大少数阅读 738评论 1 4
  • $array = file('http://www.你想要的网址.cn/'); $string=implode('...
    KINGZ1993阅读 264评论 0 0