日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

apollo持久化sentinel_Spring Cloud Alibaba基础教程:Sentinel使用Apollo存储规则

發布時間:2023/12/9 javascript 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 apollo持久化sentinel_Spring Cloud Alibaba基础教程:Sentinel使用Apollo存储规则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇我們介紹了如何通過Nacos的配置功能來存儲限流規則。Apollo是國內用戶非常多的配置中心,所以,今天我們繼續說說Spring Cloud Alibaba Sentinel中如何將流控規則存儲在Apollo中。

使用Apollo存儲限流規則

Sentinel自身就支持了多種不同的數據源來持久化規則配置,目前包括以下幾種方式:

文件配置

ZooKeeper配置

本文我們就來一起動手嘗試一下,如何使用Apollo來存儲限流規則。

準備工作

下面我們將同時使用到Apollo和Sentinel Dashboard,所以可以先把Apollo和Sentinel Dashboard啟動起來。

如果還沒入門Sentinel Dashboard可以通過文末的系列目錄先學習之前的內容。Apollo的話相對復雜一些,這里不做詳細介紹了,如果還沒有接觸過Apollo的讀者可以查看其官方文檔進一步學習。

應用配置

第一步:在Spring Cloud應用的pom.xml中引入Spring Cloud Alibaba的Sentinel模塊和Apollo存儲擴展:

org.springframework.boot

spring-boot-starter-web

org.springframework.cloud

spring-cloud-starter-alibaba-sentinel

com.alibaba.csp

sentinel-datasource-apollo

1.4.0

復制代碼

第二步:在Spring Cloud應用中配置的服務信息,在resource目錄下,創建apollo-env.properties文件,內容樣例:

local.meta=http://192.168.0.201:8080

dev.meta=http://192.168.0.202:8080

復制代碼

這里需要了解Apollo對多環境的配置,這里設置的是每個環境不同的配置服務地址,讀者需要根據自己的實際情況修改。

第三步:在Spring Cloud應用中添加配置信息:

spring.application.name=sentinel-datasource-apollo

server.port=8002

# apollo config

app.id=${spring.application.name}

# sentinel dashboard

spring.cloud.sentinel.transport.dashboard=localhost:8080

# sentinel datasource apollo

spring.cloud.sentinel.datasource.ds.apollo.namespaceName=application

spring.cloud.sentinel.datasource.ds.apollo.flowRulesKey=sentinel.flowRules

復制代碼app.id:Apollo中的創建的項目名稱,這里采用spring.application.name參數的引用,從而達到服務名與配置項目名一致的效果

spring.cloud.sentinel.transport.dashboard:sentinel dashboard的訪問地址,根據上面準備工作中啟動的實例配置

spring.cloud.sentinel.datasource.ds.apollo.namespaceName:Apollo的空間名

spring.cloud.sentinel.datasource.ds.apollo.flowRulesKey:配置規則的key名稱

關于Apollo相關配置的對應關系可見下圖所示:

第四步:創建應用主類,并提供一個rest接口,比如:

@EnableApolloConfig

@SpringBootApplication

public class TestApplication{

public static void main(String[] args){

SpringApplication.run(TestApplication.class, args);

}

@Slf4j

@RestController

static class TestController{

@GetMapping("/hello")

public String hello(){

return "didispace.com";

}

}

}

復制代碼

其中@EnableApolloConfig注解是開啟Apollo的配置加載功能。

第五步:Apollo中配置限流規則,具體可見第三步的截圖中的樣子。其中,key值的內容是下面的json

[

{

"resource": "/hello",

"limitApp": "default",

"grade": 1,

"count": 5,

"strategy": 0,

"controlBehavior": 0,

"clusterMode": false

}

]

復制代碼

可以看到上面配置規則是一個數組類型,數組中的每個對象是針對每一個保護資源的配置對象,每個對象中的屬性解釋如下:

resource:資源名,即限流規則的作用對象

limitApp:流控針對的調用來源,若為 default 則不區分調用來源

grade:限流閾值類型(QPS 或并發線程數);0代表根據并發數量來限流,1代表根據QPS來進行流量控制

count:限流閾值

strategy:調用關系限流策略

controlBehavior:流量控制效果(直接拒絕、Warm Up、勻速排隊)

clusterMode:是否為集群模式

這里我們只做簡單的配置解釋,以便于理解這里的配置作用。實際上這里還有非常多可配置選項和規則,更復雜的配置后面我們單獨開一篇來深入學習。

第六步:啟動應用。如果一些順利,可以看到類似下面的日志,代表已經成功從Nacos加載了一條限流規則:

2019-04-18 23:56:11.278 INFO 29149 --- [ main] o.s.c.a.s.c.SentinelDataSourceHandler : [Sentinel Starter] DataSource ds-sentinel-apollo-datasource start to loadConfig

2019-04-18 23:56:11.279 INFO 29149 --- [ main] o.s.c.a.s.c.SentinelDataSourceHandler : [Sentinel Starter] DataSource ds-sentinel-apollo-datasource load 1 FlowRule

復制代碼

通過postman或者curl訪問幾下localhost:8002/hello接口:

$ curl localhost:8002/hello

didispace.com

復制代碼

此時,在Sentinel Dashboard中就可以看到當前我們啟動的sentinel-datasource-apollo服務。點擊左側菜單中的流控規則,可以看到已經存在一條記錄了,這條記錄就是上面我們在Apollo中配置的限流規則。

深入思考

在使用Apollo存儲規則配置的時候與Nacos存儲一樣,對于Sentinel控制臺這些數據是只讀的,也就是說:

Sentinel控制臺中修改規則:僅存在于服務的內存中,不會修改Apollo中的配置值,重啟后恢復原來的值。

Nacos控制臺中修改規則:服務的內存中規則會更新,Apollo中持久化規則也會更新,重啟后依然保持。

代碼示例

本文介紹內容的客戶端代碼,示例讀者可以通過查看下面倉庫中的alibaba-sentinel-datasource-apollo項目:

如果您對這些感興趣,歡迎star、follow、收藏、轉發給予支持!

參考資料

下面是Sentinel的倉庫地址與官方文檔,讀者也可以自己查閱文檔學習:

系列回顧

專題推薦

總結

以上是生活随笔為你收集整理的apollo持久化sentinel_Spring Cloud Alibaba基础教程:Sentinel使用Apollo存储规则的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。