欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring?Cloud微服務(wù)架構(gòu)Sentinel數(shù)據(jù)雙向同步

 更新時(shí)間:2022年10月12日 11:19:44   作者:Java白羊  
這篇文章主要為大家介紹了Spring?Cloud微服務(wù)架構(gòu)Sentinel數(shù)據(jù)雙向同步示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Sentinel數(shù)據(jù)雙向同步

上面實(shí)現(xiàn)了Nacos單向同步配置規(guī)則到Sentinel,但是只是單向的,沒(méi)有實(shí)現(xiàn)Sentinel向Nacos同步規(guī)則配置;下面我們來(lái)實(shí)現(xiàn)Sentinel同步配置到Nacos,以及兩者的雙向數(shù)據(jù)同步結(jié)合使用。

我們回顧一下,首先Sentinel規(guī)則的存儲(chǔ)默認(rèn)是存儲(chǔ)在內(nèi)存的,應(yīng)用重啟之后規(guī)則會(huì)丟失。因此我們通過(guò)配置中心Nacos保存規(guī)則,然后通過(guò)定時(shí)拉取Nacos數(shù)據(jù)來(lái)獲取規(guī)則配置,可以做到動(dòng)態(tài)實(shí)時(shí)的刷新規(guī)則。但是這種方式是單向的,并且有一定的限制,我們是否可以在Sentinel和Nacos這兩個(gè)中間件之間雙向同步數(shù)據(jù)呢?下面我們來(lái)實(shí)現(xiàn)Sentinel數(shù)據(jù)雙向同步。

前言

因?yàn)閷?shí)現(xiàn)Sentinel-Nacos數(shù)據(jù)雙向同步,需要使用到推(Push)模式在兩邊相互推送數(shù)據(jù)。那么什么是Sentinel的拉模式和推模式呢?Sentinel的規(guī)則管理有哪些模型呢?下面我們一一來(lái)進(jìn)行解答:

什么是推模式和拉模式?

  • 推模式:注冊(cè)中心統(tǒng)一推送,客戶(hù)端通過(guò)注冊(cè)監(jiān)聽(tīng)器時(shí)刻監(jiān)聽(tīng)變化
  • 拉模式:客戶(hù)端主動(dòng)向配置中心定時(shí)輪詢(xún)拉取配置

Sentinel的規(guī)則管理模型

Sentinel的規(guī)則管理,主要有以下三種模型:

首先原始模式下的Sentinel Dashboard配置的規(guī)則重啟應(yīng)用后就會(huì)丟失,這種方式肯定是有極大風(fēng)險(xiǎn)的,生產(chǎn)環(huán)境不推薦使用。

其次,拉模式的確不會(huì)對(duì)Sentinel客戶(hù)端造成壓力,但是Sentinel客戶(hù)端多了以后會(huì)對(duì)Nacos注冊(cè)中心造成壓力,并且也無(wú)法保證實(shí)時(shí)性。拉模式的應(yīng)用場(chǎng)景一般是處理壓力小的一方向處理壓力大的一方獲取數(shù)據(jù),并且沒(méi)有太高的實(shí)時(shí)性要求,比如定時(shí)拉取日志數(shù)據(jù)。

我們可以使用推模式作為Sentinel客戶(hù)端的規(guī)則同步方式,通過(guò)監(jiān)聽(tīng)器監(jiān)聽(tīng)Nacos服務(wù)端口,來(lái)實(shí)現(xiàn)規(guī)則的實(shí)時(shí)更新。這就需要涉及到Sentinel Dashboard的規(guī)則管理及推送功能:集中管理和推送規(guī)則,sentinel-core 提供了 API 和擴(kuò)展接口來(lái)接收和推送信息。并且這種方式,不用擔(dān)心Sentinel客戶(hù)端配置的規(guī)則錯(cuò)誤會(huì)導(dǎo)致正確的配置丟失,因?yàn)镹acos有配置一鍵回滾機(jī)制,并且還有MySQL作為持久化手段。

總結(jié):生產(chǎn)環(huán)境建議使用 Push模式的數(shù)據(jù)同步中間件(比如Nacos),并且可以的話最好實(shí)現(xiàn)數(shù)據(jù)雙向同步。當(dāng)然還有文件同步的方式,但是無(wú)法保證實(shí)時(shí)性和動(dòng)態(tài)性,因此只是作為一種備份手段。

