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

Spring中的Sentinel規(guī)則持久化解析

 更新時(shí)間:2023年09月12日 09:50:58   作者:小新要變強(qiáng)  
這篇文章主要介紹了Spring中的Sentinel規(guī)則持久化解析,具體內(nèi)容包括,Sentinel規(guī)則推送三種模式介紹,原始模式,拉模式,推模式,并對基于Nacos配置中心控制臺實(shí)現(xiàn)推送進(jìn)行詳盡介紹,需要的朋友可以參考下

前言

本文小新為大家?guī)?Sentinel規(guī)則持久化 相關(guān)知識,具體內(nèi)容包括, Sentinel規(guī)則推送三種模式 介紹,包括: 原始模式 , 拉模式 , 推模式 ,并對 基于Nacos配置中心控制臺實(shí)現(xiàn)推送 進(jìn)行詳盡介紹~

Sentinel規(guī)則的推送有下面三種模式:

推送模式說明優(yōu)點(diǎn)缺點(diǎn)
原始模式API 將規(guī)則推送至客戶端并直接更新到內(nèi)存中,擴(kuò)展寫數(shù)據(jù)源(WritableDataSource)簡單,無任何依賴不保證一致性;規(guī)則保存在內(nèi)存中,重啟即消失。嚴(yán)重不建議用于生產(chǎn)環(huán)境
Pull 模式擴(kuò)展寫數(shù)據(jù)源(WritableDataSource), 客戶端主動向某個(gè)規(guī)則管理中心定期輪詢拉取規(guī)則,這個(gè)規(guī)則中心可以是 RDBMS、文件 等簡單,無任何依賴;規(guī)則持久化不保證一致性;實(shí)時(shí)性不保證,拉取過于頻繁也可能會有性能問題。
Push 模式擴(kuò)展讀數(shù)據(jù)源(ReadableDataSource),規(guī)則中心統(tǒng)一推送,客戶端通過注冊監(jiān)聽器的方式時(shí)刻監(jiān)聽變化,比如使用 Nacos,Zookeeper 等配置中心。這種方式有更好的實(shí)時(shí)性和一致性保證。生產(chǎn)環(huán)境下一般采用 push 模式的數(shù)據(jù)源。規(guī)則持久化;一致性;快速引入第三方依賴

一、原始模式

如果不做任何修改,Dashboard 的推送規(guī)則方式是通過 API 將規(guī)則推送至客戶端并直接更 新到內(nèi)存中:

在這里插入圖片描述

這種做法的好處是簡單,無依賴;壞處是應(yīng)用重啟規(guī)則就會消失,僅用于簡單測試,不能 用于生產(chǎn)環(huán)境。

二、拉模式

pull 模式的數(shù)據(jù)源(如本地文件、RDBMS 等)一般是可寫入的。使用時(shí)需要在客戶端注冊數(shù)據(jù)源:將對應(yīng)的讀數(shù)據(jù)源注冊至對應(yīng)的 RuleManager,將寫數(shù)據(jù)源注冊至 transport 的 WritableDataSourceRegistry 中。

三、推模式

生產(chǎn)環(huán)境下一般更常用的是 push 模式的數(shù)據(jù)源。對于 push 模式的數(shù)據(jù)源,如遠(yuǎn)程配置中心 (ZooKeeper, Nacos, Apollo等等),推送的操作不應(yīng)由 Sentinel 客戶端進(jìn)行,而應(yīng)該經(jīng)控 制臺統(tǒng)一進(jìn)行管理,直接進(jìn)行推送,數(shù)據(jù)源僅負(fù)責(zé)獲取配置中心推送的配置并更新到本 地。

因此推送規(guī)則正確做法應(yīng)該是: 配置中心控制臺/Sentinel 控制臺配置中心Sentinel 數(shù)據(jù)源Sentinel

而不是經(jīng) Sentinel 數(shù)據(jù)源推送至配置中心。這樣的流程就非常清晰了。

基于Nacos配置中心控制臺實(shí)現(xiàn)推送:

官方demo: sentinel­demo­nacos­datasource

(1)引入依賴

