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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Sentinel(二十三)之使用Apollo存储规则

發(fā)布時(shí)間:2023/12/3 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sentinel(二十三)之使用Apollo存储规则 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載自??Spring Cloud Alibaba基礎(chǔ)教程:Sentinel使用Apollo存儲規(guī)則

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

使用Apollo存儲限流規(guī)則

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

  • 文件配置
  • Nacos配置
  • ZooKeeper配置
  • Apollo配置

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

準(zhǔn)備工作

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

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

應(yīng)用配置

第一步:在Spring Cloud應(yīng)用的pom.xml中引入Spring Cloud Alibaba的Sentinel模塊和Apollo存儲擴(kuò)展:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-apollo</artifactId><version>1.4.0</version></dependency> </dependencies>

第二步:在Spring Cloud應(yīng)用中配置的服務(wù)信息,在resource目錄下,創(chuàng)建apollo-env.properties文件,內(nèi)容樣例:

local.meta=http://192.168.0.201:8080 dev.meta=http://192.168.0.202:8080

這里需要了解Apollo對多環(huán)境的配置,這里設(shè)置的是每個(gè)環(huán)境不同的配置服務(wù)地址,讀者需要根據(jù)自己的實(shí)際情況修改。

第三步:在Spring Cloud應(yīng)用中添加配置信息:

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中的創(chuàng)建的項(xiàng)目名稱,這里采用spring.application.name參數(shù)的引用,從而達(dá)到服務(wù)名與配置項(xiàng)目名一致的效果
  • spring.cloud.sentinel.transport.dashboard:sentinel dashboard的訪問地址,根據(jù)上面準(zhǔn)備工作中啟動的實(shí)例配置
  • spring.cloud.sentinel.datasource.ds.apollo.namespaceName:Apollo的空間名
  • spring.cloud.sentinel.datasource.ds.apollo.flowRulesKey:配置規(guī)則的key名稱

關(guān)于Apollo相關(guān)配置的對應(yīng)關(guān)系可見下圖所示:

第四步:創(chuàng)建應(yīng)用主類,并提供一個(gè)rest接口,比如:

@EnableApolloConfig @SpringBootApplication public class TestApplication {public static void main(String[] args) {SpringApplication.run(TestApplication.class, args);}@Slf4j@RestControllerstatic class TestController {@GetMapping("/hello")public String hello() {return "didispace.com";}}}

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

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

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

可以看到上面配置規(guī)則是一個(gè)數(shù)組類型,數(shù)組中的每個(gè)對象是針對每一個(gè)保護(hù)資源的配置對象,每個(gè)對象中的屬性解釋如下:

  • resource:資源名,即限流規(guī)則的作用對象
  • limitApp:流控針對的調(diào)用來源,若為 default 則不區(qū)分調(diào)用來源
  • grade:限流閾值類型(QPS 或并發(fā)線程數(shù));0代表根據(jù)并發(fā)數(shù)量來限流,1代表根據(jù)QPS來進(jìn)行流量控制
  • count:限流閾值
  • strategy:調(diào)用關(guān)系限流策略
  • controlBehavior:流量控制效果(直接拒絕、Warm Up、勻速排隊(duì))
  • clusterMode:是否為集群模式

這里我們只做簡單的配置解釋,以便于理解這里的配置作用。實(shí)際上這里還有非常多可配置選項(xiàng)和規(guī)則,更復(fù)雜的配置后面我們單獨(dú)開一篇來深入學(xué)習(xí)。

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

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

此時(shí),在Sentinel Dashboard中就可以看到當(dāng)前我們啟動的sentinel-datasource-apollo服務(wù)。點(diǎn)擊左側(cè)菜單中的流控規(guī)則,可以看到已經(jīng)存在一條記錄了,這條記錄就是上面我們在Apollo中配置的限流規(guī)則。

深入思考

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

  • Sentinel控制臺中修改規(guī)則:僅存在于服務(wù)的內(nèi)存中,不會修改Apollo中的配置值,重啟后恢復(fù)原來的值。
  • Nacos控制臺中修改規(guī)則:服務(wù)的內(nèi)存中規(guī)則會更新,Apollo中持久化規(guī)則也會更新,重啟后依然保持。

代碼示例

本文介紹內(nèi)容的客戶端代碼,示例讀者可以通過查看下面?zhèn)}庫中的alibaba-sentinel-datasource-apollo項(xiàng)目:

  • Github:https://github.com/dyc87112/SpringCloud-Learning/
  • Gitee:https://gitee.com/didispace/SpringCloud-Learning/

如果您對這些感興趣,歡迎star、follow、收藏、轉(zhuǎn)發(fā)給予支持!

參考資料

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

  • Github
  • Sentinel官方文檔:動態(tài)規(guī)則
  • Spring Cloud Alibaba Sentinel文檔

總結(jié)

以上是生活随笔為你收集整理的Sentinel(二十三)之使用Apollo存储规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。