sentinel的四种流控规则介绍今天的内容我们主要围绕四个点进行展开介绍 。
- 流控模式 :关联、链路
- 流控效果 :Warm Up、排队等待
文章插图
这四点具体是什么意思呢?
首先启动项目:cloud-alibaba-sentinel-8006
一:关联在官方的介绍中是这样说的:关联的资源达到阈值时,就限流自己 。
这句话是什么意思呢?用比较直白一点的话来讲,假设我们有A和B两个接口,当A关联B接口,同时B接口的资源达到设定的阈值时,限流A 。我们也可以理解成,当我们下游的服务出现访问压力过大时,对上游的服务进行拦截和限流操作,例如:电商系统,当我们订单系统超出承受阈值时,对我们支付模块进行限流 。
文章插图
例如:当我们关联order接口达到我们设定的阈值时,限流pay的接口访问 。
@Slf4j@RestControllerpublic class TestController {@GetMapping("/pay")public String pay() {return "hello my name is pay ,wo shi boy";}@GetMapping("/order")public String order(){return "hi my name is order, me is girl";}}
给pay接口添加流控规则文章插图
在这里我们需要使用到
postMan
工具,来模拟并发访问,用它来测试我们的order接口的并发访问 。文章插图
文章插图
在这里的意思是25个线程0.25秒跑一次,当我们跑起来之后,再去访问pay接口就可以看到以下信息
文章插图
文章插图
当我们对order接口进行并发访问的时候,这个时候我们去访问pay接口,就可以看到pay接口返回限流信息
二:链路链路的意思是值当某个接口过来的资源达到阈值时,开启限流,主要是针对于请求来源的微服务,具有更细颗粒度 。
比如在一个服务应用中,多个(pay和order)接口都调用了同一个服务中的方法(该方法必须使用注解 SentinelResource进行修饰),如果频繁的去请求pay接口,并且达到设定的阈值,这么时候我们再去请求order接口,那么调用了同一服务的order接口就会被限流
文章插图
test类
@Servicepublic class TestService {// 定义限流资源@SentinelResource("end")public String end(){return "end method";}}
controller类@Slf4j@RestControllerpublic class TestController {@Autowiredprivate TestService testService;@GetMapping("/pay")public String pay() {return testService.end();}@GetMapping("/order")public String order(){return testService.end();}}
配置项web-context-unify
,这个配置的意思是说根据不同的URL进行链路限流,否则没有效果spring:application:name: cloudalibaba-sentinel-servicecloud:nacos:discovery:server-addr: localhost:8848sentinel:transport:#配置Sentinel地址,就是我们的WEB界面dashboard: localhost:8080#Sentinel配置默认8719端口,被占用端口会自动从+1,直到找到未被占用的端口port: 8719# 配置为falseweb-context-unify: false
我们访问pay接口和order接口后,需要对end进行流控规则的配置,也就是使用了SentinelResource
注解标注的方法进行流控设置 。经验总结扩展阅读
- 2023年10月1日适合池塘放水吗 2023年10月1日是池塘放水的黄道吉日吗
- 2023年2月6日是安装机器的黄道吉日吗 2023年2月6日适合安装机器吗
- 花季少女的优美短句 形容青春绽放的诗句
- 2023年10月1日立牌匾黄道吉日 2023年10月1日是立牌匾的黄道吉日吗
- 2023年10月1日是买宠物的黄道吉日吗 2023年10月1日买宠物吉日一览表
- 2023年11月25日是吉利的开业日子吗 营业好不好
- 抖音离谱的汉字游戏怎么通关
- 2023年11月21日是宜开业的吉日吗 黄历宜忌查询
- 2023年11月20日提车好不好 是提新车的吉日吗
- 花无病是什么电影中的人物?