了解了規(guī)則雙向同步的過(guò)程和原理,下面我們來(lái)實(shí)現(xiàn)Sentinel規(guī)則持久化到Nacos規(guī)則數(shù)據(jù)雙向同步使用測(cè)試

準(zhǔn)備工作

1. 版本選取

因?yàn)樯厦嫖覀兪褂玫氖?Spring Cloud Alibaba 2021.0.1.0*Spring Cloud 2021.0.1 ,因此對(duì)應(yīng)Sentinel版本為Sentinel 1.8.3,下載的使用需要注意版本。

2. 下載Sentinel源碼

下載Sentinel對(duì)應(yīng)客戶(hù)端版本的 sentinel-dashboard 源碼

源碼地址如下,點(diǎn)擊Tags選擇版本為1.8.3,然后點(diǎn)擊下載ZIP壓縮包,下載地址如下:

https://github.com/alibaba/Sentinel/tree/1.8.3

3. 解壓并導(dǎo)入項(xiàng)目

將壓縮包解壓,用IDE工具打開(kāi)sentinel-dashboard項(xiàng)目,由于是將Sentinel控制臺(tái)定義的規(guī)則持久化到Nacos,所以,只需要打開(kāi)sentinel-dashboard項(xiàng)目即可:

然后將sentinel項(xiàng)目中的sentinel-dashboard子模塊項(xiàng)目,導(dǎo)入到IDE中即可:

我們導(dǎo)入sentinel整個(gè)項(xiàng)目,因?yàn)闀?huì)需要下載很多用不到的依賴(lài),比較耽誤時(shí)間。事實(shí)上,我們只需要導(dǎo)入我們需要改造的sentinel-dashboard子模塊就可以了。

完成了前面的準(zhǔn)備工作,下面我們可以正式開(kāi)始改造源碼了:

改造Sentinel控制臺(tái)

為什么需要改造Sentinel控制臺(tái)源碼?

因?yàn)镾entinel源碼本身只支持Nacos同步配置到Sentinel,并不支持Sentinel同步配置到Nacos(阿里的AHAS倒是提供這個(gè)功能了,所以說(shuō)阿里的開(kāi)源只開(kāi)一半,還需要社區(qū)提供源碼修改方案)。因此,我們需要改造Sentinel控制臺(tái)以支持Sentinel推送規(guī)則到Nacos。

我們可以通過(guò)Sentinel擴(kuò)展接口中的DynamicRuleProvider和DynamicRulePublisher接口來(lái)實(shí)現(xiàn)自己的拉取者(Provider)和推送者(Publisher)接口邏輯。

源碼改造的過(guò)程

我們從Sentinel-Nacos規(guī)則雙向同步的底層原理出發(fā),從sentinel-dashboard源碼一步步進(jìn)行改造。這樣在更換版本也不會(huì)出現(xiàn)不適配的情況,并且從底層代碼一步步修改的方式比起直接用打包好的jar包的方式,即使出現(xiàn)了適配問(wèn)題也能更好、更快的理解并分析出問(wèn)題出現(xiàn)的原因,對(duì)于解決bug和修改任何版本的Sentinel源碼都是有幫助的。

主要分為下面三大部分進(jìn)行改造:

全局修改

  • 全局依賴(lài)修改
  • 全局配置修改

后端代碼修改

  • 配置類(lèi)修改
  • 創(chuàng)建規(guī)則交互層(拉取與推送實(shí)現(xiàn)類(lèi))
  • 規(guī)則控制層修改

前端代碼修改

  • 前端頁(yè)面調(diào)整
  • 前端接口調(diào)整

我們這里是Sentinel 1.8.3版本,基于理解原理和實(shí)踐的原因,下面我們針對(duì) sentinel-dashboard 源碼進(jìn)行手動(dòng)改造。

1. 全局修改

① 修改POM依賴(lài)

想要將 dashboard 的規(guī)則持久化到Nacos,需要在sentinel-dashboard子項(xiàng)目的pom.xml中添加一個(gè)依賴(lài)(源碼中已經(jīng)添加,不過(guò)只在測(cè)試環(huán)境下打包),將作用域擴(kuò)大:

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
    <!--<scope>test</scope>-->
