iis添加asp网站,创新的响应式网站建设,电商旅游网站策划书,网站建设杭州sentinel控制台#xff0c;使用方便#xff0c;功能强大。使用官方的jar包#xff0c;配置不会持久化#xff0c;sentinel重启后会导致#xff0c;之前的规则全部丢失#xff0c;下面一起改造源码实现规则数据的持久化
sentinel源码地址
#xff08;github访问太慢使用方便功能强大。使用官方的jar包配置不会持久化sentinel重启后会导致之前的规则全部丢失下面一起改造源码实现规则数据的持久化
sentinel源码地址
github访问太慢直接上镜像版
Sentinel: Sentinel 是什么 随着微服务的流行服务和服务之间的稳定性变得越来越重要https://gitee.com/mirrors/Sentinel.git
因为项目使用的是Spring-cloud-alibabaSentinel支持和nacos整合就持久化到nacos数据库中同时sentinel还能读取nacos中做的流控规则。 1 源码目录 1.1、后台源码修改
小惊喜sentinel中有和nacos中对接的源码只不过没有使用。
1、改成 默认后台使用sentinel对接nacos而不是存到内存
2、前台页面接口调用nacos对应的接口
1.1.1 sentinel-dashboard中需要改动的位置
pom.xml中将sentinel-datasource-nacos包的scope注释掉 1.1.2 源码持久化到nacos的实现位置
不多说先复制到main目录rule包下 nacos包中的4个类
FlowRuleNacosProvider 动态获取Nacos配置中心流控规则读取流控规则FlowRuleNacosPublisher publish上传流控规则到Nacos配置中心写入流控规则NacosConfig Nacos配置NacosConfigUtils 流控规则在nacos中配置文件的一些细节后缀、组别等
1.1.3 NacosConfig配置
只实现了本地nacos并且需要默认配置需要支持自定义配置 改造后 NacosConfig源码
/** Copyright 1999-2018 Alibaba Group Holding Ltd.** Licensed under the Apache License, Version 2.0 (the License);* you may not use this file except in compliance with the License.* You may obtain a copy of the License at** http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an AS IS BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/
package com.alibaba.csp.sentinel.dashboard.rule.nacos;import com.alibaba.csp.sentinel.dashboard.datasource.entity.rule.FlowRuleEntity;
import com.alibaba.csp.sentinel.datasource.Converter;
import com.alibaba.fastjson.JSON;
import com.alibaba.nacos.api.PropertyKeyConst;
import com.alibaba.nacos.api.config.ConfigFactory;
import com.alibaba.nacos.api.config.ConfigService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.List;
import java.util.Properties;/*** author Eric Zhao* since 1.4.0*/
Configuration
public class NacosConfig {Value(${sentinel.nacos.address})private String nacosAddr;Value(${sentinel.nacos.username})private String nacosUsername;Value(${sentinel.nacos.password})private String nacosPassword;Beanpublic ConverterListFlowRuleEntity, String flowRuleEntityEncoder() {return JSON::toJSONString;}Beanpublic ConverterString, ListFlowRuleEntity flowRuleEntityDecoder() {return s - JSON.parseArray(s, FlowRuleEntity.class);}Beanpublic ConfigService nacosConfigService() throws Exception {Properties properties new Properties();properties.put(PropertyKeyConst.SERVER_ADDR, nacosAddr);properties.put(PropertyKeyConst.USERNAME, nacosUsername);properties.put(PropertyKeyConst.PASSWORD, nacosPassword);return ConfigFactory.createConfigService(properties);}
}1.1.4 修改配置文件 application.properties
增加nacos配置信息
#Sentinel 连接nacos配置
sentinel.nacos.address 192.168.1.109:8848
sentinel.nacos.username nacos
sentinel.nacos.password nacos1.1.5 配置v2版本controller调用nacos提供的服务层 1.2 前端页面源码修改
1.2.1 配置中添加nacos接口并修改地址
文件 src/main/webapp/resources/app/scripts/controllers/identity.js
搜FlowServiceV1 改为 FlowServiceV2 搜/dashboard/flow/ 改为 /dashboard/v2/flow/ 1.2.2 修改页面中的路由地址
文件 src/main/webapp/resources/app/scripts/directives/sidebar/sidebar.html
搜dashboard.flowV1定位57行去掉V1 文件 src/main/webapp/resources/app/views/flow_v2.html
注释掉回到单机页面按钮 2.项目引用
2.1 微服务引入jar包 pom.xml !-- SpringCloud Alibaba Nacos --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency!-- Sentinel --dependencygroupIdcom.alibaba.csp/groupIdartifactIdsentinel-datasource-nacos/artifactId/dependency
2.2 微服务sentinel相关配置
# Spring
spring:cloud:sentinel:eager: true# sentinel 地址transport:dashboard: ${sentinel.host}:${sentinel.port}filter:enabled: falsedatasource:ds1:nacos:server-addr: ${nacos.host}:${nacos.port}username: ${nacos.name}password: ${nacos.pwd}namespace: ${nacos.namespace}group-id: ${nacos.group}data-id: ${spring.application.name}-flow-rulesdata-type: jsonrule-type: flow 3 nacos增加sentinel持久化配置文件
以下文件后缀与组名需要对应 大功告成去试试效果吧