张家口购物网站开发设计,网站建设具体工作,权威发布信息,购买一个域名能建几个网站文章目录 Sentinel 规则持久化一、修改order-service服务1.引入依赖2.配置nacos地址 第二步修改非常麻烦#xff0c;可以略过#xff0c;直接使用已经打好包的来使用二、修改sentinel-dashboard源码1. 解压2. 修改nacos依赖3. 添加nacos支持4. 修改nacos地址5. 配置nacos数据… 文章目录 Sentinel 规则持久化一、修改order-service服务1.引入依赖2.配置nacos地址 第二步修改非常麻烦可以略过直接使用已经打好包的来使用二、修改sentinel-dashboard源码1. 解压2. 修改nacos依赖3. 添加nacos支持4. 修改nacos地址5. 配置nacos数据源6. 修改前端页面7. 重新编译、打包项目8.启动9. 浏览器端测试10. 修改好后的sentinel规则可持久化文件 Sentinel 规则持久化 需要大量修改源码很麻烦下面也只是修改了一小部分 阿里有一个收费的sentinel云服务开源sentinel没有实现最佳版本可能就是为了给收费版让路吧 一、修改order-service服务
修改OrderService让其监听Nacos中的sentinel规则配置。
具体步骤如下
1.引入依赖
在order-service中引入sentinel监听nacos的依赖
dependencygroupIdcom.alibaba.csp/groupIdartifactIdsentinel-datasource-nacos/artifactId
/dependency2.配置nacos地址
在order-service中的application.yml文件配置nacos地址及监听的配置信息
spring:cloud:sentinel:datasource:flow:nacos:server-addr: localhost:8848 # nacos地址dataId: orderservice-flow-rulesgroupId: SENTINEL_GROUPrule-type: flow # 还可以是degrade、authority、param-flow直接从datasource开始复制粘贴过去 第二步修改非常麻烦可以略过直接使用已经打好包的来使用
链接https://pan.baidu.com/s/1mffAD62BZt3IDp59NxO7OQ 提取码hzan 二、修改sentinel-dashboard源码
SentinelDashboard默认不支持nacos的持久化需要修改源码。
1. 解压
解压课前资料中的sentinel源码包 然后并用IDEA打开这个项目结构如下 2. 修改nacos依赖
在sentinel-dashboard源码的pom文件中nacos的依赖默认的scope是test只能在测试时使用这里要去除 将sentinel-datasource-nacos依赖的scope去掉
dependencygroupIdcom.alibaba.csp/groupIdartifactIdsentinel-datasource-nacos/artifactId
/dependency3. 添加nacos支持
在sentinel-dashboard的test包下已经编写了对nacos的支持我们需要将其拷贝到main下。 4. 修改nacos地址
然后还需要修改测试代码中的NacosConfig类 复制后的
修改其中的nacos地址让其读取application.properties中的配置 /*** author Eric Zhao* since 1.4.0*/
Configuration
ConfigurationProperties(prefix nacos)
public class NacosConfig {// nacos地址private String addr;Beanpublic ConfigService nacosConfigService() throws Exception {return ConfigFactory.createConfigService(addr);}public String getAddr() {return addr;}public void setAddr(String addr) {this.addr addr;}Beanpublic ConverterListFlowRuleEntity, String flowRuleEntityEncoder() {return JSON::toJSONString;}Beanpublic ConverterString, ListFlowRuleEntity flowRuleEntityDecoder() {return s - JSON.parseArray(s, FlowRuleEntity.class);}}
在sentinel-dashboard的application.properties中添加nacos地址配置
nacos.addrlocalhost:88485. 配置nacos数据源
另外还需要修改com.alibaba.csp.sentinel.dashboard.controller.v2包下的FlowControllerV2类 让我们添加的Nacos数据源生效 6. 修改前端页面
接下来还要修改前端页面添加一个支持nacos的菜单。
修改src/main/webapp/resources/app/scripts/directives/sidebar/目录下的sidebar.html文件 将其中的这部分注释打开 修改其中的文本 li ui-sref-activeactive ng-ifentry.appType0a ui-srefdashboard.flow({app: entry.app})i classglyphicon glyphicon-filter/inbsp;nbsp;流控规则-NACOS/a
/li7. 重新编译、打包项目
运行IDEA中的maven插件编译和打包修改好的Sentinel-Dashboard 报错就先clean再package 打包好的文件如下可以直接使用就不要自己动手改了确实很麻烦 链接https://pan.baidu.com/s/1YpHITSBC3dUSAj8zQF_niQ 提取码hzan 复制到一个目录下并重命名以示区分 8.启动
启动方式跟官方一样
java -jar sentinel-dashboard.jar如果要修改nacos地址需要添加参数可以动态指定nacos的地址外部依赖的地址当然要动态指定啦
java -jar -Dnacos.addrlocalhost:8848 sentinel-dashboard.jar9. 浏览器端测试
先正常登录nacos然后访问一个资源触发一个簇点链路
然后可能地址没换之前的官方nacos前端有缓存需要清空一下清空指定网页缓存操作如下图
然后就会出现我们修改的基于nacos持久化的流控规则
那么目前在流控规则-nacos菜单下新建的规则可以持久化 其他菜单还是不行得一个个修改所以修改量会非常大这也只是修改了一小部分
新增试试
到nacos下面看多出了一个配置项: orderservice-flow-rules
访问http://localhost:10010/order/101?authorizationadmin
确实被限流了
重启OrderApplication微服务以前会丢失现在不会丢失了 (其他菜单下新建规则然后重启OrderApplication微服务查看确实丢失了)
10. 修改好后的sentinel规则可持久化文件
打包好的文件如下可以直接使用就不要自己动手改了确实很麻烦 链接https://pan.baidu.com/s/1YpHITSBC3dUSAj8zQF_niQ 提取码hzan