欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Cloud Alibaba教程之Sentinel的使用

 更新時(shí)間:2019年09月12日 10:06:38   作者:方志朋  
這篇文章主要介紹了Spring Cloud Alibaba教程之Sentinel的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

什么是Sentinel

Sentinel,中文翻譯為哨兵,是為微服務(wù)提供流量控制、熔斷降級(jí)的功能,它和Hystrix提供的功能一樣,可以有效的解決微服務(wù)調(diào)用產(chǎn)生的“雪崩”效應(yīng),為微服務(wù)系統(tǒng)提供了穩(wěn)定性的解決方案。隨著Hytrxi進(jìn)入了維護(hù)期,不再提供新功能,Sentinel是一個(gè)不錯(cuò)的替代方案。通常情況,Hystrix采用線程池對(duì)服務(wù)的調(diào)用進(jìn)行隔離,Sentinel才用了用戶線程對(duì)接口進(jìn)行隔離,二者相比,Hystrxi是服務(wù)級(jí)別的隔離,Sentinel提供了接口級(jí)別的隔離,Sentinel隔離級(jí)別更加精細(xì),另外Sentinel直接使用用戶線程進(jìn)行限制,相比Hystrix的線程池隔離,減少了線程切換的開(kāi)銷。另外Sentinel的DashBoard提供了在線更改限流規(guī)則的配置,也更加的優(yōu)化。

從官方文檔的介紹,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)的依賴并進(jìn)行簡(jiǎn)單的配置即可快速地接入 Sentinel。
  • 完善的 SPI 擴(kuò)展點(diǎn): Sentinel 提供簡(jiǎn)單易用、完善的 SPI 擴(kuò)展點(diǎn)。您可以通過(guò)實(shí)現(xiàn)擴(kuò)展點(diǎn),快速的定制邏輯。例如定制規(guī)則管理、適配數(shù)據(jù)源等。

如何在Spring Cloud中使用Sentinel

Sentinel作為Spring Cloud Alibaba的組件之一,在Spring Cloud項(xiàng)目中使用它非常的簡(jiǎn)單。現(xiàn)在以案例的形式來(lái)講解如何在Spring Cloud項(xiàng)目中使用Sentinel。本項(xiàng)目是在之前nacos教程的案例基礎(chǔ)上進(jìn)行改造。在工程的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個(gè)配置:

  • spring.cloud.sentinel.transport.port: 8719 ,這個(gè)端口配置會(huì)在應(yīng)用對(duì)應(yīng)的機(jī)器上啟動(dòng)一個(gè) Http Server,該 Server 會(huì)與 Sentinel 控制臺(tái)做交互。比如 Sentinel 控制臺(tái)添加了1個(gè)限流規(guī)則,會(huì)把規(guī)則數(shù)據(jù) push 給這個(gè) Http Server 接收,Http Server 再將規(guī)則注冊(cè)到 Sentinel 中。
  • spring.cloud.sentinel.transport.dashboard: 8080,這個(gè)是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

寫一個(gè)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;
 }

}

關(guān)于@SentinelResource 注解,有以下的屬性:

  • value:資源名稱,必需項(xiàng)(不能為空)
  • entryType:entry 類型,可選項(xiàng)(默認(rèn)為 EntryType.OUT)
  • blockHandler / blockHandlerClass: blockHandler 對(duì)應(yīng)處理 BlockException 的函數(shù)名稱,可選項(xiàng)
  • fallback:fallback 函數(shù)名稱,可選項(xiàng),用于在拋出異常的時(shí)候提供 fallback 處理邏輯。

啟動(dòng)Nacos,并啟動(dòng)nacos-provider項(xiàng)目。文末有源碼下載鏈接。

Sentinel DashBoard

Sentinel 控制臺(tái)提供一個(gè)輕量級(jí)的控制臺(tái),它提供機(jī)器發(fā)現(xiàn)、單機(jī)資源實(shí)時(shí)監(jiān)控、集群資源匯總,以及規(guī)則管理的功能.
Sentinel DashBoard下載地址:https://github.com/alibaba/Sentinel/releases

下載完成后,以以下的命令啟動(dòng)

java -jar sentinel-dashboard-1.6.1.jar

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

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

在這里插入圖片描述

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

在這里插入圖片描述

在/hi資源處設(shè)置接口的限流功能,在“+流控”按鈕點(diǎn)擊開(kāi)設(shè)置界面如下,設(shè)置閾值類型為 qps,單機(jī)閾值為2。

在這里插入圖片描述

設(shè)置成功后可以在流控規(guī)則這一欄進(jìn)行查看,如圖所示:

在這里插入圖片描述

測(cè)試

多次快速訪問(wèn)nacos-provider的接口資源http://localhost:8762/hi,可以發(fā)現(xiàn)偶爾出現(xiàn)以下的信息:

Blocked by Sentinel (flow limiting)

正常的返回邏輯為

hi forezp

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

在FeignClient中使用Sentinel

Hystrix默認(rèn)集成在Spring Cloud 的Feign Client組件中,Sentinel也可以提供這樣的功能?,F(xiàn)以案例的形式來(lái)講解如何在FeignClient中使用Sentinel,z本案例是在之前的nacos教程案例的nacos-consumer工程上進(jìn)行改造,除了引入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

