当前位置:网站首页>详细了解关于sentinel的实际应用
详细了解关于sentinel的实际应用
2022-06-24 19:35:00 【Java爱好狂.】
一、sentinel的持久化配置
我们通过Dashboard来为Sentinel客户端设置各种各样的规则,但是这些规则默认是存放在内存中,极不稳定,无法用于生成环境,所以需要将其持久化。
DataSource 扩展常见的实现方式有:
- 「拉模式」:客户端主动向某个规则管理中心定期轮询拉取规则,这个规则中心可以是 RDBMS、文件,甚至是 VCS 等。这样做的方式是简单,缺点是无法及时获取变更;
- 「推模式」:规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用 Nacos、Zookeeper 等配置中心。这种方式有更好的实时性和一致性保证。
Sentinel 目前支持以下数据源扩展:
- Pull-based: 文件、Consul
- Push-based: ZooKeeper, Redis, Nacos, Apollo, etcd
生产环境中一般常用的就是推模式。这里我们使用Nacos存储规则。推送模式的正确做法应该是 「配置中心控制台/Sentinel 控制台 → 配置中心 → Sentinel 数据源 → Sentinel」。

1.1 sentinel同步nacos配置
增加sentinel的依赖和nacos存储扩展依赖

2. 添加nacos相关配置

- 提供接口用于测试限流

4. nacos中增加限流规则的配置

- resource:资源名,即限流规则的作用对象
- limitApp:流控针对的调用来源,若为 default 则不区分调用来源
- grade:限流阈值类型(QPS 或并发线程数);0代表根据并发数量来限流,1代表根据QPS来进行流量控制
- count:限流阈值
- strategy:调用关系限流策略
- controlBehavior:流量控制效果(直接拒绝、Warm Up、匀速排队)
- clusterMode:是否为集群模式
- 测试,访问test接口,发现sentinel-dashboard中出现了一条流控规则

1.2 sentinel-dashboard中修改规则同步到nacos
要想实现在sentinel-dashboard中修改规则并同步到nacos,我们就需要修改sentinel服务。首先我们去官网下载Sentinel。
- 修改pom文件

将test注释掉,因为这个是作用于test目录下的。

- 找到 sentinel-dashboard/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/nacos目录,将整个目录拷贝到sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/。
- 找到 com.alibaba.csp.sentinel.dashboard.controller.v2.FlowControllerV2 ,将默认动态规则修改为nacos动态规则。

修改为:

- 找到 sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar.html
将以下内容注释去掉

- 重新编译打包,运行打包后的sentinel-dashboard.jar。
- 测试,我们删除nacos中的流量规则配置
- 在sentinel-dashboard——>流量规则V1中新增一个规则。

- 刷新nacos,发现多了一个配置

- 在nacos中修改这个配置,将阀值改为1

- 刷新sentinel-dashboard,流量阀值修改为1了。

- 重启服务,重启sentinel-dashboard,发现流控规则依然存在。
「注意:以上只是演示了流控规则的持久化,sentinel还支持其他规则,如果想实现哪种规则都可以采用相同的方式实现!」
二、Gateway网关限流
限流:就是请求多了,对请求进行定制的快速响应处理,应用在服务提供者本身。
从 1.6.0 版本开始,Sentinel 提供了 Spring Cloud Gateway 的适配模块,可以提供两种资源维度的限流:
- route 维度:即在 Spring 配置文件中配置的路由条目,资源名为对应的 routeId
- 自定义 API 维度:用户可以利用 Sentinel 提供的 API 来自定义一些 API 分组
- 添加依赖

2. 注入对应的 SentinelGatewayFilter 实例以及 SentinelGatewayBlockExceptionHandler 实例。

- 自定义异常处理

4. 配置路由

- 添加启动参数
-Dcsp.sentinel.app.type=1 -Dcsp.sentinel.dashboard.server=localhost:8081 -Dproject.name=alibaba-gateway
- 访问接口,查看效果

三、feign调用实现熔断降级
「降级」:就是服务崩溃了,所以「降级逻辑应该应用在消费者(调用者)那里」,加在服务提供者本身是毫无意义的,因为服务已经断开了。
我们根据实际需求在sentinel-dashboard中配置降级规则,然后编写代码。
- 定义接口

2. 定义远程服务调用接口

为了简写fallback,我们更倾向于用fallbackFactory = RmoteTestFallbackFactory.class

- 服务降级处理fallback

4. 服务降级处理fallbackFactory

边栏推荐
- Selection and comparison of message oriented middleware MQ
- In the era of full programming, should I give up this road?
- A pit in try with resources
- 【个人实验报告】
- Ansible basic configuration
- 嵌入式开发:技巧和窍门——干净地从引导加载程序跳转到应用程序代码
- Genesis公链与美国一众加密投资者齐聚Consensus 2022
- Data communication and physical network
- img2pdf
- What aspects should we start with in the feasibility analysis of dry goods?
猜你喜欢

In the multi network card environment, the service IP registered by Nacos is incorrect, resulting in inaccessible services

NIO、BIO、AIO

Seven principles of software design

中国SSD行业企业势力全景图

Idea close global search box

What aspects should we start with in the feasibility analysis of dry goods?

软件设计的七大原则

虚拟人的产业发展现状

Raspberry pie preliminary use
![leetcode:45. Jumping game II [classic greed]](/img/69/ac5ac8fe22dbb8ab719d09efda4a54.png)
leetcode:45. Jumping game II [classic greed]
随机推荐
学习笔记23--多传感器信息融合基础理论(上)
Cache control of HTTP
NIO、BIO、AIO
Industrial development status of virtual human
Learning notes 23-- basic theory of multi-sensor information fusion (Part I)
华大4A0GPIO设置
PostMan工具介绍及安装使用
KT6368A蓝牙芯片的主从机之前透传功能说明,2.4G跳频自动连接
Flutter: Unsupported value: false/true
理想L9,智能座舱新潮流
华大04a工作模式/低功耗模式
Detailed explanation of agency mode
Online filing process
CA Zhouji - the first lesson in 2022 rust
DX 的 HLSL 和 GL 的 GLSL的 矩阵构建的行列区别
如何抓手机的包进行分析,Fiddler神器或许能帮到您!
Heartless sword Chinese English bilingual poem 003 The sea of books
中国SSD行业企业势力全景图
Information update on automatic control principle
磁盤的結構