色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

SpringBoot2.0+阿里巴巴Sentinel動態(tài)限流實(shí)戰(zhàn)(附源碼)

瀏覽:43日期:2023-04-08 18:58:13

Sentinel 是什么?

隨著微服務(wù)的流行,服務(wù)和服務(wù)之間的穩(wěn)定性變得越來越重要。Sentinel 以流量為切入點(diǎn),從流量控制、熔斷降級、系統(tǒng)負(fù)載保護(hù)等多個維度保護(hù)服務(wù)的穩(wěn)定性。

Sentinel 具有以下特征:

豐富的應(yīng)用場景:Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺(即突發(fā)流量控制在系統(tǒng)容量可以承受的范圍)、消息削峰填谷、集群流量控制、實(shí)時熔斷下游不可用應(yīng)用等。 完備的實(shí)時監(jiān)控:Sentinel 同時提供實(shí)時的監(jiān)控功能。您可以在控制臺中看到接入應(yīng)用的單臺機(jī)器秒級數(shù)據(jù),甚至 500 臺以下規(guī)模的集群的匯總運(yùn)行情況。 廣泛的開源生態(tài):Sentinel 提供開箱即用的與其它開源框架/庫的整合模塊,例如與 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相應(yīng)的依賴并進(jìn)行簡單的配置即可快速地接入 Sentinel。 完善的 SPI 擴(kuò)展點(diǎn):Sentinel 提供簡單易用、完善的 SPI 擴(kuò)展接口。您可以通過實(shí)現(xiàn)擴(kuò)展接口來快速地定制邏輯。例如定制規(guī)則管理、適配動態(tài)數(shù)據(jù)源等。

Sentinel 的主要特性:

SpringBoot2.0+阿里巴巴Sentinel動態(tài)限流實(shí)戰(zhàn)(附源碼)

Sentinel 的開源生態(tài):

SpringBoot2.0+阿里巴巴Sentinel動態(tài)限流實(shí)戰(zhàn)(附源碼)

Sentinel 分為兩個部分:

核心庫(Java 客戶端)不依賴任何框架/庫,能夠運(yùn)行于所有 Java 運(yùn)行時環(huán)境,同時對 Dubbo / Spring Cloud 等框架也有較好的支持。 控制臺(Dashboard)基于 Spring Boot 開發(fā),打包后可以直接運(yùn)行,不需要額外的 Tomcat 等應(yīng)用容器。

控制臺配置

Sentinel 控制臺最少應(yīng)該包含如下功能:

查看機(jī)器列表以及健康情況:收集 Sentinel 客戶端發(fā)送的心跳包,用于判斷機(jī)器是否在線。 監(jiān)控 (單機(jī)和集群聚合):通過 Sentinel 客戶端暴露的監(jiān)控 API,定期拉取并且聚合應(yīng)用監(jiān)控信息,最終可以實(shí)現(xiàn)秒級的實(shí)時監(jiān)控。 規(guī)則管理和推送:統(tǒng)一管理推送規(guī)則。 鑒權(quán):生產(chǎn)環(huán)境中鑒權(quán)非常重要。這里每個開發(fā)者需要根據(jù)自己的實(shí)際情況進(jìn)行定制。

