文章目录

  • 一、推模式架构图
  • 二、原理简述
    • 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规则持久化-推模式相关推荐

  1. java xml 推模式 拉模式_Alibaba Sentinel规则持久化-推模式-手把手教程(基于Nacos)...

    点击上方"IT牧场",选择"设为星标"技术干货每日送达! 一.推模式架构图 TIPS 图片来自官方. 引用自 https://github.com/alibab ...

  2. Alibaba Sentinel规则持久化-推模式-手把手教程【基于Nacos】

    前面,已经为Sentinel实现了 基于拉模式的规则持久化 ,本文来实现基于 推模式的规则持久化. 文章目录 一.推模式架构图 二.原理简述 三.微服务改造 3.1. 加依赖 3.2. 添加配置 四. ...

  3. Alibaba Sentinel规则持久化-拉模式-手把手教程【基于文件】

    文章目录 一.拉模式架构 二.原理简述 三.编写 3.1 加依赖 3.2 写代码 3.3 配置 四.优缺点分析 五.你可能会有的疑问 六.参考文档 七.案例测试 7.1. 添加流控规则 7.2. 服务 ...

  4. sentinel限流规则持久化改造,nacos数据源拉取、推送双向同步

    sentinel的功能强大,官方也提供了包括数据库.redis.nacos等多种数据源实现持久化动态规则,还提供了sentinel-dashboard的可视化界面配置规则 但是实际使用中发现,官方的可 ...

  5. Sentinel流控规则持久化

  6. Sentinel 规则持久化到 apollo 配置中心

    Sentinel 规则默认是存储在内存中的,只要服务重启之后对应的规则也会消失,实际的生产中肯定是不允许这种操作,因此 Sentinel 官方推荐在生产架构中使用第三方数据源作为永久存储中心,比如 n ...

  7. SpringCloud(14) Sentinel 1.8.4 规则持久化到Nacos

    文章目录 一.前言 二.快速体验 1.部署sentinel 2.SpringCloud中规则持久化到nacos 3.sentinel控制台操作测试 三.sentinel-dashboard源码修改 1 ...

  8. sentinel 1.8. 2持久化Nacos动态规则热点规则和授权规则不生效的问题

    sentinel 1.8.2 持久化Nacos动态规则热点规则和授权规则不生效的问题 问题:规则持久化到nacos之后,我在本地测试时候只有热点和授权规则不生效,我慢慢的在客户端sentinel-cs ...

  9. Sentinel授权规则及规则持久化

    授权规则 授权规则可以对请求方来源做判断和控制. 授权规则 基本规则 授权规则可以对调用方的来源做控制,有白名单和黑名单两种方式. 白名单:来源(origin)在白名单内的调用者允许访问 黑名单:来源 ...

最新文章

  1. mysql 复杂sql 面试_PHP面试之复杂MySQL语句的编写
  2. 汉字的ascii码值范围_ASCII代码
  3. 口琴膜片什么作用_新手怎么学口琴?
  4. [POI2004]GRA
  5. 进程标识符及fork
  6. chrome清除缓存快捷键
  7. 7-13 统计工龄 (20分)
  8. windows系统更新失败无法启动的解决方法
  9. flutter集成高德地图
  10. 9.25+9.27 联考
  11. apmserv mysql_APMServ MySQL 1577错误解决方法_MySQL
  12. 哈尔滨工业大学考研试题泄密了?官方通报:不存在
  13. 辽宁计算机单招学校有哪些专业,辽宁单招无人机应用技术专业有哪些学校
  14. java前后台开发之文件上传
  15. openoffice安装及使用,linux文件资源下载及windows资源下载
  16. 1.3一摞烙饼的问题
  17. 四旋翼无人机学习第4节--STM32、MPU9250等器件的绘制
  18. 运筹学实验4 运输问题的求解(二)
  19. 什么是尾调用优化和尾递归?
  20. python报错输出到日志_Python下的异常处理及错误日志记录

热门文章

  1. 有前途的程序员的14个习惯,你有几个?
  2. k近邻推荐用到的各种距离
  3. mysql xp系统时间_mysql时间类型year
  4. 【转载保存】匿名内部类中this的使用
  5. html之figure元素和figcaption元素为图片声明标题
  6. 用手机「3D探店」是种什么体验?
  7. 东方希望上云 告诉你数字化门槛儿到底有多高?
  8. 利用云数据库 MongoDB ,为你的业务创建单节点实例
  9. JSON数据从OSS迁移到MaxCompute最佳实践 1
  10. 看图了解RocksDB