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

微服务与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. 【Amazon 必考】Amazon Leadership Principles 亚马逊领导力准则

    Leadership Principles,也就是领导力准则,不仅仅是几条用来鼓舞人心的口号,更是成就了Amazon特有公司文化的秘诀.不管是为新项目讨论创意.寻找解决客户问题的方案,还是面试求职者时 ...

  2. Markdown 进阶

    目录 markdown进阶语法 内容目录 加强代码块 脚注 流程图 时序图 LaTeX公式 markdown进阶语法 内容目录 使用 [TOC] 引用目录,将 [TOC] 放至文本的首行,编辑器将自动 ...

  3. jQuery插件实例四:手风琴效果[无动画版]

    手风琴效果就是内容的折叠与打开,在这个插件中,使用了三种数据来源:1.直接写在DOM结构中:2.将数据写在配置项中:3.从Ajax()中获取数据.在这一版中,各项的切换没有添加动画效果,在下一版中会是 ...

  4. MySQL基础之 AUTO_INCREMENT

    AUTO_INCREMENT AUTO_INCREMENT是mysql唯一扩展的完整性约束,当为数据库表中插入新纪录时,字段上的值会自动生成唯一的ID,再具体设置AUTO_INCREMENT约束时,一 ...

  5. 【项目 · Wonderland】预则立 && 他山之石

    [软 工 实 践 · 团 队 作 业] 预则立&&他山之石 标签:WonderLand Part 0 · 简要目录 Part 1 · 团队计划 Part 2 · 团队访谈 Part 3 ...

  6. Linux基础第二课——系统架构

    网址 192.168.0. 172.16. 10.0. 以上是内网网段 127.0.0.1 这是本地回环网卡 表示本身 查看网络是否连通 windows Linux 都是通过 ping 先ping网关 ...

  7. 选择当天一周一月导出excel表格

    <a href="javascript:;" class="fr btn btn-primary radius mt-6 mr-10" onclick=& ...

  8. 【转】Google Chrome中顺时针/逆时针滚动圆的含义

    当浏览器处于以下状态时,看起来好像圆圈是逆时针滚动的: 解析主机名 连接服务器 等待响应(从服务器发送第一个字节之前?) 当浏览器处于以下状态时,圆圈似乎顺时针滚动: 加载页面或引用的资源 在标签页中 ...

  9. 在testbench从文件读入激励

    在验证verilog逻辑模块功能时候,我们可以从文件中读入激励,便于大规模的验证.文件中的数据我们可以用c++编写程序产生. 第一种读入文件的方法是用系统函数:$readmemb, readmemh, ...

  10. 20155337《网络对抗》Exp5 MSF基础应用

    20155337<网络对抗>Exp5 MSF基础应用 实践目标 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践,如 ...