日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

Spring Cloud Alibaba迁移指南2:一行代码从Hystrix迁移到Sentinel

發(fā)布時(shí)間:2025/3/21 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Cloud Alibaba迁移指南2:一行代码从Hystrix迁移到Sentinel 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者:洛夜,校對(duì):周立

在本博客首發(fā),歡迎轉(zhuǎn)載。

前段時(shí)間,Netflix宣布Hystrix進(jìn)入維護(hù)模式,詳見(jiàn)Hystrix停止開(kāi)發(fā),我們?cè)摵稳ズ螐?#xff1f;,而Spring Cloud亦宣布Spring Cloud Netflix進(jìn)入維護(hù)狀態(tài),后續(xù)不再進(jìn)行更新已成為事實(shí)。作為開(kāi)發(fā)者的我們,如何使用極簡(jiǎn)的方式替換Hystrix成為首要解決的問(wèn)題。

Hystrix宣布停止維護(hù)后,社區(qū)推薦了Resilience4j( https://github.com/resilience4j/resilience4j ) ,而業(yè)界還有Alibaba Sentinel可供選擇——3款產(chǎn)品各有優(yōu)勢(shì),具體的功能差異參考下表(該表來(lái)自Sentinel Wiki( https://github.com/alibaba/Sentinel/wiki/Guideline:-%E4%BB%8E-Hystrix-%E8%BF%81%E7%A7%BB%E5%88%B0-Sentinel#%E5%8A%9F%E8%83%BD%E5%AF%B9%E6%AF%94 ):

?SentinelHystrixresilience4j
隔離策略信號(hào)量隔離(并發(fā)線程數(shù)限流)線程池隔離/信號(hào)量隔離信號(hào)量隔離
熔斷降級(jí)策略基于響應(yīng)時(shí)間、異常比率、異常數(shù)基于異常比率基于異常比率、響應(yīng)時(shí)間
實(shí)時(shí)統(tǒng)計(jì)實(shí)現(xiàn)滑動(dòng)窗口(LeapArray)滑動(dòng)窗口(基于 RxJava)Ring Bit Buffer
動(dòng)態(tài)規(guī)則配置支持多種數(shù)據(jù)源支持多種數(shù)據(jù)源有限支持
擴(kuò)展性多個(gè)擴(kuò)展點(diǎn)插件的形式接口的形式
基于注解的支持支持支持支持
限流基于 QPS,支持基于調(diào)用關(guān)系的限流有限的支持Rate Limiter
流量整形支持預(yù)熱模式、勻速器模式、預(yù)熱排隊(duì)模式不支持簡(jiǎn)單的 Rate Limiter 模式
系統(tǒng)自適應(yīng)保護(hù)支持不支持不支持
控制臺(tái)提供開(kāi)箱即用的控制臺(tái),可配置規(guī)則、查看秒級(jí)監(jiān)控、機(jī)器發(fā)現(xiàn)等簡(jiǎn)單的監(jiān)控查看不提供控制臺(tái),可對(duì)接其它監(jiān)控系統(tǒng)

目前,Sentinel 在?Spring Cloud Alibaba中已適配Spring Cloud體系,完全可用來(lái)替代 Hystrix 的功能。不僅如此,阿里內(nèi)部很多產(chǎn)品線都已使用Sentinel實(shí)現(xiàn)限流降級(jí),Sentinel是經(jīng)過(guò)生產(chǎn)流量大規(guī)模驗(yàn)證的。

下面來(lái)探討如何從Hystrix遷移至Sentinel——

Spring Cloud Alibaba Sentinel 代替 Hystrix

要想使用Spring Cloud Alibaba Sentinel,需添加如下依賴,并去除Spring Cloud Netflix Hystrix(?spring-cloud-starter-netflix-hystrix?)的依賴。

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

0代碼修改兼容 Feign

加上 Feign 的依賴:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>${latest.version}</version> </dependency>

在?application.yml?中添加?feign.sentinel.enabled=true?即可為Feign啟用Sentinel支持:

# 去掉 # feign.hystrix.enabled: true # 改為如下即可 feign.sentinel.enabled: true

Feign Client無(wú)需修改:

@FeignClient(name = "service-provider") public interface EchoService {@RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)String echo(@PathVariable("str") String str);@RequestMapping(value = "/echo/save", method = RequestMethod.POST)String save(Foo foo);}

對(duì)于這個(gè)?EchoService,echo方法對(duì)應(yīng)的資源名是?GET:http://service-provider/echo/{str}, save 方法對(duì)應(yīng)的資源名是?POST:http://service-provider/echo/save。

只需配置這些規(guī)則,限流降級(jí)操作即可生效。

一行代碼支持RestTemplate

Sentinel與Spring生態(tài)的?RestTemplate?也進(jìn)行了整合,可對(duì)?RestTemplate?請(qǐng)求過(guò)程進(jìn)行限流和降級(jí),只需在構(gòu)造 RestTemplate 的時(shí)候加上?@SentinelRestTemplate?注解即可,如下所示:

@Bean @SentinelRestTemplate public RestTemplate restTemplate() {return new RestTemplate(); }

@SentinelRestTemplate?注解還暴露出了對(duì)應(yīng)的屬性可進(jìn)行限流降級(jí)后的自定義錯(cuò)誤,默認(rèn)的行為是返回 "RestTemplate request block by sentinel" 信息。關(guān)于?@SentinelRestTemplate?的詳細(xì)信息可參考Wiki( https://github.com/spring-cloud-incubator/spring-cloud-alibaba/wiki/Sentinel#resttemplate-%E6%94%AF%E6%8C%81 )。

總結(jié)

以上是生活随笔為你收集整理的Spring Cloud Alibaba迁移指南2:一行代码从Hystrix迁移到Sentinel的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。