寫一個(gè)FeignClient,調(diào)用nacos-provider的/hi接口:

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

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

寫一個(gè)RestController調(diào)用ProviderClient,代碼如下:

@RestController
public class ConsumerController {

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

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

在這里插入圖片描述

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

hi feign

在被限流的時(shí)候返回錯(cuò)誤信息。

需要注意的是,被限流的時(shí)候FeignClient并不會(huì)調(diào)用nacos-provider的接口,而是在nacos-consumer工程里直接報(bào)錯(cuò)。

源碼下載

https://github.com/forezp/SpringCloudLearning/tree/master/springcloud-alibaba/nacos-discovery-sentinel

參考資料

https://github.com/alibaba/Sentinel/releases

https://github.com/alibaba/Sentinel/tree/master/sentinel-dashboard

https://github.com/spring-cloud-incubator/spring-cloud-alibaba/wiki/Sentinel

https://github.com/alibaba/Sentinel/wiki/控制臺(tái)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot Security實(shí)現(xiàn)單點(diǎn)登出并清除所有token

    SpringBoot Security實(shí)現(xiàn)單點(diǎn)登出并清除所有token

    Spring Security是一個(gè)功能強(qiáng)大且高度可定制的身份驗(yàn)證和訪問(wèn)控制框架。提供了完善的認(rèn)證機(jī)制和方法級(jí)的授權(quán)功能。是一款非常優(yōu)秀的權(quán)限管理框架。它的核心是一組過(guò)濾器鏈,不同的功能經(jīng)由不同的過(guò)濾器
    2023-01-01
  • Java使用icepdf將pdf文件按頁(yè)轉(zhuǎn)成圖片

    Java使用icepdf將pdf文件按頁(yè)轉(zhuǎn)成圖片

    這篇文章主要為大家詳細(xì)介紹了Java使用icepdf將pdf文件按頁(yè)轉(zhuǎn)成圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • SWT(JFace)體驗(yàn)之FillLayout布局

    SWT(JFace)體驗(yàn)之FillLayout布局

    FillLayout是非常簡(jiǎn)單的一種布局方式,它會(huì)以同樣大小對(duì)父組件中的子組件進(jìn)行布局,這些子組件將以一行或一列的形式排列。
    2009-06-06
  • Java8使用Supplier啟動(dòng)ScheduledThread代碼實(shí)例

    Java8使用Supplier啟動(dòng)ScheduledThread代碼實(shí)例

    這篇文章主要介紹了Java8使用Supplier啟動(dòng)ScheduledThread詳解,項(xiàng)目開(kāi)啟立即啟動(dòng)定時(shí)任務(wù)是很多項(xiàng)目都會(huì)遇到的一個(gè)需求,如何利用Java提供的函數(shù)優(yōu)雅的寫出來(lái)十分考驗(yàn)一個(gè)人的功底,需要的朋友可以參考下
    2024-01-01
  • 關(guān)于mybatis if else if 條件判斷SQL片段表達(dá)式取值和拼接問(wèn)題

    關(guān)于mybatis if else if 條件判斷SQL片段表達(dá)式取值和拼接問(wèn)題

    這篇文章主要介紹了mybatis if else if 條件判斷SQL片段表達(dá)式取值和拼接,文章通過(guò)自己真實(shí)使用的例子給大家詳細(xì)介紹,需要的朋友可以參考下
    2021-09-09
  • 解決Mybatis出現(xiàn)報(bào)錯(cuò)Error querying database.Cause: java.lang.IndexOutOfBoundsException: Index 9 out of

    解決Mybatis出現(xiàn)報(bào)錯(cuò)Error querying database.Cause: j

    這篇文章主要介紹了解決Mybatis出現(xiàn)報(bào)錯(cuò)Error querying database.Cause: java.lang.IndexOutOfBoundsException: Index 9 out of,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Spring使用AspectJ注解和XML配置實(shí)現(xiàn)AOP

    Spring使用AspectJ注解和XML配置實(shí)現(xiàn)AOP

    這篇文章主要介紹了Spring使用AspectJ注解和XML配置實(shí)現(xiàn)AOP的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Java中for(;;)和while(true)的區(qū)別

    Java中for(;;)和while(true)的區(qū)別

    這篇文章主要介紹了 Java中for(;;)和while(true)的區(qū)別,文章圍繞for(;;)和while(true)的相關(guān)自來(lái)哦展開(kāi)詳細(xì)內(nèi)容,需要的小伙伴可以參考一下,希望對(duì)大家有所幫助
    2021-11-11
  • java?環(huán)境配置(2023年詳細(xì)教程)

    java?環(huán)境配置(2023年詳細(xì)教程)

    這篇文章首先為了完善我的知識(shí)體系,今后一些軟件的安裝教程也可能會(huì)用到想寫一個(gè)更加詳細(xì)的,因?yàn)檫@并不僅僅是寫給?IT?行業(yè)的,其它行業(yè)可能也需要配置java環(huán)境
    2023-06-06
  • idea如何忽略.iml文件和.idea目錄

    idea如何忽略.iml文件和.idea目錄

    這篇文章主要介紹了idea如何忽略.iml文件和.idea目錄問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評(píng)論