成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

改造Sentinel源碼,實現Nacos雙向通信!

開發 前端
Sentinel Dashboard 默認情況下,只能將配置規則保存到內存中,這樣就會程序重啟后配置規則丟失的情況,因此我們需要給 Sentinel 設置一個數據源,并且要和數據源之間實現雙向通訊,所以我們需要修改 Sentinel 的源碼。

Sentinel Dashboard(控制臺)默認情況下,只能將配置規則保存到內存中,這樣就會導致 Sentinel Dashboard 重啟后配置規則丟失的情況,因此我們需要將規則保存到某種數據源中,Sentinel 支持的數據源有以下這些:

圖片圖片

然而,默認情況下,Sentinel 和數據源之間的關系是單向數據通訊的,也就是只能先在數據源中配置規則,然后數據源會被規則推送至 Sentinel Dashboard 和 Sentinel 客戶端,但是在 Sentinel Dashboard 中修改規則或新增規則是不能反向同步到數據源中的,這就是單向通訊。

所以,今天我們就該修改一下 Sentinel 的源碼,讓其可以同步規則至數據源,改造之后的交互流程如下圖所示:

圖片圖片

Sentinel 同步規則至數據源,例如將 Sentinel 的規則,同步規則至 Nacos 數據源的改造步驟很多,但整體實現難度不大,下面我們一起來看吧。

1.下載Sentinel源碼

下載地址:https://github.com/alibaba/Sentinel

PS:本文 Sentinel 使用的版本是 1.8.6。

下載源碼之后,使用 idea 打開里面的 sentinel-dashboard 項目,如下圖所示:

圖片圖片

2.修改pom.xml

將 sentinel-datasource-nacos 底下的 scope 注釋掉,如下圖所示:

圖片圖片

PS:因為官方提供的 Nacos 持久化實例,是在 test 目錄下進行單元測試的,而我們是用于生產環境,所以需要將 scope 中的 test 去掉。

3.移動單元測試代碼

將 test/com.alibaba.csp.sentinel.dashboard.rule.nacos 下所有文件復制到 src/main/java/com.alibaba.csp.sentinel.dashboard.rule 目錄下,如下圖所示:

圖片圖片

4.新建NacosPropertiesConfiguration文件

在 com.alibaba.csp.sentinel.dashboard.rule 下創建 Nacos 配置文件的讀取類,實現代碼如下:

package com.alibaba.csp.sentinel.dashboard.rule;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@ConfigurationProperties(prefix = "sentinel.nacos")
@Configuration
public class NacosPropertiesConfiguration {
    private String serverAddr;
    private String dataId;
    private String groupId;
    private String namespace;
    private String username;
    private String password;
    // 省略 Getter/Setter 代碼
}

5.修改NacosConfig文件

只修改 NacosConfig 中的 nacosConfigService 方法,修改后的代碼如下:

@Bean
public ConfigService nacosConfigService(NacosPropertiesConfiguration nacosPropertiesConfiguration) throws Exception {
    Properties properties = new Properties();
    properties.put(PropertyKeyConst.SERVER_ADDR, nacosPropertiesConfiguration.getServerAddr());
    properties.put(PropertyKeyConst.NAMESPACE, nacosPropertiesConfiguration.getNamespace());
    properties.put(PropertyKeyConst.USERNAME,nacosPropertiesConfiguration.getUsername());
    properties.put(PropertyKeyConst.PASSWORD,nacosPropertiesConfiguration.getPassword());
    return ConfigFactory.createConfigService(properties);
//        return ConfigFactory.createConfigService("localhost"); // 原代碼
}

6.修改FlowControllerV2文件

修改 com.alibaba.csp.sentinel.dashboard.controller.v2 目錄下的 FlowControllerV2 文件:

圖片圖片

修改后代碼:

@Autowired
@Qualifier("flowRuleNacosProvider")
private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider;
@Autowired
@Qualifier("flowRuleNacosPublisher")
private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;

PS:此操作的目的是開啟 Controller 層操作 Nacos 的開關。

如下圖所示:

圖片圖片

7.修改配置信息

在 application.properties 中設置 Nacos 連接信息,配置如下:

