亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Cloud Alibaba中Sentinel怎么用

發布時間:2021-08-09 11:26:33 來源:億速云 閱讀:153 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關Spring Cloud Alibaba中Sentinel怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

什么是Sentinel

Sentinel,中文翻譯為哨兵,是為微服務提供流量控制、熔斷降級的功能,它和Hystrix提供的功能一樣,可以有效的解決微服務調用產生的“雪崩”效應,為微服務系統提供了穩定性的解決方案。隨著Hytrxi進入了維護期,不再提供新功能,Sentinel是一個不錯的替代方案。通常情況,Hystrix采用線程池對服務的調用進行隔離,Sentinel才用了用戶線程對接口進行隔離,二者相比,Hystrxi是服務級別的隔離,Sentinel提供了接口級別的隔離,Sentinel隔離級別更加精細,另外Sentinel直接使用用戶線程進行限制,相比Hystrix的線程池隔離,減少了線程切換的開銷。另外Sentinel的DashBoard提供了在線更改限流規則的配置,也更加的優化。

從官方文檔的介紹,Sentinel 具有以下特征:

  • 豐富的應用場景: Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺(即突發流量控制在系統容量可以承受的范圍)、消息削峰填谷、實時熔斷下游不可用應用等。

  • 完備的實時監控: Sentinel 同時提供實時的監控功能。您可以在控制臺中看到接入應用的單臺機器秒級數據,甚至 500 臺以下規模的集群的匯總運行情況。

  • 廣泛的開源生態: Sentinel 提供開箱即用的與其它開源框架/庫的整合模塊,例如與 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相應的依賴并進行簡單的配置即可快速地接入 Sentinel。

  • 完善的 SPI 擴展點: Sentinel 提供簡單易用、完善的 SPI 擴展點。您可以通過實現擴展點,快速的定制邏輯。例如定制規則管理、適配數據源等。

如何在Spring Cloud中使用Sentinel

Sentinel作為Spring Cloud Alibaba的組件之一,在Spring Cloud項目中使用它非常的簡單。現在以案例的形式來講解如何在Spring Cloud項目中使用Sentinel。本項目是在之前nacos教程的案例基礎上進行改造。在工程的pom文件加上sentinel的Spring Cloud起步依賴,代碼如下:

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
  <version>0.9.0.RELEASE</version> 
</dependency>

在工程的配置文件application.yml文件中配置,需要新增2個配置:

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

  • spring.cloud.sentinel.transport.dashboard: 8080,這個是Sentinel DashBoard的地址。

server:
 port: 8762
spring:
 application:
 name: nacos-provider
 cloud:
 nacos:
  discovery:
  server-addr: 127.0.0.1:8848
 sentinel:
  transport:
  port: 8719
  dashboard: localhost:8080

寫一個RestController,在接口上加上SentinelResource注解就可以了。

@RestController
public class ProviderController {

 @GetMapping("/hi")
 @SentinelResource(value="hi")
 public String hi(@RequestParam(value = "name",defaultValue = "forezp",required = false)String name){

  return "hi "+name;
 }

}

關于@SentinelResource 注解,有以下的屬性:

  • value:資源名稱,必需項(不能為空)

  • entryType:entry 類型,可選項(默認為 EntryType.OUT)

  • blockHandler / blockHandlerClass: blockHandler 對應處理 BlockException 的函數名稱,可選項

  • fallback:fallback 函數名稱,可選項,用于在拋出異常的時候提供 fallback 處理邏輯。

啟動Nacos,并啟動nacos-provider項目。文末有源碼下載鏈接。

Sentinel DashBoard

Sentinel 控制臺提供一個輕量級的控制臺,它提供機器發現、單機資源實時監控、集群資源匯總,以及規則管理的功能.
Sentinel DashBoard下載地址:https://github.com/alibaba/Sentinel/releases

下載完成后,以以下的命令啟動

java -jar sentinel-dashboard-1.6.1.jar

