本文節選自《瘋狂Spring Cloud微服務架構實戰》
京東購買地址::https://item.jd.com/12256011.html
噹噹網購買地址::http://product.dangdang.com/25201393.html
Spring Cloud教學視頻:http://blog.csdn.net/boxiong86/article/details/78399104
Hystrix運作流程
在前面的例子中,使用Hystrix時僅僅創建命令並予以執行,看似簡單,實際上,Hystrix有一套較爲複雜的執行邏輯,爲了能讓大家大致瞭解該執行過程,筆者將整個流程作了簡化。Hystrix的運作流程請見圖6-3。
圖6-3 Hystrix的運作流程圖
簡單說明一下運作流程:
第一步:在命令開始執行時,會做一些準備工作,例如爲命令創建相應的線程池(後面章節講述)等。
第二步:判斷是否打開了緩存,打開了緩存就直接查找緩存並返回結果。
第三步:判斷斷路器是否打開,如果打開了,就表示鏈路不可用,直接執行回退方法。結合本章開頭的例子,可理解爲“基礎服務”模塊不可用,“服務A”模塊直接執行回退,響應用戶請求。
第四步:判斷線程池、信號量(計數器)等條件,例如像線程池超負荷,則執行回退方法,否則,就去執行命令的內容(例如前面例子中的調用服務)。
第五步:執行命令,計算是否要對斷路器進行處理,執行完成後,如果滿足一定條件,則需要開啓斷路器。如果執行成功,則返回結果,反之則執行回退。
整個流程最主要的點,就在於斷路器是否被打開,後面會講解斷路器的相關內容。我們的客戶端在使用Hystrix時,表面上只是創建了一個命令來執行,實際上Hystrix已經爲客戶端添加了幾層的保護。
圖6-3的流程圖對Hystrix的運作流程做了最簡單的描述,對於部分的細節,在此不進行贅述,讀者大致瞭解運作流程即可。
本文節選自《瘋狂Spring Cloud微服務架構實戰》
Spring Cloud教學視頻:http://blog.csdn.net/boxiong86/article/details/78399104