應對複雜故障問題的簡單故障處理庫包:Failsafe
Failsafe是一個輕量 零依賴的處理故障失敗等問題的開源庫包,目的是儘可能簡單易用,用一種簡潔的API來處理每天系統執行情況並靈活處理。
Failsafe的故障保護功能有:
1. Retries重試
2. Circuit breakers斷路器
3.Fallback
4.執行上下文Execution context
5.Event listener事件監聽器
6.非同步API整合
7.CompletableFuture 和函式介面整合
8.Execution tracking執行故障跟蹤
支援Java 6+以上版本。
Failsafe核心功能是重試,首先需要定義一個 RetryPolicy用來指定重試的情況:
下面是使用retryPolicy執行一個Runnable或Callable實現重試:
Java 6和7也支援:
斷路器功能可使用在微服務架構中防止服務訪問過載:
透過Runnable或Callable執行這個斷路器:
當你配置了一個斷路器的執行失敗閥值時,一旦達到這個閥值,斷路器就會開啟,丟擲circuitbreakeropenexception,一段延遲後,斷路器處於半開狀態,再次嘗試執行,以確定當前斷路器是應該再次關閉或開啟,如果嘗試執行滿足了成功閥值,那麼斷路器就會再次關閉,透過其的業務執行恢復正常。
更多詳細使用見:
Failsafe的故障保護功能有:
1. Retries重試
2. Circuit breakers斷路器
3.Fallback
4.執行上下文Execution context
5.Event listener事件監聽器
6.非同步API整合
7.CompletableFuture 和函式介面整合
8.Execution tracking執行故障跟蹤
支援Java 6+以上版本。
Failsafe核心功能是重試,首先需要定義一個 RetryPolicy用來指定重試的情況:
RetryPolicy retryPolicy = new RetryPolicy() .retryOn(ConnectException.class) .withDelay(1, TimeUnit.SECONDS) .withMaxRetries(3); <p class="indent"> |
下面是使用retryPolicy執行一個Runnable或Callable實現重試:
// Run with retries Failsafe.with(retryPolicy).run(() -> connect()); // Get with retries Connection connection = Failsafe.with(retryPolicy).get(() -> connect()); <p class="indent"> |
Java 6和7也支援:
Connection connection = Failsafe.with(retryPolicy).get(new Callable<Connection>() { public Connection call() { return connect(); } }); <p class="indent"> |
斷路器功能可使用在微服務架構中防止服務訪問過載:
CircuitBreaker breaker = new CircuitBreaker() .withFailureThreshold(3, 10) .withSuccessThreshold(5) .withDelay(1, TimeUnit.MINUTES); <p class="indent"> |
透過Runnable或Callable執行這個斷路器:
Failsafe.with(breaker).run(this::connect); <p class="indent"> |
當你配置了一個斷路器的執行失敗閥值時,一旦達到這個閥值,斷路器就會開啟,丟擲circuitbreakeropenexception,一段延遲後,斷路器處於半開狀態,再次嘗試執行,以確定當前斷路器是應該再次關閉或開啟,如果嘗試執行滿足了成功閥值,那麼斷路器就會再次關閉,透過其的業務執行恢復正常。
更多詳細使用見:
jhalterman/failsafe: Simple, sophisticated failure
[該貼被banq於2016-07-28 10:55修改過]
相關文章
- 11g 邏輯備庫簡單故障處理
- 如何處理HTTP 503故障問題?HTTP
- 【故障處理】TNS-04610問題
- 【故障處理】DBCA建庫詭異問題處理--rac環境不能建立rac庫
- 故障分析 | Greenplum Segment 故障處理
- 【故障處理】一次RAC故障處理過程
- MongoDB故障處理MongoDB
- 簡單問題複雜著解決
- MySQL 常見同步複製故障處理方法MySql
- 處理mysql複製故障一例薦MySql
- 【故障處理】EXP-00091: Exporting questionable statistics 問題處理方法Export
- informix資料庫頁故障的處理方法ORM資料庫
- 微服務的故障處理微服務
- GPON網路故障如何處理?GPON網路故障處理流程
- 【故障處理】ORA-600:[13013],[5001]故障處理
- 【故障處理】ORA- 2730*,status 12故障分析與處理
- WCDMA測試庫故障處理過程
- linux故障處理Linux
- ora-故障處理
- 處理MySQL複製環境Slave故障的一個案例MySql
- 5種常見的 DNS 故障診斷及問題處理方法DNS
- 應對介面級的故障
- 專案02(Mysql gtid複製故障處理01)MySql
- 線上故障處理手冊
- MySQL show processlist故障處理MySql
- teams登入故障處理
- Oracle更新Opatch故障處理Oracle
- 如何快速處理線上故障
- Mysql故障處理2則MySql
- dataguard故障處理一則
- AIX系統故障處理AI
- 【Linux】 nfs 故障處理LinuxNFS
- Polly-故障處理和彈性應對很有一手
- 一次對連線過程進行跟蹤處理連線故障問題的案例
- 【故障處理】RAC環境第二節點無法歸檔的詭異問題處理
- 【問題處理】因ASM磁碟組空間不足導致資料庫例項無法啟動的故障處理ASM資料庫
- 【故障處理】 DBCA建庫報錯CRS-2566
- 記一次Oracle資料庫無響應(hang住)故障的處理Oracle資料庫