</dependency>

② 修改properties配置文件

在resources目錄下,找到配置文件 application.properties 文件,在末尾添加一下配置:

# Nacos Configurations
sentinel.nacos.serverAddr=localhost:8848
sentinel.nacos.namespace=
sentinel.nacos.group-id=SENTINEL-GROUP

全部依賴(lài)和配置就改造完成了,下面進(jìn)行后端代碼和前端代碼的改造。

以上就是Spring Cloud微服務(wù)架構(gòu)Sentinel數(shù)據(jù)雙向同步的詳細(xì)內(nèi)容,更多關(guān)于SpringCloud Sentinel數(shù)據(jù)雙向同步的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 淺談Spring Boot 微服務(wù)項(xiàng)目的推薦部署方式

    淺談Spring Boot 微服務(wù)項(xiàng)目的推薦部署方式

    這篇文章主要介紹了淺談Spring Boot 微服務(wù)項(xiàng)目的推薦部署方式,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-09-09
  • 輕松掌握J(rèn)ava享元模式

    輕松掌握J(rèn)ava享元模式

    這篇文章主要幫助大家輕松掌握J(rèn)ava享元模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Java?Guava的使用技巧整理

    Java?Guava的使用技巧整理

    Guava是Google發(fā)布的一個(gè)開(kāi)源庫(kù),主要提供了一些在Java開(kāi)發(fā)中非常有用的工具類(lèi)和API,不管是工作還是學(xué)習(xí)都是非常值得我們?nèi)ナ煜さ?,一起?lái)看看吧
    2023-03-03
  • SpringBoot 圖書(shū)管理系統(tǒng)(刪除、強(qiáng)制登錄、更新圖書(shū))詳細(xì)代碼

    SpringBoot 圖書(shū)管理系統(tǒng)(刪除、強(qiáng)制登錄、更新圖書(shū))詳細(xì)代碼

    在企業(yè)開(kāi)發(fā)中,通常不采用delete語(yǔ)句進(jìn)行物理刪除,而是使用邏輯刪除,邏輯刪除通過(guò)修改標(biāo)識(shí)字段來(lái)表示數(shù)據(jù)已被刪除,方便數(shù)據(jù)恢復(fù),本文給大家介紹SpringBoot 圖書(shū)管理系統(tǒng)實(shí)例代碼,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Java實(shí)現(xiàn)常用緩存淘汰算法:FIFO、LRU、LFU

    Java實(shí)現(xiàn)常用緩存淘汰算法:FIFO、LRU、LFU

    在高并發(fā)、高性能的質(zhì)量要求不斷提高時(shí),我們首先會(huì)想到的就是利用緩存予以應(yīng)對(duì)。而常用的幾個(gè)緩存淘汰算法有:FIFO、LRU和LFU,本文將為大家詳細(xì)介紹一下這三個(gè)算法并用java實(shí)現(xiàn),感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2021-12-12
  • 詳解Java 中泛型的實(shí)現(xiàn)原理

    詳解Java 中泛型的實(shí)現(xiàn)原理

    這篇文章主要介紹了詳解Java 中泛型的實(shí)現(xiàn)原理,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-03-03
  • Java中讓界面內(nèi)的時(shí)間及時(shí)更新示例代碼

    Java中讓界面內(nèi)的時(shí)間及時(shí)更新示例代碼

    這篇文章主要給大家介紹了關(guān)于Java中讓界面內(nèi)的時(shí)間及時(shí)更新的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Postman實(shí)現(xiàn)傳List<String>集合

    Postman實(shí)現(xiàn)傳List<String>集合

    這篇文章主要介紹了Postman實(shí)現(xiàn)傳List<String>集合方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • mybatis注解之@Mapper和@MapperScan的使用

    mybatis注解之@Mapper和@MapperScan的使用

    這篇文章主要介紹了mybatis注解之@Mapper和@MapperScan的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • java.exe和javaw.exe的區(qū)別及使用方法

    java.exe和javaw.exe的區(qū)別及使用方法

    這篇文章主要介紹了java.exe和javaw.exe的區(qū)別及使用方法,需要的朋友可以參考下
    2014-04-04

最新評(píng)論