文章目录

  • 一、推模式架构图
  • 二、原理简述
    • 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. centos7中使用yum安装tomcat以及它的启动、停止、重启
  2. 数据库内核杂谈 - 一小时实现一个基本功能的数据库
  3. oracle如何计算2个坐标的距离,百度地图两个坐标之间的距离计算
  4. 3、mybatis主配置文件之settings
  5. 【机器视觉】 dev_set_paint算子
  6. 前端学习(3080):vue+element今日头条管理-发布文章功能介绍
  7. 关于高速光耦6N137的使用总结
  8. vsftpd配置(虚拟用户、匿名用户登录)
  9. 12.接口测试报告包含哪些内容
  10. 手机怎么下载python呢_安卓手机端怎么安装Python?
  11. linux 卸载nfs device is busy,NFS umount 提示 device is busy
  12. 2021年的理财收益,2022继续加油
  13. 37手游基于云平台的大数据建设实践
  14. java-喝饮料换空瓶问题
  15. 和铂医药任命陈颖颖博士为首席财务官;​劲方医药和英矽智能达成合作 | 医药健闻...
  16. 数字图像和数字图像处理
  17. php模拟登陆正方教务管理系统(thinkPHP5.0)
  18. 462 字节 C 代码实现雅虎 logo ACSII 动画
  19. 什么是jQuery,jQuery选择器
  20. PHP目前市场怎么样,前景怎么样?

热门文章

  1. 甜甜圈和拓扑学也有关系,你想的到吗?
  2. 热胀冷缩,但为什么水结冰体积会膨胀?
  3. 搜索智能提示suggestion,附近地点搜索
  4. 睡眠音频分割及识别问题(四)--YAMNet简介
  5. WebSocket小叙
  6. 赫夫曼编码长度计算问题?
  7. sdut 取数字问题(深搜,动态规划)
  8. 多线程---条件变量
  9. C++中堆和栈的完全解析
  10. ubuntu 16.0安装ros-kinetic