当前位置: 首页 > news >正文

46.Sentinel规则持久化

当微服务order-service服务重启,之前配置规则就丢失了。

这是因为Sentinel默认会将这些规则保存在内存里。那么在生产环境下这样肯定是不行的。

sentinel的控制台规则管理有三种模式:

1.原始模式:Sentinel的默认模式,将规则保存在内存,重启微服务会丢失。

2.pull模式,支持持久化。

 控制台将配置规则推送的sentinel客户端,而客户端会将配置规则保存在本地文件或者数据库中。以后会定时去本地文件或数据库中查询,更新本地规则。

缺陷:微服务一般都是要做集群的,一个微服务将配置刚更新到数据库,其他微服务没有及时的去读取已经更新过后的配置,因为是定时读取。所以存在时效性,从而导致数据的不一致问题。所以不推荐。

3.push模式,支持持久化。

sentinel控制台将配置规则推送到远程配置中心,例如Nacos。Sentinel客户端监听Nacos,获取配置变更的推送消息,完成本地配置更新。

实现push模式,需要去修改Sentinel开源框架的源代码,同时微服务也要改成去监听nacos。

1.引入Sentinel监听nacos的依赖

<!--sentinel监听nacos的依赖,实现规则持久化,push模式--><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency>

2.添加配置

spring:profiles:active: testapplication:name: order-servicecloud:nacos:server-addr: localhost:8848 # nacos 服务端地址0config:file-extension: yaml # 文件后缀名discovery:enabled: truenamespace: publicgroup: DEFAULT_GROUPwatch:enabled: true # 启用服务监听watch-delay: 3000 # 3秒拉取一次最新服务列表sentinel:transport:dashboard: localhost:8080 # sentinel控制台地址web-context-unify: false # 关闭context整合(Sentinel默认会将Controller方法做context上下文整合,导致链路模式的流控失败)
      datasource:flow: # 配置限流nacos:server-addr: localhost:8848dataId: orderservice-flow-rulesgroupId: SENTINEL_GROUPrule-type: flow # 还可以是 degrade authority param-flowdegrade: # 配置降级nacos:server-addr: localhost:8848dataId: orderservice-degrade-rulesgroupId: SENTINEL_GROUPrule-type: degrade # 还可以是 flow authority param-flow

3.修改源码打包

Sentinel默认不支持nacos持久化,需要修改源码

①解压源码包

首先去下载Sentinel对应版本的源码包zip文件

网址:https://github.com/alibaba/Sentinel/releases

②用idea打开解压后后的项目

③修改sentinel-dashboard源码的pom文件,nacos的依赖默认scope是test,只能在测试时候使用,这里要去除。

④将sentinel-datasource-nacos依赖的scope去掉。

4.在Sentinel控制台会多出带-NACOS的菜单,进行各种规则配置。

待续....未完....

http://www.dtcms.com/a/332334.html

相关文章:

  • FreeRTOS中断服务程序(ISR)详细讲解
  • 从ChatGPT到智能助手:Agent智能体如何颠覆AI应用
  • 基于uiautomation的自动化流程RPA开源开发演示
  • 机器学习——PCA(主成分分析)降维
  • 开源 Arkts 鸿蒙应用 开发(十五)自定义绘图控件--仪表盘
  • STM32 - Embedded IDE - GCC - 解决LWRB库在GCC编译器会编译失败,在ARMCC编译器时却正常编译
  • 【GUI】ssh实现gui本地可视
  • 公司的服务器怎么个事,服务器是什么东西
  • 系统思考:情绪内耗与思维模式
  • 开源长期记忆 短期记忆 框架调研对比19999字
  • 4.4 vue3生命周期函数
  • 解决在uniapp真机运行上i18n变量获取不到问题
  • Vue2与Vue3生命周期函数全面解析:从入门到精通
  • 【测试用例】
  • Qt 常用控件 - 9
  • 小兔鲜儿-小程序uni-app(二)
  • 手机端的音视频界面或者图片文档界面共享给大屏
  • 从源码到可执行文件:hello.c 的二进制之旅
  • Java项目基本流程(四)
  • 基于阿里云音频识别模型的网页语音识别系统实现
  • 人工智能与社会治理:从工具到生态的范式重构
  • spring中异步任务注解@Async和@scheduled的使用
  • Redis核心应用场景及代码案例
  • 璞致fpga Zynq UltraScale Plus RFSoC PZ-ZU47DR 核心板与开发板用户手册
  • StringBoot-SSE和WebFlux方式消息实时推送-默认单向-可增加交互接口
  • 力扣 hoot100 搜索二维矩阵
  • Unity 绳子插件 ObjRope 使用简记
  • 从应用场景看国产化FPGA潜力,紫光同创研讨会武汉·北京站回顾
  • Java面试实战系列【并发篇】- Semaphore深度解析与实战
  • 算法学习远程访问:借助 cpolar 内网穿透服务使用 Hello-Algo