默認啟動端口為8080,可以-Dserver.port=8081的形式改變默認端口。啟動成功后,在瀏覽器上訪問localhost:8080,就可以顯示Sentinel的登陸界面,登陸名為sentinel,密碼為sentinel。

登陸sentinel dashboard成功后,并多次訪問nacos-provider的localhost:8080/hi接口,在nacos訪問信息如下:

Spring Cloud Alibaba中Sentinel怎么用

sentinel dashboard顯示了nacos-provider的接口資源信息。

Spring Cloud Alibaba中Sentinel怎么用

在/hi資源處設置接口的限流功能,在“+流控”按鈕點擊開設置界面如下,設置閾值類型為 qps,單機閾值為2。

Spring Cloud Alibaba中Sentinel怎么用

設置成功后可以在流控規則這一欄進行查看,如圖所示:

Spring Cloud Alibaba中Sentinel怎么用

測試

多次快速訪問nacos-provider的接口資源http://localhost:8762/hi,可以發現偶爾出現以下的信息:

Blocked by Sentinel (flow limiting)

正常的返回邏輯為

hi forezp

由以上可只,接口資源/hi的限流規則起到了作用。

在FeignClient中使用Sentinel

Hystrix默認集成在Spring Cloud 的Feign Client組件中,Sentinel也可以提供這樣的功能。現以案例的形式來講解如何在FeignClient中使用Sentinel,z本案例是在之前的nacos教程案例的nacos-consumer工程上進行改造,除了引入spring-cloud-starter-alibaba-sentinel,還需要引入spring-cloud-starter-openfeign,代碼如下:

	<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
			<version>0.9.0.RELEASE</version>
		</dependency>

在配置文件中需要加上sentinel.transport. dashboard配置外,還需要加上feign.sentinel.enabled的配置,代碼如下:

server:
 port: 8763
spring:
 application:
 name: nacos-consumer
 cloud:
 nacos:
  discovery:
  server-addr: 127.0.0.1:8848
 sentinel:
  transport:
  port: 8719
  dashboard: localhost:8080

feign.sentinel.enabled: true

寫一個FeignClient,調用nacos-provider的/hi接口:

@FeignClient("nacos-provider")
public interface ProviderClient {

 @GetMapping("/hi")
 String hi(@RequestParam(value = "name", defaultValue = "forezp", required = false) String name);
}

寫一個RestController調用ProviderClient,代碼如下:

@RestController
public class ConsumerController {

 @Autowired
 ProviderClient providerClient;
 
 @GetMapping("/hi-feign")
 public String hiFeign(){
  return providerClient.hi("feign");
 }
}

在FeignClient中,Sentinel為Feign調用生成了資源名策略定義,定義規則為httpmethod:protocol://requesturl。啟動nacos-consumer工程,在Sentinel DashBoard生成了如下的資源信息:

Spring Cloud Alibaba中Sentinel怎么用

添加流控,QPS為2,在瀏覽器上快速多次點擊訪問http://localhost:8763/hi-feign,瀏覽器在正常情況下是能夠正常返回如下的信息:

hi feign

在被限流的時候返回錯誤信息。

需要注意的是,被限流的時候FeignClient并不會調用nacos-provider的接口,而是在nacos-consumer工程里直接報錯。

關于“Spring Cloud Alibaba中Sentinel怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

双峰县| 砀山县| 黑龙江省| 邓州市| 连江县| 丰台区| 西峡县| 盐亭县| 灌云县| 桑植县| 彝良县| 元江| 扎兰屯市| 汕头市| 安化县| 忻城县| 来宾市| 南阳市| 新蔡县| 绍兴县| 建平县| 高阳县| 门头沟区| 平谷区| 彝良县| 奉新县| 娄底市| 安吉县| 台中市| 武宣县| 托克逊县| 凤山县| 陆良县| 阳高县| 简阳市| 积石山| 张掖市| 浙江省| 仁化县| 韶关市| 嘉禾县|