這篇文章主要講解了“如何理解Spring Cloud alibaba網(wǎng)關(guān)”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何理解Spring Cloud alibaba網(wǎng)關(guān)”吧!
江華網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司于2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
spring cloud alibaba 集成了 他內(nèi)部開源的 Sentinel 熔斷限流框架
官方網(wǎng)址 隨著微服務的流行,服務和服務之間的穩(wěn)定性變得越來越重要。Sentinel 以流量為切入點,從流量控制、熔斷降級、系統(tǒng)負載保護等多個維度保護服務的穩(wěn)定性。
豐富的應用場景:Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺(即突發(fā)流量控制在系統(tǒng)容量可以承受的范圍)、消息削峰填谷、集群流量控制、實時熔斷下游不可用應用等。 完備的實時監(jiān)控:Sentinel 同時提供實時的監(jiān)控功能。您可以在控制臺中看到接入應用的單臺機器秒級數(shù)據(jù),甚至 500 臺以下規(guī)模的集群的匯總運行情況。
廣泛的開源生態(tài):Sentinel 提供開箱即用的與其它開源框架/庫的整合模塊,例如與 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相應的依賴并進行簡單的配置即可快速地接入 Sentinel。
完善的 SPI 擴展點:Sentinel 提供簡單易用、完善的 SPI 擴展接口。您可以通過實現(xiàn)擴展接口來快速地定制邏輯。例如定制規(guī)則管理、適配動態(tài)數(shù)據(jù)源等。
Sentinel 的主要特性:
Sentinel 的開源生態(tài):
介紹一下 如果搭建。本次并不會一點點延伸更深層次的地方。只教大家快速使用。等spring cloud gateway更新完成之后會帶大家更深層次的挖掘 Sentinel 的功能。
直接下載官網(wǎng)已經(jīng)打好的jar包
release地址 https://github.com/alibaba/Sentinel/releases
源碼編譯 git clone https://github.com/alibaba/Sentinel.git
然后進入目錄執(zhí)行 mvn clean package
命令啟動
java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar
如果需要docker 的話 可編寫 docker Dockerfile
# 基于哪個鏡像 FROM java:8 # 拷貝文件到容器,也可以直接寫成ADD microservice-discovery-eureka-0.0.1-SNAPSHOT.jar /app.jar ADD ./*.jar app.jar RUN mkdir -p /var/logs/Sentinel RUN mkdir -p /var/logs/jvm RUN mkdir -p /var/logs/dump RUN bash -c 'touch /app.jar' # 開放8080端口 EXPOSE 8080 # 配置容器啟動后執(zhí)行的命令 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-XX:-PrintGCDetails","-XX:-PrintGCTimeStamps","-XX:-HeapDumpOnOutOfMemoryError","-XX:HeapDumpPath=/var/logs/dump/oom_dump.dump","-Xloggc:/var/logs/jvm/app.log","-Dfile.encoding=UTF8","-Duser.timezone=GMT+08","-XX:CMSInitiatingOccupancyFraction=90","-XX:MaxGCPauseMillis=200","-XX:StringTableSize=20000","-XX:+UseG1GC","-Xss256k","-Xmx1024m","-Xms512m","-jar","/app.jar"]
執(zhí)行 docker 鏡像制作
docker build --tag sentinel:1.0 .
--tag projectname:version 注意寫法
然后docker run 啟動鏡像。這里作者使用的docker鏡像方式啟動 docker run -d -p9088:8080 304342c105e9
然后控制臺輸入 http://localhost:9088/ 用戶名密碼 sentinel/sentinel
登錄參數(shù)配置:
從 Sentinel 1.6.0 起,Sentinel 控制臺引入基本的登錄功能,默認用戶名和密碼都是 sentinel。可以參考 鑒權(quán)模塊文檔 配置用戶名和密碼。
Dsentinel.dashboard.auth.username=sentinel 用于指定控制臺的登錄用戶名為 sentinel;
Dsentinel.dashboard.auth.password=123456 用于指定控制臺的登錄密碼為 123456;如果省略這兩個參數(shù),默認用戶和密碼均為 sentinel;
Dserver.servlet.session.timeout=7200 用于指定 Spring Boot 服務端 session 的過期時間,如 7200 表示 7200 秒;60m 表示 60 分鐘,默認為 30 分鐘;
輸入密碼登錄
服務已啟動我們在整合 網(wǎng)關(guān)zuul 服務于sentinel的整合。
pom 添加
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>
操作添加倆個文件在resources下面
api.json
[ { "apiName": "cloud-discovery-server", "predicateItems": [ { "pattern": "/server/**" }, { "pattern": "/server/server/**", "matchStrategy": 1 }, { "items": [ { "pattern": "/server/**" } ] } ] }, { "apiName": "cloud-discovery-client", "predicateItems": [ { "pattern": "/client/**" } ] } ]
啟動服務并進行之前的一次訪問
gateway.json
[ { "resource": "cloud-discovery-server", "count": 1 }, { "resource": "cloud-discovery-client", "count": 10, "intervalSec": 2, "controlBehavior": 1, "maxQueueingTimeoutMs": 200, "paramItem": { "parseStrategy": 3, "fieldName": "test" } } ]
多次請求 curl http://localhost:9083/server/server/hello?name=tom
然后在控制臺
api.json 對應的是控制臺 api 管理
用戶自定義的 API 定義分組,可以看做是一些 URL 匹配的組合。比如我們可以定義一個 API 叫 my_api,請求 path 模式為 /foo/** 和 /baz/** 的都歸到 my_api 這個 API 分組下面。限流的時候可以針對這個自定義的 API 分組維度進行限流。
gateway 對應的是控制臺流控管理
resource:資源名稱,可以是網(wǎng)關(guān)中的 route 名稱或者用戶自定義的API 分組名稱。
resourceMode:規(guī)則是針對 API Gateway 的route(RESOURCE_MODE_ROUTE_ID)還是用戶在 Sentinel 中定義的API 分組(RESOURCE_MODE_CUSTOM_API_NAME),默認是route。
grade:限流指標維度,同限流規(guī)則的grade 字段。
count:限流閾值
intervalSec:統(tǒng)計時間窗口,單位是秒,默認是1 秒(目前僅對參數(shù)限流生效)。
controlBehavior:流量整形的控制效果,同限流規(guī)則的 controlBehavior 字段,目前支持快速失敗和勻速排隊兩種模式,默認是快速失敗。
burst:應對突發(fā)請求時額外允許的請求數(shù)目(目前僅對參數(shù)限流生效)。
maxQueueingTimeoutMs:勻速排隊模式下的最長排隊時間,單位是毫秒,僅在勻速排隊模式下生效。
paramItem:參數(shù)限流配置。若不提供,則代表不針對參數(shù)進行限流,該網(wǎng)關(guān)規(guī)則將會被轉(zhuǎn)換成普通流控規(guī)則;否則會轉(zhuǎn)換成熱點規(guī)則。其中的字段:
parseStrategy:從請求中提取參數(shù)的策略,目前支持提取來源 IP(PARAM_PARSE_STRATEGY_CLIENT_IP)、
Host(PARAM_PARSE_STRATEGY_HOST)、任意 Header(PARAM_PARSE_STRATEGY_HEADER)和任意 URL 參數(shù)(PARAM_PARSE_STRATEGY_URL_PARAM)四種模式。
fieldName:若提取策略選擇 Header 模式或 URL 參數(shù)模式,則需要指定對應的 header 名稱或 URL 參數(shù)名稱。
pattern 和 matchStrategy:為后續(xù)參數(shù)匹配特性預留,目前未實現(xiàn)。
其實在控制臺上 可以看到請求鏈路、還有流量規(guī)則。編輯的位置,都能匹配這是各種的組合配置。因為Sentinel 是阿里巴巴開源的流控框架。非常簡單實用。文檔也非常全面,強烈推薦能自己去官網(wǎng)學習這些資料。我這里只是做一個簡單的整合。
Sentinel 以流量為切入點,從流量控制、熔斷降級、系統(tǒng)負載保護等多個維度保護服務的穩(wěn)定性。
感謝各位的閱讀,以上就是“如何理解Spring Cloud alibaba網(wǎng)關(guān)”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對如何理解Spring Cloud alibaba網(wǎng)關(guān)這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
分享標題:如何理解SpringCloudalibaba網(wǎng)關(guān)
標題來源:http://vcdvsql.cn/article6/pegpig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、品牌網(wǎng)站建設(shè)、手機網(wǎng)站建設(shè)、搜索引擎優(yōu)化、做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)