<dependency>
  <groupId>com.alibaba.csp</groupId>
  <artifactId>sentinel‐datasource‐nacos</artifactId>
</dependency>

(2)nacos配置中心中配置流控規(guī)則

[
  {
    "resource": "TestResource",
    "controlBehavior": 0,
    "count": 10.0,
    "grade": 1,
    "limitApp": "default",
    "strategy": 0
  }
]

在這里插入圖片描述

(3)application.yml中進(jìn)行配置

spring:
  application:
    name: mall‐user‐sentinel‐demo
    cloud:
      nacos:
        discovery:
          server‐addr: 127.0.0.1:8848
      sentinel:
        transport:
          # 添加sentinel的控制臺地址
          dashboard: 127.0.0.1:8080
          # 指定應(yīng)用與Sentinel控制臺交互的端口,應(yīng)用本地會起一個(gè)該端口占用的HttpServer
          port: 8719
        datasource:
          ds1:
            nacos:
              server‐addr: 127.0.0.1:8848
              dataId: ${spring.application.name}
              groupId: DEFAULT_GROUP
              data‐type: json
              rule‐type: flow

(4)nacos配置中心中添加

[
  {
    "resource": "userinfo",
    "limitApp": "default",
    "grade": 1,
    "count": 1,
    "strategy": 0,
    "controlBehavior": 0,
    "clusterMode": false
  }
]

在這里插入圖片描述

引入依賴:

<!‐‐sentinel持久化 采用 Nacos 作為規(guī)則配置數(shù)據(jù)源‐‐>
<dependency>
  <groupId>com.alibaba.csp</groupId>
  <artifactId>sentinel‐datasource‐nacos</artifactId>
</dependency>

增加application.yml配置:

server:
  port: 8806
spring:
  application:
    name: mall‐user‐sentinel‐rule‐push‐demo #微服務(wù)名稱
  #配置nacos注冊中心地址
  cloud:
    nacos:
      discovery:
        server‐addr: 127.0.0.1:8848
    sentinel:
      transport:
        # 添加sentinel的控制臺地址
        dashboard: 127.0.0.1:8080
        # 指定應(yīng)用與Sentinel控制臺交互的端口,應(yīng)用本地會起一個(gè)該端口占用的HttpServer
        #port: 8719
        datasource:
          # ds1: #名稱自定義,唯一
          # nacos:
          # server‐addr: 127.0.0.1:8848
          # dataId: ${spring.application.name}
          # groupId: DEFAULT_GROUP
          # data‐type: json
          # rule‐type: flow
        flow‐rules:
          nacos:
            server‐addr: 127.0.0.1:8848
            dataId: ${spring.application.name}‐flow‐rules
            groupId: SENTINEL_GROUP # 注意groupId對應(yīng)Sentinel Dashboard中的定義
            data‐type: json
            rule‐type: flow
        degrade‐rules:
          nacos:
            server‐addr: 127.0.0.1:8848
            dataId: ${spring.application.name}‐degrade‐rules
            groupId: SENTINEL_GROUP
            data‐type: json
            rule‐type: degrade
        param‐flow‐rules:
          nacos:
            server‐addr: 127.0.0.1:8848
            dataId: ${spring.application.name}‐param‐flow‐rules
            groupId: SENTINEL_GROUP
            data‐type: json
            rule‐type: param‐flow
        authority‐rules:
          nacos:
            server‐addr: 127.0.0.1:8848
            dataId: ${spring.application.name}‐authority‐rules
            groupId: SENTINEL_GROUP
            data‐type: json
            rule‐type: authority
        system‐rules:
          nacos:
            server‐addr: 127.0.0.1:8848
            dataId: ${spring.application.name}‐system‐rules
            groupId: SENTINEL_GROUP
            data‐type: json
            rule‐type: system

以流控規(guī)則測試,當(dāng)在sentinel dashboard配置了流控規(guī)則,會在nacos配置中心生成對應(yīng) 的配置。

在這里插入圖片描述

