一. 微服务架构下的性能测试挑战

微服务与DevOps

微服务是实现DevOps的重要架构

  1. 微服务3S原则

  2. DevOps核心点

微服务架构下的业务特点

  • 亿级用户的平台
  • 单服务业务随时扩容
  • 服务之间存在相互调用关系
  • 版本更新快,上线周期短

微服务架构下的性能测试挑战

单服务流量激增时扩容
调用链条变长,调用关系更加复杂
微服务拆分导致故障点增多
▼ ▼ ▼
单服务变更性能影响如何评估?
性能瓶颈在各微服务间漂移,如何做好性能测试?
应对突发流量需求,扩容能否解决问题,如何扩容?
服务实例数量众多,如何收集信息,快速定位性能问题?

二. 微服务性能保障解决方案设计

性能测试平台服务化

性能测试服务架构

三. 性能测试实施策略

分层开展微服务性能测试

  1. 单服务接口测试(契约)
    验证单服务的各个接口能力基线以及组合接口的能力基线,服务间遵循契约化原则,大部分问题屏蔽在集成之前
  2. 全链路测试(SLA)
    验证整个系统之上全链路场景以及多链路组合场景的性能,优化链路中性能不足的服务
  3. 伸缩能力验证(面向现网运维)
    验证单服务的水平扩容能力,验证既定模型下的多链路组合场景的资源模型

系统从开发到上线需要做哪些测试

在微服务架构下,自动化仍然是提升效率,看护质量的重要手段,每个微服务独立快速迭代上线,更加要求微服务的性能不劣化

循序渐进的性能测试执行

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

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

常见的微服务性能优化手段

  1. 扩容:链路中的某一应用可能出现cpu使用率较高或者连接池资源不够用(rpc、jdbc、redis连接池等)但本身对于拿到连接的请求处理又很快,这一类需要横向扩展资源。
  2. 应用逻辑优化:比如存在慢sql、 逻辑的不合理如调用db或者redis次数过多、没有做读写分离造成写库压力过大。
  3. 超时时间的合理设置:对于应用之间的rpc调用或者应用与其他基础组件之间的调用,均需要设置合理的超时时间,否则过长的等待将造成整个链路的故障。
  4. 缓存的应用:请求尽可能从前端返回,而不是每一个都要让后端应用处理后再返回,减轻后端应用及数据库压力,提高系统吞吐能力。
  5. 限流:对于超出承载能力的QPS或并发,可以进行拦截并直接返回提示页面。
  6. 降级:对于非核心链路上的应用,允许故障关闭而不影响核心链路。

DevOps架构下如何进行微服务性能测试?的更多相关文章

  1. 多云架构下,JAVA微服务技术选型实例解析

    [摘要] 本文介绍了基于开源自建和适配云厂商开发框架两种构建多云架构的思路,以及这些思路的优缺点. 微服务生态 微服务生态本质上是一种微服务架构模式的实现,包括微服务开发SDK,以及微服务基础设施. ...

  2. Re:从 0 开始的微服务架构--(四)如何保障微服务架构下的数据一致性--转

    原文地址:http://mp.weixin.qq.com/s/eXvoJew3bjFKzLLJpS0Otg 随着微服务架构的推广,越来越多的公司采用微服务架构来构建自己的业务平台.就像前边的文章说的, ...

  3. 微服务架构:构建PHP微服务生态

    微服务架构:构建PHP微服务生态   Linux系统技术交流QQ群(1675603)验证问题答案:刘遄 导读 诞生于 2014 年的“微服务架构”,其思想经由 Martin Fowler 阐述后,在近 ...

  4. Atitit.架构设计趋势 设计模式 ---微服务架构  soa

    Atitit.架构设计趋势 设计模式 ---微服务架构  soa 什么是微服务架构?1 .微服务与SOA的关系 :微服务架架构师面向服务架构(SOA)的一种特定实现1 微服务与康威定律2 微服务的一些 ...

  5. 微服务架构之「 下一代微服务 Service Mesh 」

    Service Mesh 被大家称为下一代的微服务,是微服务领域的一颗新星,被大家讨论的非常多. 我在大家的讨论中,还看到有人说 “目前的微服务架构我都没学会呢,现在又来一个下一代微服务,真学不动了” ...

  6. java架构之路-(微服务专题)初步认识微服务与nacos初步搭建

    历史演变: 以前我们都是一个war包,包含了很多很多的代码,反正我开始工作的时候做的就是这样的项目,一个金融系统,代码具体多少行记不清楚了,内部功能超多,但是实际能用到的不多,代码冗余超大,每次部署大 ...

  7. 【架构】SpringCloud JHipster -微服务相关资料

    SpringCloud-微服务相关资料 基于Spring Boot和Spring Cloud实现微服务架构学习(四)-Spring Cloud总结 - zeb_perfect的专栏 - 博客频道 - ...

  8. 【spring boot】spring cloud下spring boot微服务启动没有报错,但是访问访问不到

    spring cloud下spring boot微服务启动没有报错,但是访问访问不到 解决方法: 可能是端口被占用了,但是依旧启用成功了. 更改一下项目启用的端口号,再重新启动查看是否可以正常访问.

  9. 简单记录下SpringCloud的微服务架构和一些概念

    一.微服务的注册与发现——Eureka 和许多分布式设计一样,分布式的应用一般都会有一个服务中心,用于记录各个机器的信息.微服务架构也一样,我们把一个大的应用解耦成这么多个那么多个服务,那么在想要调用 ...

