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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

springCloud - 第5篇 - 断路器 Hystrix ( Feign 、Ribbon )

發布時間:2023/12/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springCloud - 第5篇 - 断路器 Hystrix ( Feign 、Ribbon ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

一、為什么要有熔斷

在微服務架構中,根據業務來拆分成一個個的服務,服務與服務之間可以相互調用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign來調用。為了保證其高可用,單個服務通常會集群部署。由于網絡原因或者自身的原因,服務并不能保證100%可用,如果單個服務出現問題,調用這個服務就會出現線程阻塞,此時若有大量的請求涌入,Servlet容器的線程資源會被消耗完畢,導致服務癱瘓。服務與服務之間的依賴性,故障會傳播,會對整個微服務系統造成災難性的嚴重后果,這就是服務故障的 “雪崩” 效應。

為了解決這個問題,業界提出了斷路器模型 。

以上出自:https://blog.csdn.net/forezp/article/details/81040990?

二、熔斷實現

1.?首先 啟動 注冊中心 eureka?工程、服務生產者?see-param 工程(8803端口)、

? ? ? ? ? ? ? ? ? ? ?服務消費者 feign 工程(8702端口)、服務消費者 ribbon 工程(8701 端口)。

(生產者和消費者這 2 個概念是相對的。在不同的業務場景中,2 者身份可互換。或多服務時,同一服務可兼具 2 個身份。)

分別訪問 生產者:

2. feign 中熔斷器實現。

配置文件中開啟熔斷:

# 開啟斷熔器: ( Feign 自帶斷路器,但默認為不開啟: false) feign.hystrix.enabled=true

在?SeeParamService 類中?@FeignClient 注解中加上參數 fallback ,并指明熔斷方法實現類。

書寫?熔斷方法實現類:

package com.feign.servicefeign;import org.springframework.stereotype.Component;/*** @author yujiang* @description 迷斷回調方法類* @date 2019/7/24 9:39*/// 注入IOC容器中,把本類交給 spring 管理 @Component public class SeeParamError implements SeeParamService {@Overridepublic String seeParam(String param) {return " 乖乖加班吧,服務掛了,搬磚,搬磚 ... ";}}

此時, 關閉服務生產者 see-param 工程,并再訪問其服務:

至此,feign? 熔斷生效 。

3. ribbon?中熔斷器實現。

ribbon 并不自帶迷斷功能,故要引入依賴:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency>

工程啟動類加注解? @EnableHystrix ,開啟熔斷。

SeeParamService 類中,在要實現熔斷的方法上加注解:@HystrixCommand(fallbackMethod = "熔斷實現方法名"),如: package com.ribbon.serviceribbon;import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate;/*** @author yujiang* @description* @date 2019/7/22 11:45*/ @Service public class SeeParamService {@AutowiredRestTemplate restTemplate;/*** 注解 @HystrixCommand :* 開啟熔斷器,指定熔斷時回調方法為 seeParamError** @param param* @return*/@HystrixCommand(fallbackMethod = "seeParamError")public String seeService(String param) {return restTemplate.getForObject("http://see-param/seeParam?param=" + param, String.class);}/*** 熔斷 調用此方法** @return*/public String seeParamError(String param) {return " 哎,別瞅了,別瞅了,服務已經 go die ...";}}

此時, 關閉服務生產者 see-param 工程,并再訪問其服務:

至此,ribbon? 熔斷生效 。

--------------------------------------------------------------

下一篇:springCloud - 第6篇 - 網關的實現:ZUUL

源碼見:https://gitee.com/FJ_WoMenDeShiJie/springcloud-feign

? ? ? ? ? ? ??https://gitee.com/FJ_WoMenDeShiJie/springcloud-ribbon

--------------------------------------------------------------

PS:這個系列不定時更新,只是個人的學習分享,

內容全程參考書目:

《Spring Cloud 與 Docker 微服務架構空實戰?》、

《Spring Cloud 微服務實戰》及此書作者博客:http://blog.didispace.com/spring-cloud-learning/

《深入理解 Spring Cloud 與微服務構建》及此書作者博客:https://blog.csdn.net/forezp/article/details/70148833
--------------------------------------------------------------

總結

以上是生活随笔為你收集整理的springCloud - 第5篇 - 断路器 Hystrix ( Feign 、Ribbon )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。