Java中基于Nacos實(shí)現(xiàn)Sentinel規(guī)則持久化詳解
前言
Sentinel Dashboard中添加的規(guī)則數(shù)據(jù)存儲在內(nèi)存,微服務(wù)停掉規(guī)則數(shù)據(jù)就消失,在?產(chǎn)環(huán)境下不合適。我們可以將Sentinel規(guī)則數(shù)據(jù)持久化到Nacos配置中?,讓微服務(wù)從Nacos獲取規(guī)則數(shù)據(jù)。
構(gòu)建
依賴
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--sentinel 核心環(huán)境 依賴--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> <!-- Sentinel?持采? Nacos 作為規(guī)則配置數(shù)據(jù)源,引?該適配依賴 --> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> </dependency>
application.yml中配置Nacos數(shù)據(jù)源
server: port: 8100 spring: profiles: active: dev application: name: nacos-sentinel-8100 cloud: nacos: discovery: server-addr: 127.0.0.1:8848 # namespace + group 隔離環(huán)境 namespace: 86614fa3-f528-44e7-95e5-265cc51feb41 group: DEFAULT_GROUP sentinel: transport: dashboard: 127.0.0.1:8080 # sentinel dashboard/console地址 port: 8100 # sentinel會在該端?啟動http server,那么這樣 的話,控制臺定義的?些限流等規(guī)則才能發(fā)送傳遞過來, #如果 8100 端?被占?,那么會依次+1 datasource: # 此處的flow為?定義數(shù)據(jù)源名 flow: # 流控規(guī)則 nacos: server-addr: ${spring.cloud.nacos.discovery.server-addr} # namespace + data-id + group 定位資源配置文件 namespace: 86614fa3-f528-44e7-95e5-265cc51feb41 data-id: ${spring.application.name}-flow-rules groupId: DEFAULT_GROUP data-type: json rule-type: flow # 類型來?RuleType類 degrade: nacos: server-addr: ${spring.cloud.nacos.discovery.server-addr} namespace: 86614fa3-f528-44e7-95e5-265cc51feb41 data-id: ${spring.application.name}-degrade-rules groupId: DEFAULT_GROUP data-type: json rule-type: degrade # 類型來?RuleType類 management: endpoints: web: exposure: include: "*" # 暴露健康接口的細(xì)節(jié) endpoint: health: show-details: always
接口
@RestController @RequestMapping("/api") public class Test1Controller { @GetMapping("/test1") public String test1(String str) { return str +"test1 : GetMapping " + LocalDateTime.now(); } @GetMapping("/test2") public String test2(String str) { int i = 1/0; return str +"test2 : GetMapping " + LocalDateTime.now(); } @RequestMapping("/test3") public String test3(String str) { int i = 1/0; return str +"test3 : GetMapping " + LocalDateTime.now(); } }
nacos中添加配置限流和熔斷規(guī)則
屬性配置說明
流量配置
熔斷配置
在之前自定義流量限流和熔斷限流中可以知道,捕獲異常規(guī)則時候類是下面這些類。 FlowRule流量控制,DegradeRule熔斷規(guī)則。
我們重啟服務(wù)后可以看到/api/test1限流規(guī)則
/api/test2熔斷規(guī)則
注意
1)?個資源可以同時有多個限流規(guī)則和降級規(guī)則,所以配置集中是?個json數(shù)組。
2)Sentinel控制臺中修改規(guī)則,僅是內(nèi)存中?效,不會修改Nacos中的配置值,重啟后恢復(fù)原來的值; Nacos控制臺中修改規(guī)則,不僅內(nèi)存中?效,Nacos中持久化規(guī)則也?效,重啟后規(guī)則依然保持。
到此這篇關(guān)于Java中基于Nacos實(shí)現(xiàn)Sentinel規(guī)則持久化詳解的文章就介紹到這了,更多相關(guān)Nacos實(shí)現(xiàn)Sentinel規(guī)則持久化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot整合Redis使用@Cacheable和RedisTemplate
本文主要介紹了SpringBoot整合Redis使用@Cacheable和RedisTemplate,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07使用SpringBoot創(chuàng)建一個RESTful API的詳細(xì)步驟
使用 Java 的 Spring Boot 創(chuàng)建 RESTful API 可以滿足多種開發(fā)場景,它提供了快速開發(fā)、易于配置、可擴(kuò)展、可維護(hù)的優(yōu)點(diǎn),尤其適合現(xiàn)代軟件開發(fā)的需求,幫助你快速構(gòu)建出高性能的后端服務(wù),需要的朋友可以參考下2025-01-01Springboot @WebFilter無法注入其他Bean的示例問題
這篇文章主要介紹了Springboot @WebFilter無法注入其他Bean的示例問題,本文通過示例代碼給大家分享解決方法,需要的朋友可以參考下2021-09-09JMeter 實(shí)現(xiàn)Java請求步驟及原理詳解
這篇文章主要介紹了JMeter 實(shí)現(xiàn)Java請求步驟及原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03Java實(shí)現(xiàn)滑動驗(yàn)證碼的示例代碼
這篇文章主要為大家介紹了如何用Java語言實(shí)現(xiàn)滑動驗(yàn)證碼的生成,項(xiàng)目采用了springboot,maven等技術(shù),感興趣的小伙伴可以跟隨小編學(xué)習(xí)一下2022-02-02