上一篇解决了在高并发秒杀场景下的超卖问题,这一篇主要解决如何利用Sentinel防止服务器雪崩。
文章目录
- 一、 商品微服务集成Sentinel
- 1. 引入依赖
- 2. 添加配置
- 二、 秒杀微服务集成Sentinel
- 2.1. 引入依赖
- 2.2. 添加配置
- 三、 Sentinel流控规则
- 3.1. 登录Sentinel
- 3.2. 请求秒杀
- 3.3. 配置秒杀流控01
- 3.4. 单机阈值获取
- 3.5. 配置秒杀流控02
一、 商品微服务集成Sentinel
1. 引入依赖
<!--流控组件sentinel--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>
2. 添加配置
server:port: 9000
spring:cloud:nacos:discovery:service: product-servserver-addr: localhost:8848sentinel:transport:dashboard: localhost:8888datasource:url: jdbc:mysql://localhost:3306/skill?characterEncoding=UTF-8&serverTimezone=GMT%2B8username: rootpassword: 123456redis:host: localhostport: 6379
二、 秒杀微服务集成Sentinel
2.1. 引入依赖
<!--流控组件sentinel--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>
2.2. 添加配置
server:port: 13000
spring:cloud:nacos:discovery:service: skill-servserver-addr: localhost:8848sentinel:transport:dashboard: localhost:8888datasource:url: jdbc:mysql://localhost:3306/skill?characterEncoding=UTF-8&serverTimezone=GMT%2B8username: rootpassword: 123456redis:host: localhostport: 6379
三、 Sentinel流控规则
3.1. 登录Sentinel
账号/密码:sentinel/sentinel
3.2. 请求秒杀
由于Sentinel 属于懒加载
http://localhost:13000/skill?productId=1&userId=1
默认:不显示
请求之后涉及的应用就会显示
3.3. 配置秒杀流控01
配置单机阈值
3.4. 单机阈值获取
单机阈值获取的方式可以借助工具jmeter
聚合报告中的异常比率来获取。
流程:
首先,请求秒杀微服务,设定并发数,如果不知奥秒杀服务能够承受多大的并发,可以先设置你觉得能够承受的并发数,10000,1000,500都可以,等会咱们会根据异常数,来调整秒杀服务真正能承受的并发数。
演示:第一轮先设置500
线程组名称为:秒杀线程组
线程数:500
Ramp-UP时间(秒):5
循环次数:1
释义:5秒之内启动500个线程数,简言之,模拟500个用户并发请求
添加http请求:
http
127.0.0.1
13000
/skill?productId=1&userId=1
utf-8
添加聚合报告
并发压测,依次类推,知道异常比率你能接受的范围,并发数就设置多少。
3.5. 配置秒杀流控02
比如,我能接受的异常比例是0.002%,对应的并发数是500,那我设置单机阈值就是500,查过这个阈值,我这里暂时处理为直接失败,根据企业实际情况,设置失败策略