最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

前言

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

什么是推模式和拉模式?

  • 推模式:注冊中心統(tǒng)一推送,客戶端通過注冊監(jiān)聽器時刻監(jiān)聽變化
  • 拉模式:客戶端主動向配置中心定時輪詢拉取配置

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

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

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

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

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

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

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

準備工作

1. 版本選取

因為上面我們使用的是 Spring Cloud Alibaba 2021.0.1.0*Spring Cloud 2021.0.1 ,因此對應Sentinel版本為Sentinel 1.8.3,下載的使用需要注意版本。

2. 下載Sentinel源碼

下載Sentinel對應客戶端版本的 sentinel-dashboard 源碼

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

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

3. 解壓并導入項目

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

然后將sentinel項目中的sentinel-dashboard子模塊項目,導入到IDE中即可:

我們導入sentinel整個項目,因為會需要下載很多用不到的依賴,比較耽誤時間。事實上,我們只需要導入我們需要改造的sentinel-dashboard子模塊就可以了。

完成了前面的準備工作,下面我們可以正式開始改造源碼了:

改造Sentinel控制臺

為什么需要改造Sentinel控制臺源碼?

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

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

源碼改造的過程

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

主要分為下面三大部分進行改造:

全局修改

  • 全局依賴修改
  • 全局配置修改

后端代碼修改

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

前端代碼修改

  • 前端頁面調整
  • 前端接口調整

我們這里是Sentinel 1.8.3版本,基于理解原理和實踐的原因,下面我們針對 sentinel-dashboard 源碼進行手動改造。

1. 全局修改

① 修改POM依賴

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

<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

全部依賴和配置就改造完成了,下面進行后端代碼和前端代碼的改造。

以上就是Spring Cloud微服務架構Sentinel數(shù)據(jù)雙向同步的詳細內容,更多關于SpringCloud Sentinel數(shù)據(jù)雙向同步的資料請關注腳本之家其它相關文章!

相關文章

  • Springboot使用異步請求提高系統(tǒng)的吞吐量詳解

    Springboot使用異步請求提高系統(tǒng)的吞吐量詳解

    這篇文章主要介紹了Springboot使用異步請求提高系統(tǒng)的吞吐量詳解,和同步請求相對,異步不需要等待響應,隨時可以發(fā)送下一次請求,如果是同步請求,需要將信息填寫完整,再發(fā)送請求,服務器響應填寫是否正確,再做修改,需要的朋友可以參考下
    2023-08-08
  • Java大文件上傳詳解及實例代碼

    Java大文件上傳詳解及實例代碼

    這篇文章主要介紹了Java大文件上傳詳解及實例代碼的相關資料,需要的朋友可以參考下
    2017-02-02
  • Lombok的詳細使用及優(yōu)缺點總結

    Lombok的詳細使用及優(yōu)缺點總結

    最近在學Mybatis,接觸到了Lombok的使用,所以寫一篇文章記錄一下,包括lombok的安裝及使用優(yōu)缺點,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • Java 在PPT中創(chuàng)建散點圖的實現(xiàn)示例

    Java 在PPT中創(chuàng)建散點圖的實現(xiàn)示例

    本文將以Java代碼示例展示如何在PPT幻燈片中創(chuàng)建散點圖表。文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 關于在IDEA熱部署插件JRebel使用問題詳解

    關于在IDEA熱部署插件JRebel使用問題詳解

    這篇文章主要介紹了關于在IDEA熱部署插件JRebel使用問題詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • springcloud微服務之Eureka配置詳解

    springcloud微服務之Eureka配置詳解

    這篇文章主要介紹了springcloud微服務之Eureka配置詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 詳解如何保護SpringBoot配置文件中的敏感信息

    詳解如何保護SpringBoot配置文件中的敏感信息

    使用過SpringBoot配置文件的朋友都知道,資源文件中的內容通常情況下是明文顯示,安全性就比較低一些,所以為了提高安全性,就需要對配置文件中的敏感信息進行保護,下面就為大家介紹一下實現(xiàn)方法吧
    2023-07-07
  • 在SpringBoot中使用Logback管理記錄日志

    在SpringBoot中使用Logback管理記錄日志

    本篇文章主要介紹了在SpringBoot中使用Logback管理記錄日志,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Java中ArrayList同步的2種方法分享

    Java中ArrayList同步的2種方法分享

    這篇文章主要分享了Java中ArrayList同步的2種方法,Collections.synchronizedList()的方法,這個方法要進行串行訪問以及使用CopyOnWriteArrayList,下面分享內容需要的小伙伴可以參考一下
    2022-03-03
  • Java的后臺文件夾下文件的遍歷完整代碼

    Java的后臺文件夾下文件的遍歷完整代碼

    這篇文章主要介紹了Java的后臺文件夾下文件的遍歷完整代碼,首先分享了java中遍歷一個文件夾里邊的所有文件,然后介紹了用Java遍歷一個文件夾并獲取它里面的所有內容詳細代碼,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12

最新評論

舒城县| 永兴县| 贵港市| 玉林市| 密山市| 碌曲县| 松原市| 利川市| 金平| 上犹县| 建平县| 进贤县| 黄陵县| 灵石县| 运城市| 牙克石市| 菏泽市| 宣恩县| 加查县| 大关县| 贺州市| 花垣县| 上高县| 资溪县| 大田县| 缙云县| 台州市| 武强县| 周至县| 武汉市| 巴林右旗| 定结县| 嵊州市| 宁强县| 漳平市| 镇原县| 渑池县| 吴忠市| 滨海县| 台山市| 苗栗县|