随机推荐

  1. IDEA中的替换功能(替换代码中的变量名很好用哦)

    刚刚上班不久,这两天正在研究公司项目里面的代码,今天用阿里的插件扫描了一下代码,发现代码中有很多变量的命名,没有遵循驼峰式的命名规则.一开始我一个一个的修改这些变量名,后来无意中用了一下Ctrl+F( ...

  2. os.path.md

    os.path 我们可以利用os.path模块提供的函数更容易地在跨平台上处理文件. 即使我们的程序不是用于夸平台, 也应该使用os.path来让路径名字更加可靠. Parsing Paths os. ...

  3. python第四十课——构造函数

    1.动态给对象添加属性: 在对象创建完毕后,单独为其添加需要的属性:可以理解为:私人定制 [注意]: 添加的属性只有此对象能够使用,别的对象如果用了,直接报错; 2.构造函数/构造方法/构造器: 格式 ...

  4. SDOI 2018 R2 游记

    一篇真正的“游记”. DAY -3 下午: 今天老师批准了我去省选划水的请假要求. 批准之后感觉学习非常有动力,顺便忽悠别的同学和我一起去,然而wzx是唯一一个表示可以考虑一下的同学,其他同学直接一口 ...

  5. JS重构分页

    JS重构分页 很早以前写过一个Jquery分页组件,但是当时写的组件有个缺点,当时的JS插件是这样设计的:比如:点击  -->  查询按钮 ---> 发ajax请求 返回总页数和所有数据, ...

  6. Python2.7-textwrap

    textwrap主要针对英文的文本 模块内方法: wrap(text[, width, ...]),把text分成每行width长,返回一个列表,没有结尾的\n.fill(text[, width, ...

  7. $Simpson$积分入门

    \(\rm{0x01}\) 前言 首先阐明一点,自适应辛普森算法(\(\rm{Adaptive ~Simpson's~ rule}\) )是一类近似算法(\(\rm{Approximation ~al ...

  8. $\rm{NOIP}$前的模拟题整理·菜鸡互啄篇

    嗯,打算整理一下我们机房菜鸡互啄中比较不错的题-- 大概情况就是每个人出三道题,然后互测这种感觉-- 至于某些Y姓基佬.Z姓基佬偷偷出原题--就不说了233 嗯,剩下的就先\(magpie\)着吧23 ...

  9. tarjan - 强连通

    如果两个点可以互相到达,则称为强连通.如果有向图G每个点都可以互相到达,则称为强连通图.其中G中的极大强连通子图,则称为强连通分量.现求强连通分量是多少,且哪些点属于同一个强连通分量 tarjan由d ...

  10. HDU3853:LOOPS

    题意:迷宫是一个R*C的布局,每个格子中给出停留在原地,往右走一个,往下走一格的概率,起点在(1,1),终点在(R,C),每走一格消耗两点能量,求出最后所需要的能量期望   #include<i ...