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
--------------------------------------------------------------

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447613.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447613.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447613.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

男人七個健康“保鮮劑”

導讀&#xff1a;男人很累&#xff0c;要讓女人開心&#xff0c;要承擔生活和工作中的巨大壓力&#xff0c;還要保持姿容完美。美國男性健康網近日體諒地為男人定制了一份全面的套餐&#xff0c;幫助他們用最省時、最簡單的辦法不被勞累“氧化”&#xff0c;為健康“保鮮”。 1…

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

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 在Spring Cloud 微服務系統中&#xff0c;一種常見的負載均衡方式是&#xff0c;客戶端的請求首先經過負載均衡&#xff08;zuul、Ngnix…

亞特蘭大峰會精彩看點:軟件吞噬世界,OpenStack是變革核心

摘要&#xff1a;5月12日早9點&#xff0c;OpenStack Atlanta峰會在超過90家贊助廠商和4500名參會者的陪伴下拉開了序幕。Jonathan Bryce特別提出了Superuser和Marketplace兩個新概念&#xff0c;軟件正在吞噬整個世界&#xff0c;OpenStack是這場變革的核心。 第一天精彩看點…

Git 查看并修改 name 和 email

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 顯示name的方法&#xff1a; git config user.name git config --list 或者查看~/.gitconfig 文件。 改名字&#xff1a; # --global…

缺乏運動 七種病早早光臨

我們年輕&#xff0c;我們不怕病痛&#xff0c;但事實并非如此。常常聽著老一輩的念叨&#xff0c;說年輕人要動動&#xff0c;老了才不會這痛那痛的&#xff0c;覺得自己的身體“強大無比”&#xff0c;不會有疾病困擾&#xff0c;只是因為你不到那個年齡你理解不了。 當我們還…

解決: Gitee 自已提交的代碼提交人頭像為他人、碼云上獨自開發的項目顯示為 2 個開發者

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 我的情況 &#xff1a; 項目一直只有我一個開發者&#xff0c;卻莫名的出來了一個完全不認識的開發者&#xff0c;我新建后 push 的…

為什么有些語言會比別的快?

摘要&#xff1a;為什么有些語言比別的快&#xff1a;JIT與字節碼的使用&#xff0c;帶來了Java和C#這樣介于前兩者之間的中間選擇&#xff1b;編譯型語言比解釋型快&#xff0c;引入的間接層越多&#xff0c;速度越慢&#xff1b;語言設施上的投入力度&#xff1b;語言本身的設…

Docker logs 查看實時日志(日志最后的N行、某刻后日志)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 docker logs &#xff1a; docker logs -f -t --since"2017-05-31" --tail10 edu_web_1 edu_web_1 為容器名&#xff0c;也可…

研發團隊平穩度過“從小到大”并非易事

摘要&#xff1a;創業團隊在經歷初期的艱難發展階段后&#xff0c;團隊的擴大也帶來一系列管理上的混亂&#xff0c;CTO俱樂部會員、呱呱視頻社區研發總監王國良分享了自己關于創業團隊發展的思考&#xff0c;他認為研發團隊想要平穩度過“從大到小”并非易事。 創過業的人都知…

解決:idea - maven project 中 jar 報紅線

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 如圖&#xff1a; 2. 找到報紅線的工程&#xff0c;執行 mvn clean后&#xff0c;再 mvn install 。這樣會從私服重新拉取 jar 。 …

云計算三大主流陣營的競爭與合作

摘要&#xff1a;目前&#xff0c;以AWS等為代表的互聯網陣營、以IBM、HP為代表的IT陣營以及以AT&T為代表的電信運營商陣營在云計算領域展開競爭與合作&#xff0c;但是未來三大陣營的競爭和合作將更加復雜&#xff0c;IaaS、PaaS和SaaS的界限也逐步消弭。 【編者按】云計…

springCloud - 第7篇 - 配置文件管理中心 ( SpringCloud Config )

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、簡介 分布式的系統往往有多個服務&#xff0c;會有不同的配置文件。 不同環境配置文件內容也各不相同&#xff1a; 開發環境、測試…

成功必讀本:培養人脈的106個技巧

成功的道路上&#xff0c;人脈比知識更重要。發展人際關系應當是你優先級最高的事。《不要一個人吃飯( Never Eat Alone)》一書介紹了21世紀的交際規則。書中包括了許多實用技巧&#xff0c;讓你通過人際關系而興旺發達。 保留精華&#xff0c;以下是從書中總結的106條技巧。在…

springCloud - 第8篇 - 配置文件管理中心 - 集群模式(負載勻衡)使用

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 當微服務系統中 應用服務有很多時&#xff08;serviceA 、serviceB ...&#xff09;&#xff0c;會都從同一個配置中心讀取配置文件。此…

程序員的11個階段

程序員的職業生涯是一段充滿起伏的有趣經歷。考慮到其陡峭的學習曲線&#xff0c;完全可以預見你將經歷挫折、啟蒙、驕傲自大這幾個時期&#xff0c;以及穿插其間的各種心路歷程。在這篇文章中讓我們輕松一下&#xff0c;通過一系列搞笑 gif 圖來回顧其中的每一個階段 。 階段…

Docker 方式安裝 RabbitMQ (ribbitmq linux 部署)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 查找鏡像&#xff1a;&#xff08;management 版本的鏡像才有管理界面&#xff09; docker search rabbitmq:management2. 拉取鏡像…

中國股市6000點下跌創最大熊市 股民因貪欲被套牢

核心提示&#xff1a;人的欲望&#xff0c;他的那個欲望&#xff0c;他永遠在那個&#xff0c;你看漲了40我都不賣&#xff0c;還貪&#xff0c;還得到45&#xff0c;還貪。貪貪沒有完&#xff0c;跌到35了&#xff0c;35還覺得還能回去&#xff0c;跌30了。 鳳凰衛視5月14日《…

解決:c.r.c.impl.ForgivingExceptionHandler : An unexpected connection driver error occured

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 我的情況&#xff1a; 在個人阿里云服務器上 docker 方式 安裝的 RabbitMQ&#xff0c;然后本地代碼連接一直報錯&#xff1a; 201…

中國股市低迷的根本原因

和訊網友“長江薦股”發文探討中國股市低迷的根本原因&#xff0c;我深表認同&#xff0c;特轉載于下&#xff1a; 1、當年股市為國企扭虧服務&#xff0c;給投資者埋下了后遺癥。1998年政府為了實現國企3年扭虧的目標&#xff0c;要求一家優質企業捆綁一家虧損企業一起上市&am…

解決:springcloud eureka 注冊的服務config-client 狀態Status:UNKNOWN (1)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. eureka 注冊的服務config-client 的 Status 顯示為&#xff1a;UNKNOWN (1)&#xff1a; 2.原因 &#xff1a; 配置信息 eureka.cl…