可以直接從[ release 頁面](https://github.com/alibaba/Sentinel/releases ' release 頁面') 下載最新版本的控制臺 jar 包,啟動 Sentinel 控制臺需要 JDK 版本為 1.8 及以上版本。。

啟動腳本 sentinel.sh:

#!/bin/bashjava -Dsentinel.dashboard.auth.username=admin -Dsentinel.dashboard.auth.password=admin -Dserver.port=8084 -Dcsp.sentinel.dashboard.server=localhost:8084 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.6.3.jar &

用戶可以通過如下參數(shù)進(jìn)行配置:

-Dsentinel.dashboard.auth.username=admin 用于指定控制臺的登錄用戶名為 admin; -Dsentinel.dashboard.auth.password=admin 用于指定控制臺的登錄密碼為 admin;如果省略這兩個參數(shù),默認(rèn)用戶和密碼均為 sentinel; -Dserver.servlet.session.timeout=7200 用于指定 Spring Boot 服務(wù)端 session 的過期時間,如 7200 表示 7200 秒;60m 表示 60 分鐘,默認(rèn)為 30 分鐘;

SpringBoot2.0+阿里巴巴Sentinel動態(tài)限流實(shí)戰(zhàn)(附源碼)

客戶端配置

pom.xml 引入以下依賴:

<!-- https://blog.52itstyle.vip --><parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.5.RELEASE</version> <relativePath/></parent><dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency></dependencies><dependencyManagement> <!--注意跟 SpringBoot 保持一致 2.1.x for Spring Boot 2.1.x--> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies></dependencyManagement>

配置文件:

# 應(yīng)用名稱 https://blog.52itstyle.vipspring.application.name=blogspring.cloud.sentinel.transport.port=8720# 測試請?zhí)鎿Q為自己的地址spring.cloud.sentinel.transport.dashboard=116.190.247.112:8084

這里的 spring.cloud.sentinel.transport.port端口配置會在應(yīng)用對應(yīng)的機(jī)器上啟動一個 Http Server,該 Server 會與 Sentinel 控制臺做交互。比如 Sentinel 控制臺添加了1個限流規(guī)則,會把規(guī)則數(shù)據(jù) push 給這個 Http Server 接收,Http Server 再將規(guī)則注冊到 Sentinel 中。

代碼配置:

/** * 博文 https://blog.52itstyle.vip */@RequestMapping('{id}.shtml')@SentinelResource('blogView')public String page(@PathVariable('id') Long id, ModelMap model) { try{ Blog blog = blogService.getById(id); String key = 'blog_'+id; Long views = redisUtil.size(key); blog.setViews(views+blog.getViews()); model.addAttribute('blog',blog); } catch (Throwable e) { return 'error/404'; } return 'article';}

@SentinelResource 注解用來標(biāo)識資源是否被限流、降級。上述例子上該注解的屬性 ’blogView’ 表示資源名。

默認(rèn)情況,Sentinel 會攔截所有的 Controller 請求,這里標(biāo)識資源名,是因為所有的文章都會走這個請求,為了方便統(tǒng)計和流控,這里自定義資源標(biāo)識。

更多注解支持,請參考:Sentinel/wiki/注解支持。

訪問客戶端項目,隨便點(diǎn)擊幾個頁面,然后登錄 Sentinel 控制臺,如果看到以下界面,說明配置成功。

SpringBoot2.0+阿里巴巴Sentinel動態(tài)限流實(shí)戰(zhàn)(附源碼)

SpringBoot2.0+阿里巴巴Sentinel動態(tài)限流實(shí)戰(zhàn)(附源碼)

配置限流,搜索我們剛才配置的資源名稱,選擇流控功能。

SpringBoot2.0+阿里巴巴Sentinel動態(tài)限流實(shí)戰(zhàn)(附源碼)

SpringBoot2.0+阿里巴巴Sentinel動態(tài)限流實(shí)戰(zhàn)(附源碼)

輸入閾值參數(shù),為了測試方便,這里直接輸入2,連續(xù)刷新瀏覽器,如果后臺出現(xiàn)以下錯誤,并伴隨著前臺頁面無法正常顯示說明配置生效。

Caused by: com.alibaba.csp.sentinel.slots.block.flow.FlowException: null

當(dāng)然,Sentinel 流程功能不僅僅這么簡單,還支持集群模式,在終極版十萬博文中,我們可以為集群中的節(jié)點(diǎn),設(shè)置單機(jī)均分,也可以設(shè)置一個總體的閾值。

SpringBoot2.0+阿里巴巴Sentinel動態(tài)限流實(shí)戰(zhàn)(附源碼)

生產(chǎn)環(huán)境中使用

Sentinel 核心庫目前已可用于生產(chǎn)環(huán)境,目前除了阿里巴巴以外,也有多家企業(yè)在生產(chǎn)環(huán)境中使用它們。

規(guī)則管理及推送

原生版本的規(guī)則管理通過API 將規(guī)則推送至客戶端并直接更新到內(nèi)存中,并不能直接用于生產(chǎn)環(huán)境。

SpringBoot2.0+阿里巴巴Sentinel動態(tài)限流實(shí)戰(zhàn)(附源碼)

不過 Sentinel提供了擴(kuò)展讀數(shù)據(jù)源ReadableDataSource,規(guī)則中心統(tǒng)一推送,客戶端通過注冊監(jiān)聽器的方式時刻監(jiān)聽變化,比如使用 Nacos、Zookeeper 等配置中心。這種方式有更好的實(shí)時性和一致性保證。

SpringBoot2.0+阿里巴巴Sentinel動態(tài)限流實(shí)戰(zhàn)(附源碼)

監(jiān)控

Sentinel 會記錄資源訪問的秒級數(shù)據(jù)(若沒有訪問則不進(jìn)行記錄)并保存在本地日志中。Sentinel 控制臺可以通過 Sentinel 客戶端預(yù)留的 HTTP API 從秒級監(jiān)控日志中拉取監(jiān)控數(shù)據(jù),并進(jìn)行聚合。

目前 Sentinel 控制臺中監(jiān)控數(shù)據(jù)聚合后直接存在內(nèi)存中,未進(jìn)行持久化,且僅保留最近 5 分鐘的監(jiān)控數(shù)據(jù)。若需要監(jiān)控數(shù)據(jù)持久化的功能,可以自行擴(kuò)展實(shí)現(xiàn)。

SpringBoot2.0+阿里巴巴Sentinel動態(tài)限流實(shí)戰(zhàn)(附源碼)

注意事項

由于一開始沒有認(rèn)真讀文檔,把控制臺部署到了外網(wǎng),而客戶端在內(nèi)網(wǎng)啟動,導(dǎo)致客戶端無法被訪問到,實(shí)時鏈路和簇點(diǎn)鏈路數(shù)據(jù)無法正常顯示。

測試的小伙伴注意了,原始模式下,客戶端和控制臺必須相互被訪問到,客戶端會向控制臺定時發(fā)送心跳請求,控制臺會向客戶端推送規(guī)則、拉取流控數(shù)據(jù)并聚合。

源碼

https://gitee.com/52itstyle/spring-boot-blog

到此這篇關(guān)于SpringBoot2.0+阿里巴巴Sentinel動態(tài)限流實(shí)戰(zhàn)(附源碼)的文章就介紹到這了,更多相關(guān)SpringBoot2.0 Sentinel動態(tài)限流內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 国产丝袜美女一区二区三区 | 97在线视频精品 | 成人免费在线播放视频 | 国产一区私人高清影院 | 欧美国产成人在线 | 亚洲视频在线观看地址 | 日韩视频大全 | 日本一区二区高清不卡 | 日本一级毛片在线看 | 美女操男人 | 中文精品久久久久国产不卡 | 国产精品不卡无毒在线观看 | 亚洲精品成人一区二区www | 日韩啪 | 又黄又免费 | 国产国语对白一级毛片 | 欧美一级专区免费大片 | 国产在线观看网址在线视频 | 久色视频在线 | 直接在线观看的三级网址 | 免费黄网大全 | 99久女女精品视频在线观看 | 国产片91 | 国产欧美一区二区三区免费看 | 久草手机视频在线 | 黄网站免费在线 | 日韩专区亚洲精品欧美专区 | 在线观看一级毛片免费 | 国产年成美女网站视频免费看 | 91精品国产综合久久香蕉 | 黄色三级三级三级免费看 | 精品国产综合区久久久久久 | 久久视频这里只精品3国产 久久视频这里只有精品 | 毛片网站在线 | 亚洲在线观看免费视频 | 亚洲第一页视频 | 成人在线免费观看视频 | 国产一级成人毛片 | 自拍偷拍视频在线观看 | 欧美人牲囗毛片 | 日韩成人在线观看视频 |