作者 | 牛兔
导读 :本文是《SpringCloud 利用在 Kubernetes 上的最佳实际》系列文章的第 11 篇,从后面两期开始咱们进入到了高可用专题,别离介绍了流量防护和故障演练相干内容。本文将从另一个视角介绍如何保障业务高可用性:即业务筹备阶段,提前进行线上的瓶颈定位和容量评估,以便更低成本、更高效 / 实在的发现零碎瓶颈点,做到最准确的容量评估。
高可用体系介绍
首先来介绍下高可用体系,利用生命周期的高可用都有哪些策略、别离能够实现什么能力呢?
从上图示意中能够看出,利用生命周期的整个过程中,都有相应的高可用策略,如后面 2 篇文章介绍的流量防护即为线上运行时的线上管控相干策略,混沌工程即为零碎演练的相干策略,而全链路压测即为布局阶段的重要策略,其包含线上压测(即环境抉择)、容量布局(即压测施行)、弹性伸缩(即生态内联动)。
以下将重点介绍容量评估的重要性,以及如何施行压测来实现容量评估。
为何要进行容量评估?
对于容量评估的重要性及必要性曾经是个陈词滥调的问题了,别离从技术角度和业务策略角度总结如下:
容量评估的目标天然是解决容量问题,如新业务上线前的筹备,大型营销流动的筹备等等。大型流动中洪峰流量引起的零碎体现不确定性,是最经典的实用场景。一个现实的营销流动周期应该是有如下闭环流程:
性能测试是容量评估的外围伎俩,性能测试之后通过客户端 - 利用零碎 - 根底负载一系列的监控剖析,最终可得出瓶颈点位于何处、应如何有针对性地优化。上图能够看出,性能测试通过实在、高效的压测形式进行容量评估 / 瓶颈定位 & 解决,最终来保障流动稳固进行。
如何进行性能测试?
阿里巴巴全链路压测从 2013 年到当初也曾经是第 7 个年头了,在这 7 年间咱们一直积攒、总结、优化提高,进行这样一种大规模的我的项目流动,离不开无效的流程把控及分工治理。对于全链路压测的后期筹备,这边将不做赘述,有趣味的同学能够参考文章《独家揭秘 | 阿里怎么做 双 11 全链路压测?》。以下将重点介绍压测执行阶段操作。
进行全链路压测之前,单利用会进行外部压测,以便能晋升全链路压测的效率,即解决外部问题之后再解决联动问题。故以下将别离介绍 Spring Cloud 利用的压测以及全链路压测别离如何执行。
1. 单利用压测 Spring Cloud 利用
单利用的压测不少开发者会抉择开源 JMeter 进行压测,甚至还会进行自建平台以便实现高并发能力。这两者都不举荐,他们都有较为显著的劣势。阿里云性能测试服务(PTS Performance Testing Service)提供了云端压测服务,其完满兼容了 JMeter,只需把脚本上传上来即可发动压测。
同时,目前 PTS 上曾经反对间接进行微服务压测,不须要本人设置进行插件治理和降级,只需间接在 PTS 中抉择对应的集群等信息,即可疾速发动压测。
2. 全链路压测
如后面介绍性能压测流程中所属,整个全链路压测包含的后期事宜较多,如环境抉择与革新、数据筹备、安全策略等,这部分内容在此不做赘述,有趣味的能够查阅《Performance Test Together》主题相干介绍。本处次要介绍全链路压测的施行:即配置与线上业务模型一样的业务场景,从公网发动实在流量进行多维度和场景的压测,验证容量能力和瓶颈问题的定位。
个别正式压测会依照压测打算,执行多种压测策略。淘宝的 双 11 大促压测,个别蕴含这样几步:
- 峰值脉冲 :即齐全模仿 0 点大促指标峰值流量,进行大促态压测,察看零碎体现;
- 零碎摸高 :勾销限流降级爱护性能,贬低以后压测值(前提是以后的指标压测值曾经达到,则能够进行摸高测试),察看零碎的极限值是多少,可进行多轮晋升压力值压测,直到零碎出现异常为止。简化摸高测试的晋升信息;
- 限流降级验证 :顾名思义,即验证限流降级爱护性能是否失常,批改限流降级的作用与验证办法,更简化,(AHAS 引入)商业化产品 AHAS(利用高可用服务,Application High Availability Service)提供了全面的限流降级能力,可进行全链路的降级爱护;
- 破坏性测试 :这个次要是为了验证预案的有效性,相似于容灾演练时的预案执行演练。即为持续保持大促态压测,并验证预案的有效性,察看执行预案之后对系统的影响。批改破坏性测试的内容。
3. 在 PTS 上压测
上述压测场景的施行,均能够在 PTS 上操作实现,且配置不同的压测量级数据,来进行多轮压测,并察看其零碎体现。压测不应该是一次性的操作,而应该是重复的、多轮验证的操作。以下以峰值脉冲为例,介绍如何在 PTS 上施行压测。
首先是场景的构建。PTS 提供了丰盛的创立场景形式,包含 JSON、JMX、YAML 脚本的导入,纯交互 0 编码 UI 创立、云端录制器录制后果导入、完满兼容 JMeter 脚本等。下图作为示例:
业务场景构建实现之后,以 PTS 自研原生引擎(即纯交互 UI 编排模型)为例,提供了丰盛的压力起源定制化能力,可实现多地区 / 运营商的起源定制,更实在地模仿实在流量状况。
同时,可通过 SLA + 定时工作能力,实现“无人值守”压测,对外围业务链路进行周期性的性能摸顶。
压测完结后,PTS 提供了可下载的压测报告,有具体统计数据及趋势图数据,采样日志以及增加了的监控数据,可疾速进行问题方向的定位于剖析。
4. 在 EDAS 上压测 Spring Cloud 利用
EDAS 的微服务治理能力,同时买通了与 PTS 服务的相应的压测能力,进入到服务查问页面之后点击压测按钮即可开始在 PTS 的性能测试,如下图:
结尾
本文简略介绍了下业务高可用体系的相干策略,容量评估的重要性以及外围伎俩 - 性能测试的施行形式,同时在 Spring Cloud 下的疾速利用。此外,PTS 还提供了更多功能:
- 全链路压测的流量隔离革新
- JMeter 的环境治理及本地化插件
- 压测过程中,云上业务的架构监控
- JMeter 的高级流量定制
- ……
以性能压测为主线,进行利用零碎布局期的容量验证,并以压测数据后果为参考,通过利用高可用服务 AHAS 中流量防护进行从网关到利用多维度的零碎防护,以此来实现业务零碎上线后的高可用性。后续 PTS 和 AHAS 会提供更多的智能化性能,来更好地帮忙实现线上业务在各种极其场景下的连续性。
相干文章举荐:
- 《SpringCloud 利用在 Kubernetes 上的最佳实际 —— 开发篇》
- 《SpringCloud 利用在 Kubernetes 上的最佳实际 — 部署篇 (开发部署)》
- 《SpringCloud 利用在 Kubernetes 上的最佳实际 — 部署篇 (工具部署)》
- 《SpringCloud 利用在 Kubernetes 上的最佳实际 — 线上公布(可灰度)》
- 《SpringCloud 利用在 Kubernetes 上的最佳实际 — 诊断(线上联调)》
- 《SpringCloud 利用在 Kubernetes 上的最佳实际 — 线上公布(可监控)》
- 《SpringCloud 利用在 Kubernetes 上的最佳实际 — 线上公布(可回滚)》
- 《SpringCloud 利用在 Kubernetes 上的最佳实际 — 线上公布(优雅高低线)》
- 《SpringCloud 利用在 Kubernetes 上的最佳实际 — 高可用(熔断)》
- 《Spring Cloud 利用在 Kubernetes 上的最佳实际 — 高可用(混沌工程)》
课程举荐
去年,CNCF 与 阿里云联结公布了《云原生技术公开课》曾经成为了 Kubernetes 开发者的一门“必修课”。明天,阿里云再次集结多位具备丰盛云原生实践经验的技术专家,正式推出《云原生技术实际公开课》。课程内容由浅入深,专一解说“落地实际”。还为学习者打造了实在、可操作的试验场景,不便验证学习成绩,也为之后的实际利用打下坚实基础。点击链接查看课程:https://developer.aliyun.com/learning/roadmap/cloudnative2020
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术畛域、聚焦云原生风行技术趋势、云原生大规模的落地实际,做最懂云原生开发者的公众号。”