Spring Cloud微服务脚手架搭建实战——Sentinel使用实战

前言

上一节我们讲了Sentinel的简介和与Hystrix的对比,本节我们讲解Sentinel的具体使用。

前期准备

  1. 加入pom依赖
    在这里插入图片描述
		<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>
  1. 修改Nacos的yml配置
    在这里插入图片描述
    在这里插入图片描述
sentinel:
      transport:
        dashboard: localhost:8081
        port: 8719
  1. 启动Sentinel
    在这里插入图片描述
@echo off
 
java -Dserver.port=8081  -Dsentinel.dashboard.auth.username=Bifang -Dsentinel.dashboard.auth.password=Bifang -jar sentinel-dashboard-1.7.2.jar

@echo on

在这里插入图片描述
在这里插入图片描述
4. 启动pay服务
在这里插入图片描述

实现流控规则

刚才访问了http://127.0.0.1:9003/OrderPay后,sentinel面板中就出现了服务。
在这里插入图片描述

在这里插入图片描述
添加流控规则
在这里插入图片描述
各项功能参数讲解
在这里插入图片描述
在这里插入图片描述
添加测试
在这里插入图片描述
在这里插入图片描述
测试
在这里插入图片描述
可以发现当点击速度过快后就能发现返回了默认值,禁止了访问。

其他的功能可根据功能讲解图的提示,来体验一下效果

在这里插入图片描述
在这里插入图片描述

实现降级规则

在这里插入图片描述
在这里插入图片描述
各参数讲解图
在这里插入图片描述

RT规则编码测试

  1. 给接口加上等待时间,模拟业务处理时间
@GetMapping("/testD") 
public String testD()    { 
 { 
	 try { 
	 	TimeUnit.SECONDS.sleep(1);
	 	 } 
 	catch (InterruptedException e) {
 		 e.printStackTrace(); 
 		 }
 	 log.info("testD 测试RT"); return "------testD";    } ;    
  } 
  1. 设置降级规则
    在这里插入图片描述
  2. jmeter工具测试
    在这里插入图片描述
    在这里插入图片描述
    其他的规则请自行测试

热点规则

根据接口传递的参数限流。

  1. 代码
@GetMapping("/testHotKey") 
@SentinelResource(value = "testHotKey",blockHandler = "deal_testHotKey") public String testHotKey(@RequestParam(value = "p1",required = false) String p1,
@RequestParam(value = "p2",required = false) String p2)
    { 
    	return "------testHotKey";
    	} 
//兜底方法
public String deal_testHotKey (String p1, String p2, BlockException exception){ return "deal_testHotKey";  
} 

  1. 配置规则
    在这里插入图片描述
    在这里插入图片描述
    访问接口测试效果。

系统规则

系统规则只是将限流规则提升到了整个服务层面,配置基本没变,只是对整个系统请求起作用,如QPS限制设置为1,则所有接口超过限制都无法访问。
在这里插入图片描述

授权规则

设置调用方调用服务的白名单和黑名单,白名单调用发可不被流控规则限制。
在这里插入图片描述

集群流控

为什么要使用集群流控呢?假设我们希望给某个用户限制调用某个 API 的总 QPS 为 50,但机器数可能很多(比如有 100 台)。这时候我们很自然地就想到,找一个 server 来专门来统计总的调用量,其它的实例都与这台 server 通信来判断是否可以调用。这就是最基础的集群流控的方式。

另外集群流控还可以解决流量不均匀导致总体限流效果不佳的问题。假设集群中有 10 台机器,我们给每台机器设置单机限流阈值为 10 QPS,理想情况下整个集群的限流阈值就为 100 QPS。不过实际情况下流量到每台机器可能会不均匀,会导致总量没有到的情况下某些机器就开始限流。因此仅靠单机维度去限制的话会无法精确地限制总体流量。而集群流控可以精确地控制整个集群的调用总量,结合单机限流兜底,可以更好地发挥流量控制的效果。

集群流控中共有两种身份:

Token Client:集群流控客户端,用于向所属 Token Server 通信请求 token。集群限流服务端会返回给客户端结果,决定是否限流。
Token Server:即集群流控服务端,处理来自 Token Client 的请求,根据配置的集群规则判断是否应该发放 token(是否允许通过)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值