到此這篇關(guān)于Spring中的Sentinel規(guī)則持久化解析的文章就介紹到這了,更多相關(guān)Sentinel規(guī)則持久化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot使用異步線程池實(shí)現(xiàn)生產(chǎn)環(huán)境批量數(shù)據(jù)推送

    SpringBoot使用異步線程池實(shí)現(xiàn)生產(chǎn)環(huán)境批量數(shù)據(jù)推送

    本文主要介紹了SpringBoot使用異步線程池實(shí)現(xiàn)生產(chǎn)環(huán)境批量數(shù)據(jù)推送,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • Java中BigDecimal的基本運(yùn)算(詳解)

    Java中BigDecimal的基本運(yùn)算(詳解)

    下面小編就為大家?guī)硪黄狫ava中BigDecimal的基本運(yùn)算(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • spring源碼學(xué)習(xí)之bean的初始化以及循環(huán)引用

    spring源碼學(xué)習(xí)之bean的初始化以及循環(huán)引用

    這篇文章主要給大家介紹了關(guān)于spring源碼學(xué)習(xí)之bean的初始化以及循環(huán)引用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Java使用split分割無效獲取不到預(yù)期效果的解決辦法

    Java使用split分割無效獲取不到預(yù)期效果的解決辦法

    這篇文章主要給大家介紹了關(guān)于Java使用split分割無效獲取不到預(yù)期效果的解決辦法,java的String類中有個(gè)split方法,這個(gè)是我們經(jīng)常使用到的,需要的朋友可以參考下
    2023-08-08
  • java對象初始化代碼詳解

    java對象初始化代碼詳解

    這篇文章主要介紹了java對象初始化代碼詳解,涉及實(shí)例變量的初始化,類變量的初始化等相關(guān)介紹幾代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Java如何判斷字符串是否為空或者null問題

    Java如何判斷字符串是否為空或者null問題

    這篇文章主要介紹了Java如何判斷字符串是否為空或者null問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • 使用GSON庫轉(zhuǎn)換Java對象為JSON對象的進(jìn)階實(shí)例詳解

    使用GSON庫轉(zhuǎn)換Java對象為JSON對象的進(jìn)階實(shí)例詳解

    這篇文章主要介紹了使用GSON庫轉(zhuǎn)換Java對象為JSON對象的進(jìn)階實(shí)例詳解,包括注冊TypeAdapter及處理Enum類型等實(shí)際運(yùn)用中可能遇到的一些復(fù)雜問題,需要的朋友可以參考下
    2016-06-06
  • JSON字符串轉(zhuǎn)成java的Map對象詳細(xì)步驟

    JSON字符串轉(zhuǎn)成java的Map對象詳細(xì)步驟

    這篇文章主要介紹了如何將JSON字符串轉(zhuǎn)換為Java對象的步驟,包括定義Element類、使用Jackson庫解析JSON和添加依賴,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • Java內(nèi)部類應(yīng)用之靜態(tài)內(nèi)部類應(yīng)用示例

    Java內(nèi)部類應(yīng)用之靜態(tài)內(nèi)部類應(yīng)用示例

    這篇文章主要介紹了Java內(nèi)部類應(yīng)用之靜態(tài)內(nèi)部類應(yīng)用,結(jié)合實(shí)例形式分析了Java靜態(tài)內(nèi)部類的原理、功能、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-09-09
  • java中判斷String類型為空和null的幾種方法

    java中判斷String類型為空和null的幾種方法

    判斷一個(gè)字符串是否為空或者為null是一個(gè)常見的操作,本文主要介紹了java中判斷String類型為空和null的幾種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06

最新評論

九龙县| 商城县| 贺兰县| 清河县| 开平市| 成武县| 北流市| 察雅县| 双峰县| 营口市| 五峰| 合川市| 化州市| 安庆市| 搜索| 康定县| 和林格尔县| 红桥区| 江津市| 方山县| 惠州市| 龙南县| 略阳县| 台安县| 奉节县| 容城县| 怀远县| 来宾市| 凤翔县| 准格尔旗| 拉萨市| 东安县| 台北市| 九台市| 上蔡县| 延安市| 武宁县| 德保县| 昂仁县| 建昌县| 老河口市|