最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Cloud Alibaba教程之Sentinel的使用

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

什么是Sentinel

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

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

  • 豐富的應(yīng)用場景: Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺(即突發(fā)流量控制在系統(tǒng)容量可以承受的范圍)、消息削峰填谷、實(shí)時(shí)熔斷下游不可用應(yīng)用等。
  • 完備的實(shí)時(shí)監(jiān)控: Sentinel 同時(shí)提供實(shí)時(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ò)展點(diǎn)。您可以通過實(shí)現(xiàn)擴(kuò)展點(diǎn),快速的定制邏輯。例如定制規(guī)則管理、適配數(shù)據(jù)源等。

如何在Spring Cloud中使用Sentinel

Sentinel作為Spring Cloud Alibaba的組件之一,在Spring Cloud項(xiàng)目中使用它非常的簡單。現(xiàn)在以案例的形式來講解如何在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è)端口配置會在應(yīng)用對應(yīng)的機(jī)器上啟動一個(gè) Http Server,該 Server 會與 Sentinel 控制臺做交互。比如 Sentinel 控制臺添加了1個(gè)限流規(guī)則,會把規(guī)則數(shù)據(jù) push 給這個(gè) Http Server 接收,Http Server 再將規(guī)則注冊到 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 對應(yīng)處理 BlockException 的函數(shù)名稱,可選項(xiàng)
  • fallback:fallback 函數(shù)名稱,可選項(xiàng),用于在拋出異常的時(shí)候提供 fallback 處理邏輯。

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

Sentinel DashBoard

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

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

java -jar sentinel-dashboard-1.6.1.jar

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

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

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

設(shè)置成功后可以在流控規(guī)則這一欄進(jì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也可以提供這樣的功能。現(xiàn)以案例的形式來講解如何在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。啟動nacos-consumer工程,在Sentinel DashBoard生成了如下的資源信息:

在這里插入圖片描述

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

hi feign

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

需要注意的是,被限流的時(shí)候FeignClient并不會調(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/控制臺

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

相關(guān)文章

  • Java中的非對稱加密算法原理與實(shí)現(xiàn)方式

    Java中的非對稱加密算法原理與實(shí)現(xiàn)方式

    在當(dāng)今的信息時(shí)代,數(shù)據(jù)安全已經(jīng)成為了一個(gè)至關(guān)重要的問題,加密技術(shù)作為保障信息安全的重要手段,受到了廣泛的應(yīng)用和關(guān)注,本篇文章將詳細(xì)介紹Java中的非對稱加密算法原理及其實(shí)現(xiàn)方式,需要的朋友可以參考下
    2023-12-12
  • 詳解XML,Object,Json轉(zhuǎn)換與Xstream的使用

    詳解XML,Object,Json轉(zhuǎn)換與Xstream的使用

    這篇文章主要介紹了詳解XML,Object,Json轉(zhuǎn)換與Xstream的使用的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • java如何用正則表達(dá)式匹配與提取字符串

    java如何用正則表達(dá)式匹配與提取字符串

    一位以前的同事在群里面突然發(fā)了個(gè)需求,要通過正則表達(dá)式來取值,下面這篇文章主要給大家介紹了關(guān)于java如何用正則表達(dá)式匹配與提取字符串的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Java中final與繼承操作實(shí)例分析

    Java中final與繼承操作實(shí)例分析

    這篇文章主要介紹了Java中final與繼承操作,結(jié)合實(shí)例形式分析了Java中使用final阻止繼承的相關(guān)原理與操作注意事項(xiàng),需要的朋友可以參考下
    2019-09-09
  • Spring中@Transactional注解關(guān)鍵屬性和用法小結(jié)

    Spring中@Transactional注解關(guān)鍵屬性和用法小結(jié)

    在Spring框架中,@Transactional 是一個(gè)注解,用于聲明事務(wù)性的方法,它提供了一種聲明式的事務(wù)管理方式,避免了在代碼中直接編寫事務(wù)管理相關(guān)的代碼,本文給大家介紹@Transactional 注解的一些關(guān)鍵屬性和用法,感興趣的朋友一起看看吧
    2023-12-12
  • java用戶管理注冊功能 含前后臺代碼

    java用戶管理注冊功能 含前后臺代碼

    這篇文章主要介紹了java用戶管理注冊功能,含前端和后臺代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Spring Boot2.x如何自定義Endpoint

    Spring Boot2.x如何自定義Endpoint

    這篇文章主要介紹了Spring Boot2.x如何自定義Endpoint,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • BlockingQueue隊(duì)列處理高并發(fā)下的日志

    BlockingQueue隊(duì)列處理高并發(fā)下的日志

    這篇文章主要介紹了BlockingQueue隊(duì)列處理高并發(fā)下的日志示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • IntelliJ IDEA 中g(shù)it的使用圖文教程

    IntelliJ IDEA 中g(shù)it的使用圖文教程

    本文通過圖文并茂的形式給大家介紹了IntelliJ IDEA 中g(shù)it的使用,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2018-02-02
  • Spring?Data?Elasticsearch使用方式(Elasticsearch)

    Spring?Data?Elasticsearch使用方式(Elasticsearch)

    這篇文章主要介紹了Spring?Data?Elasticsearch使用方式(Elasticsearch),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04

最新評論

当涂县| 苏州市| 大埔区| 集安市| 漳州市| 饶平县| 饶平县| 喀喇| 常宁市| 佛坪县| 华亭县| 宜章县| 密云县| 荔波县| 辽中县| 华坪县| 泾阳县| 阿拉尔市| 平和县| 广平县| 建瓯市| 阳曲县| 寿宁县| 新竹市| 万安县| 济南市| 宜兰市| 额尔古纳市| 大新县| 河南省| 额尔古纳市| 威宁| 安达市| 林州市| 平昌县| 江城| 兴城市| 绥阳县| 民乐县| 洱源县| 海原县|