hystrix 出現以下四種情況,都會去呼叫 fallback 降級機制:
在hystrixcommand
,降級邏輯的書寫,是通過實現 getfallback() 介面;而在hystrixobservablecommand
中,則是實現 resumewithfallback() 方法。
現在,我們用乙個簡單的栗子,來演示 fallback 降級是怎麼做的。
比如,有這麼個場景。我們現在有個包含 brandid 的商品資料,假設正常的邏輯是這樣:拿到乙個商品資料,根據 brandid 去呼叫品牌服務的介面,獲取品牌的最新名稱 brandname。
假如說,品牌服務介面掛掉了,那麼我們可以嘗試從本地記憶體中,獲取乙份稍過期的資料,先湊合著用。
本地獲取品牌名稱的**大致如下。
/**在 getbrandnamecommand 中,run() 方法的正常邏輯是去呼叫品牌服務的介面獲取到品牌名稱,如果呼叫失敗,報錯了,那麼就會去呼叫 fallback 降級機制。* 品牌名稱本地快取
* */
public class brandcache
/*** brandid 獲取 brandname
** @param brandid 品牌id
* @return 品牌名
*/public static string getbrandname(long brandid)
這裡,我們直接模擬介面呼叫報錯,給它丟擲個異常。
而在 getfallback() 方法中,就是我們的降級邏輯,我們直接從本地的快取中,獲取到品牌名稱的資料。
/*** 獲取品牌名稱的command
* */
public class getbrandnamecommand extends hystrixcommand
@override
protected string run() throws exception
@override
protected string getfallback()
}
fallbackisolationsemaphoremaxconcurrentrequests
用於設定 fallback 最大允許的併發請求量,預設值是 10,是通過 semaphore 訊號量的機制去限流的。如果超出了這個最大值,那麼直接 reject。
在 cachecontroller 中,我們通過 productinfo 獲取 brandid,然後建立 getbrandnamecommand 並執行,去嘗試獲取 brandname。這裡執行會報錯,因為我們在 run() 方法中直接丟擲異常,hystrix 就會去呼叫 getfallback() 方法走降級邏輯。
@controller關於降級邏輯的演示,基本上就結束了。public class cachecontroller
}
前端快取之本地快取
之前說了http快取,今天說說本地快取。本地快取也是平時開發過程經常用的。本地快取就簡單多了,我們常用的有三個 cookie localstorage sessionstorage。cookie 一般用來儲存使用者資訊,每次請求的時候內容都會自動被傳遞給伺服器。不同瀏覽器對於cookie的大小並不統...
本地快取localstorage
cookie,localstorage,sessionstorage都可以實現客戶端儲存,三者的區別有哪些了?cookie作為最早期的被設計web瀏覽器儲存少量資料,從底層看,它是作為http協議的一種擴充套件實現。cookie資料會自動在web瀏覽器和web伺服器之間傳輸資料。cookie有效期 ...
C 本地快取
1.什麼是快取?快取就是資料交換的緩衝區 又稱作cache 當某一硬體要讀取資料時,會首先從快取中查詢需要的資料,找到了則直接執行,找不到的話則從記憶體中查詢。由於快取的執行速度比記憶體快得多,故快取的作用就是幫助硬體更快地執行。因為快取往往使用的是ram 斷電即掉的非永久性儲存 所以在用完後還是會...