javascript
6.Spring Cloud Alibaba教程:Sentinel流量防卫兵的介绍与基本使用
官網(wǎng)
https://sentinelguard.io/
服務(wù)雪崩
微服務(wù)中各個(gè)服務(wù)之間通過(guò)http/rpc互相調(diào)用,假設(shè)其中1個(gè)服務(wù)因?yàn)榫W(wǎng)絡(luò)或自身原因出現(xiàn)問(wèn)題,調(diào)用這個(gè)服務(wù)就會(huì)出現(xiàn)線程堵塞,此時(shí)若有大量請(qǐng)求出現(xiàn),線程資源會(huì)因?yàn)槎氯谋M,導(dǎo)致服務(wù)調(diào)用方癱瘓,最后引起其他服務(wù)也相繼癱瘓,這就是服務(wù)雪崩。
為了解決這個(gè)問(wèn)題,業(yè)界提出了熔斷器模型。阿里巴巴開(kāi)源的Sentinel,就實(shí)現(xiàn)了熔斷器模型。
Sentinel是什么
隨著微服務(wù)的流行,服務(wù)和服務(wù)之間的穩(wěn)定性變得越來(lái)越重要。Sentinel 以流量為切入點(diǎn),從流量控制、熔斷降級(jí)、系統(tǒng)負(fù)載保護(hù)等多個(gè)維度保護(hù)服務(wù)的穩(wěn)定性。
Sentinel 具有以下特征:
- 豐富的應(yīng)用場(chǎng)景: Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場(chǎng)景,例如秒殺(即突發(fā)流量控制在系統(tǒng)容量可以承受的范圍)、消息削峰填谷、集群流量控制、實(shí)時(shí)熔斷下游不可用應(yīng)用等。
- 完備的實(shí)時(shí)監(jiān)控: Sentinel 同時(shí)提供實(shí)時(shí)的監(jiān)控功能。您可以在控制臺(tái)中看到接入應(yīng)用的單臺(tái)機(jī)器秒級(jí)數(shù)據(jù),甚至 500 臺(tái)以下規(guī)模的集群的匯總運(yùn)行情況。
- 廣泛的開(kāi)源生態(tài): Sentinel 提供開(kāi)箱即用的與其它開(kāi)源框架/庫(kù)的整合模塊,例如與 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相應(yīng)的依賴(lài)并進(jìn)行簡(jiǎn)單的配置即可快速地接入 Sentinel。
- 完善的 SPI 擴(kuò)展點(diǎn): Sentinel 提供簡(jiǎn)單易用、完善的 SPI 擴(kuò)展接口。您可以通過(guò)實(shí)現(xiàn)擴(kuò)展接口來(lái)快速地定制邏輯。例如定制規(guī)則管理、適配動(dòng)態(tài)數(shù)據(jù)源等。
Sentinel 分為兩個(gè)部分:
- 核心庫(kù)(Java 客戶(hù)端) 不依賴(lài)任何框架/庫(kù),能夠運(yùn)行于所有 Java 運(yùn)行時(shí)環(huán)境,同時(shí)對(duì) Dubbo / Spring Cloud 等框架也有較好的支持。
- 控制臺(tái)(Dashboard) 基于 Spring Boot 開(kāi)發(fā),打包后可以直接運(yùn)行,不需要額外的 Tomcat 等應(yīng)用容器。
Sentinel 控制臺(tái)
下載控制臺(tái)
打開(kāi)Sentinel Release頁(yè)面下載jar包,我這里選擇的版本是1.8.0。下載完畢后,放到 /usr/local/sentinel
啟動(dòng)控制臺(tái)
- 端口號(hào)可以根據(jù)實(shí)際情況自己更改,這里用的是8888
- 如果sentinel裝在另外的服務(wù)器,localhost需要改成實(shí)際IP地址
- 可以寫(xiě)個(gè)sh腳本文件,方便下次啟動(dòng)
- 啟動(dòng)成功后,瀏覽器打開(kāi)8888端口地址,賬號(hào)密碼默認(rèn)都是sentinel
Spring Cloud Alibaba接入Sentinel
對(duì) consumer 服務(wù)都加上 sentinel 依賴(lài)
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>配置sentinel
- 增加 spring.cloud.sentinel.transport.dashboard
- 增加 feign.sentinel.enabled
關(guān)閉 provider,啟動(dòng)consumer,這時(shí)候調(diào)用接口會(huì)超時(shí)。
因此,我們需要給consumer服務(wù)增加Fallback服務(wù),作用是調(diào)用外部接口失敗時(shí),缺省返回指定的數(shù)據(jù)
- 對(duì)consumer服務(wù)增加HelloServiceFallback,放在包c(diǎn)om.train.alibaba.consumer.service.fallback
繼續(xù)保持provider關(guān)閉狀態(tài),重新調(diào)用consumer,返回結(jié)果如下
刷新sentinel控制臺(tái),會(huì)發(fā)現(xiàn)多了個(gè)test-consumer,里面的數(shù)據(jù)就是consumer服務(wù)的訪問(wèn)流量數(shù)據(jù)
總結(jié)
以上是生活随笔為你收集整理的6.Spring Cloud Alibaba教程:Sentinel流量防卫兵的介绍与基本使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 5.Spring Cloud Aliba
- 下一篇: gradle idea java ssm