上一篇解决了在高并发秒杀场景下的超卖问题,这一篇主要解决如何利用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-serv
server-addr: localhost:8848
sentinel:
transport:
dashboard: localhost:8888
datasource:
url: jdbc:mysql://localhost:3306/skill?characterEncoding=UTF-8&serverTimezone=GMT%2B8
username: root
password: 123456
redis:
host: localhost
port: 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-serv
server-addr: localhost:8848
sentinel:
transport:
dashboard: localhost:8888
datasource:
url: jdbc:mysql://localhost:3306/skill?characterEncoding=UTF-8&serverTimezone=GMT%2B8
username: root
password: 123456
redis:
host: localhost
port: 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
添加聚合报告
并发压测,依次类推,知道异常比率你能接受的范围,并发数就设置多少。
3.5. 配置秒杀流控02
比如,我能接受的异常比例是0.002%,对应的并发数是500,那我设置单机阈值就是500,查过这个阈值,我这里暂时处理为直接失败,根据企业实际情况,设置失败策略