Sentinel 基于Nacos规则持久化-推模式
文章目录
- 一、推模式架构图
- 二、原理简述
- 2.1. 组件版本关系
- 2.2. 控制台推送规则
- 三、Sentinel控制台改造
- 3.1. 下载源码
- 3.2. 修改pom
- 3.3. 重要文件复制
- 3.4. 注册地址修改
- 3.5. 请求实例需改
- 3.6. 菜单新增
- 四、编译 & 启动
- 4.1. 先启动nacos
- 4.2. 编译打包
- 4.3. 创建微服务 && 启动
- 4.4. 刷新sentinel
- 4.5. 登录nacos
- 4.6. sentinel 规则删除
- 4.7. nacos规则查看
- 4.8. (企业案例)规则扩展
一、推模式架构图
图片引用自 https://github.com/alibaba/Sentinel/wiki/在生产环境中使用-Sentinel
二、原理简述
2.1. 组件版本关系
Spring Cloud Alibaba Version | Sentinel Version | Nacos Version | RocketMQ Version | Dubbo Version | Seata Version |
---|---|---|---|---|---|
2.2.6.RELEASE | 1.8.1 | 1.4.2 | 4.4.0 | 2.7.8 | 1.3.0 |
2021.1 or 2.2.5.RELEASE or 2.1.4.RELEASE or 2.0.4.RELEASE | 1.8.0 | 1.4.1 | 4.4.0 | 2.7.8 | 1.3.0 |
Spring Cloud Version | Spring Cloud Alibaba Version | Spring Boot Version | Nacos Version | jdk |
---|---|---|---|---|
Spring Cloud Hoxton.SR9 | 2.2.6.RELEASE | 2.3.2.RELEASE | 1.4.2 | 1.8.202 |
2.2. 控制台推送规则
将规则推送到Nacos或其他远程配置中心
Sentinel客户端链接Nacos,获取规则配置;并监听Nacos配置变化,如发生变化,就更新本地缓存(从而让本地缓存总是和Nacos一致)
控制台监听Nacos配置变化,如发生变化就更新本地缓存(从而让控制台本地缓存总是和Nacos一致)
三、Sentinel控制台改造
控制台改造主要是为规则实现
DynamicRuleProvider:从Nacos上读取配置
DynamicRulePublisher:将规则推送到Nacos上
3.1. 下载源码
这里使用1.8版本演示
https://github.com/alibaba/Sentinel/tags
3.2. 修改pom
将
<!-- for Nacos rule publisher sample --><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId><scope>test</scope></dependency>
改为
<!-- for Nacos rule publisher sample --><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency>
3.3. 重要文件复制
由于sentinel持久化默认不支持持久化,但是官方关于sentinel提供了nacos、zookeeper、apollo这3种方式,但是需要自己集成。
找到 sentinel-dashboard/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/nacos
目录,将整个目录拷贝到 sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/nacos
,如图:
3.4. 注册地址修改
3.5. 请求实例需改
修改sentinel页面端保存规则请求的url控制层
修改后的配置
@Autowired@Qualifier("flowRuleNacosProvider")private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider;@Autowired@Qualifier("flowRuleNacosPublisher")private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;
3.6. 菜单新增
修改 sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar.html
,找到:
修改后
齐活儿啦!终于把流控规则改造成推模式持久化啦!
四、编译 & 启动
4.1. 先启动nacos
https://nacos.io/zh-cn/docs/quick-start.html
这里一windows环境演示
startup.cmd -m standalone
里面的配置先忽略
4.2. 编译打包
执行 mvn clean package -DskipTests
在项目的 target 目录找到sentinel-dashboard.jar
,执行 java -jar sentinel-dashboard.jar
启动控制台。
登录
4.3. 创建微服务 && 启动
创建微服务模块
添加依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependencyManagement><dependencies><!--spring-cloud-alibaba 版本控制--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.6.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
配置文件
server:port: 9000
spring:cloud:nacos:discovery:service: product-servserver-addr: localhost:8848sentinel:transport:dashboard: localhost:8080filter:enabled: false
management:endpoints:web:exposure:include: '*'
创建测试方法
package com.gblfy.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ProductController {//http://localhost:9000/product/" + productId@GetMapping("/product/{productId}")public String getProductName(@PathVariable Integer productId) {return "IPhone 12";}
}
启动应用
请求url
http://localhost:9000/product/1
4.4. 刷新sentinel
4.5. 登录nacos
4.6. sentinel 规则删除
4.7. nacos规则查看
规则也随之删除了
4.8. (企业案例)规则扩展
以上只是将流控规则扩展好了,其他需要其他模块,还需要根据官网文档自行扩展
附上:
(企业案例)使用Nacos持久化规则,改造sentinel-dashboard
Sentinel 基于Nacos规则持久化-推模式相关推荐
- java xml 推模式 拉模式_Alibaba Sentinel规则持久化-推模式-手把手教程(基于Nacos)...
点击上方"IT牧场",选择"设为星标"技术干货每日送达! 一.推模式架构图 TIPS 图片来自官方. 引用自 https://github.com/alibab ...
- Alibaba Sentinel规则持久化-推模式-手把手教程【基于Nacos】
前面,已经为Sentinel实现了 基于拉模式的规则持久化 ,本文来实现基于 推模式的规则持久化. 文章目录 一.推模式架构图 二.原理简述 三.微服务改造 3.1. 加依赖 3.2. 添加配置 四. ...
- Alibaba Sentinel规则持久化-拉模式-手把手教程【基于文件】
文章目录 一.拉模式架构 二.原理简述 三.编写 3.1 加依赖 3.2 写代码 3.3 配置 四.优缺点分析 五.你可能会有的疑问 六.参考文档 七.案例测试 7.1. 添加流控规则 7.2. 服务 ...
- sentinel限流规则持久化改造,nacos数据源拉取、推送双向同步
sentinel的功能强大,官方也提供了包括数据库.redis.nacos等多种数据源实现持久化动态规则,还提供了sentinel-dashboard的可视化界面配置规则 但是实际使用中发现,官方的可 ...
- Sentinel流控规则持久化
- Sentinel 规则持久化到 apollo 配置中心
Sentinel 规则默认是存储在内存中的,只要服务重启之后对应的规则也会消失,实际的生产中肯定是不允许这种操作,因此 Sentinel 官方推荐在生产架构中使用第三方数据源作为永久存储中心,比如 n ...
- SpringCloud(14) Sentinel 1.8.4 规则持久化到Nacos
文章目录 一.前言 二.快速体验 1.部署sentinel 2.SpringCloud中规则持久化到nacos 3.sentinel控制台操作测试 三.sentinel-dashboard源码修改 1 ...
- sentinel 1.8. 2持久化Nacos动态规则热点规则和授权规则不生效的问题
sentinel 1.8.2 持久化Nacos动态规则热点规则和授权规则不生效的问题 问题:规则持久化到nacos之后,我在本地测试时候只有热点和授权规则不生效,我慢慢的在客户端sentinel-cs ...
- Sentinel授权规则及规则持久化
授权规则 授权规则可以对请求方来源做判断和控制. 授权规则 基本规则 授权规则可以对调用方的来源做控制,有白名单和黑名单两种方式. 白名单:来源(origin)在白名单内的调用者允许访问 黑名单:来源 ...
最新文章
- centos7中使用yum安装tomcat以及它的启动、停止、重启
- 数据库内核杂谈 - 一小时实现一个基本功能的数据库
- oracle如何计算2个坐标的距离,百度地图两个坐标之间的距离计算
- 3、mybatis主配置文件之settings
- 【机器视觉】 dev_set_paint算子
- 前端学习(3080):vue+element今日头条管理-发布文章功能介绍
- 关于高速光耦6N137的使用总结
- vsftpd配置(虚拟用户、匿名用户登录)
- 12.接口测试报告包含哪些内容
- 手机怎么下载python呢_安卓手机端怎么安装Python?
- linux 卸载nfs device is busy,NFS umount 提示 device is busy
- 2021年的理财收益,2022继续加油
- 37手游基于云平台的大数据建设实践
- java-喝饮料换空瓶问题
- 和铂医药任命陈颖颖博士为首席财务官;​劲方医药和英矽智能达成合作 | 医药健闻...
- 数字图像和数字图像处理
- php模拟登陆正方教务管理系统(thinkPHP5.0)
- 462 字节 C 代码实现雅虎 logo ACSII 动画
- 什么是jQuery,jQuery选择器
- PHP目前市场怎么样,前景怎么样?