sentinel.nacos.serverAddr=localhost:8848
sentinel.nacos.username=nacos
sentinel.nacos.password=nacos
sentinel.nacos.namespace=
sentinel.nacos.groupId=DEFAULT_GROUP
sentinel.nacos.dataId=sentinel-dashboard-demo-sentinel

8.修改sidebar.html

修改 webapp/resources/app/scripts/directives/sidebar/sidebar.html 文件:

圖片圖片

搜索“dashboard.flowV1”改為“dashboard.flow”,如下圖所示:

圖片圖片

9.修改identity.js

identity.js 文件有兩處修改,它位于 webapp/resources/app/scripts/controllers/identity.js 目錄。

9.1 第一處修改

將“FlowServiceV1”修改為“FlowServiceV2”,如下圖所示:

圖片圖片

9.2 第二處修改

搜索“/dashboard/flow/”修改為“/dashboard/v2/flow/”,如下圖所示:

圖片圖片

PS:修改 identity.js 文件主要是用于在 Sentinel 點擊資源的“流控”按鈕添加規則后將信息同步給 Nacos。

小結

Sentinel Dashboard 默認情況下,只能將配置規則保存到內存中,這樣就會程序重啟后配置規則丟失的情況,因此我們需要給 Sentinel 設置一個數據源,并且要和數據源之間實現雙向通訊,所以我們需要修改 Sentinel 的源碼。源碼的改造步驟雖然很多,但只要逐一核對和修改就可以實現 Sentinel 生成環境的配置了??赐暧浀檬詹嘏叮乐挂院笥玫臅r候找不到。

責任編輯:武曉燕 來源: Java中文社群
相關推薦

2009-12-22 09:11:31

WCF雙向通信

2009-12-08 11:17:41

WCF雙向通信

2010-02-23 17:55:24

WCF雙向通信

2021-05-20 08:01:15

Nacos 存儲Sentinel

2024-04-25 16:17:53

SentinelNacos數據源

2023-11-17 09:35:58

2023-08-18 14:28:18

UART異步通信

2009-12-29 16:05:22

2020-07-13 09:09:23

Sentinel源碼Bucket

2021-08-30 07:49:32

NacosSync雙向復制

2024-11-04 06:00:00

redis雙向鏈表

2021-09-06 10:34:48

Nacos復制源碼

2016-09-06 13:38:44

2019-02-28 09:22:37

Nacos微服務DNS

2021-07-12 08:00:21

Nacos 服務注冊源碼分析

2021-08-09 07:58:36

Nacos 服務注冊源碼分析

2025-04-18 00:00:00

MCPSSEHTTP

2021-04-21 07:52:39

核心SignalR應用

2021-05-14 07:45:07

Sentinel 接口限流

2021-02-05 12:04:45

LinuxUARTLinux系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久在线| 在线免费观看黄视频 | 91亚洲精品久久久电影 | 精品在线视频播放 | 福利视频一区二区 | 成人精品鲁一区一区二区 | 欧美激情欧美激情在线五月 | 久草精品在线 | 欧美国产日韩在线 | 日韩欧美一区二区三区免费观看 | 成人精品鲁一区一区二区 | 国产一区二区影院 | 中文一区| 国产美女特级嫩嫩嫩bbb片 | 日韩av大片免费看 | www.av在线| 高清免费av| 国产伦精品一区二区三毛 | 久久精品久久精品 | 久久国产欧美日韩精品 | 日韩中文字幕久久 | aⅴ色国产 欧美 | 亚洲欧美激情国产综合久久久 | 久久亚洲一区二区三区四区 | 成人在线日韩 | 九九久久这里只有精品 | 精品成人佐山爱一区二区 | 久久久久国产精品一区 | 中文精品视频 | 久久一区二区三区四区五区 | 中文字幕第十页 | 青青草一区二区 | 亚洲精品乱码久久久久久久久 | 日韩在线免费观看视频 | 国产精品久久久久久中文字 | 综合婷婷| av在线播放网| 欧美h版| 国内久久 | xxxxx免费视频 | 精品久久久久久久久久久院品网 |