国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

招行二面:為什么有了服務降級,還需要服務熔斷?

開發 系統
本文,我們深入淺出地介紹了服務熔斷機制,并通過Resilience4j的實戰示例展示了如何在Java項目中實現服務熔斷機制。

在分布式系統中,我們經常聽到服務熔斷這個詞,那么,什么是服務熔斷?為什么需要服務熔斷?如何實現服務熔斷?這篇文章,我們來聊一聊。

一、什么是服務熔斷?

簡單來說,服務熔斷(Circuit Breaker)是一種用于提高分布式系統健壯性的設計模式。它的靈感來源于電路中的熔斷器,當電路中出現問題時,熔斷器會自動斷開,防止故障擴大,保護整個系統。應用在微服務架構中,服務熔斷機制可以在某個服務出現故障或響應緩慢時,快速失敗或采取備用方案,從而避免級聯失敗,提升系統的整體穩定性。

二、原理分析

接下來,我們講解服務熔斷的原理,整體總結成下面五個步驟。

1. 正常狀態

在正常情況下,服務之間的調用是通暢的,熔斷器處于關閉狀態。所有請求都會正常發送到目標服務,沒有任何干預。

2. 監控與檢測

熔斷器會監控目標服務的調用情況,包括請求成功率、失敗率、響應時間等。當某個閾值被超過(比如連續失敗次數超過預設值),熔斷器會認為目標服務可能出現了問題。

3. 打開熔斷

一旦檢測到目標服務可能故障,熔斷器會打開(Open),此時所有對該服務的請求都會被立即失敗,不再發送實際請求。這就像是電路中的熔斷器斷開一樣,防止故障蔓延。

4. 半開啟狀態

過一段時間后,熔斷器會進入半開啟狀態(Half-Open),允許少量請求嘗試調用目標服務。如果這些請求成功,熔斷器會重新關閉,恢復正常狀態;如果失敗,熔斷器繼續保持打開狀態。

5. 備用機制

當熔斷器打開時,可以采取備用方案,比如返回默認值、跳過某些操作,甚至切換到其他服務實例,以保證系統的部分功能仍然可用。

通過這樣的機制,服務熔斷能夠有效地防止單個服務故障導致的系統級別的連鎖反應。

三、示例演示

為了更好地理解服務熔斷,接下來,我們將使用 Resilience4j 這個輕量級的容錯庫來實現服務熔斷機制。Resilience4j是一個專為 Java 8及以上版本設計的庫,具有易用性和高性能的特點。

1. 環境準備

首先,確保你的項目中已經引入了Resilience4j的依賴。以Maven項目為例,添加以下依賴到pom.xml中:

<dependencies>
    <!-- Resilience4j核心依賴 -->
    <dependency>
        <groupId>io.github.resilience4j</groupId>
        <artifactId>resilience4j-all</artifactId>
        <version>2.0.2</version>
    </dependency>
    <!-- 其他依賴項 -->
</dependencies>

2. 編寫服務熔斷代碼

下面是一個簡單的示例,展示如何使用Resilience4j實現服務熔斷。當目標服務響應慢或失敗時,熔斷器會起作用,快速返回備用結果。

import io.github.resilience4j.circuitbreaker.*;
import io.github.resilience4j.decorators.Decorators;

import java.time.Duration;
import java.util.concurrent.*;
import java.util.function.Supplier;

publicclass CircuitBreakerDemo {

    public static void main(String[] args) {
        // 創建CircuitBreaker配置
        CircuitBreakerConfig config = CircuitBreakerConfig.custom()
                .failureRateThreshold(50) // 失敗率閾值
                .waitDurationInOpenState(Duration.ofSeconds(5)) // 打開狀態持續時間
                .slidingWindowSize(4) // 滑動窗口大小
                .build();

        // 創建CircuitBreaker實例
        CircuitBreaker circuitBreaker = CircuitBreaker.of("myCircuitBreaker", config);

        // 模擬目標服務調用
        Supplier<String> decoratedSupplier = Decorators.ofSupplier(() -> callExternalService())
                .withCircuitBreaker(circuitBreaker)
                .withFallback(Collections.singletonList(CircuitBreaker.class), 
                             throwable -> "默認響應")
                .decorate();

        // 模擬多次調用
        for (int i = 0; i < 10; i++) {
            try {
                String response = decoratedSupplier.get();
                System.out.println("響應: " + response);
            } catch (Exception e) {
                System.out.println("調用失敗: " + e.getMessage());
            }

            // 等待1秒
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
                break;
            }
        }
    }

    // 模擬外部服務調用,隨機失敗或延時
    private static String callExternalService() {
        double random = Math.random();
        if (random < 0.5) {
            // 模擬失敗
            thrownew RuntimeException("服務調用失敗");
        } else {
            // 模擬延時
            try {
                Thread.sleep(2000); // 2秒延時
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
            return"成功響應";
        }
    }
}

3. 代碼解析

  • 配置CircuitBreaker:我們創建了一個自定義的熔斷器配置,設置了失敗率閾值為50%,滑動窗口大小為4次調用,打開狀態持續5秒。
  • 裝飾目標服務調用:使用Decorators將目標服務調用裝飾為一個有熔斷器保護的供應者(Supplier)。同時,我們設置了一個備用響應,當熔斷器打開或目標服務調用失敗時,返回“默認響應”。
  • 模擬調用:在for循環中,我們模擬了多次服務調用。目標服務callExternalService隨機成功或失敗,并可能產生延時。通過這種方式,我們可以觀察熔斷器是如何根據調用結果自動切換狀態的。

運行這段代碼,當失敗率超過 50%時,熔斷器會打開,后續的請求會立即返回“默認響應”。經過 5秒后,熔斷器會進入半開啟狀態,嘗試恢復調用。如果目標服務恢復正常,熔斷器會重新關閉,系統恢復正常運行。

四、問題解答

回到文章的標題:為什么有了服務降級還需要服務熔斷?

這里我們總結了四個核心理由:

  • 避免資源浪費:當一個服務出現故障時,如果沒有熔斷機制,系統可能會持續不斷地嘗試調用這個失敗的服務,導致請求積壓和資源耗盡。服務熔斷通過快速失敗,避免了不必要的調用,節省了寶貴的系統資源。
  • 防止級聯故障:在微服務架構中,服務之間通常相互依賴。如果一個服務出現問題,持續的失敗調用可能會影響到依賴它的其他服務,導致級聯故障。服務熔斷器可以在問題初期及時切斷受影響的服務調用,防止故障擴散到整個系統。
  • 加速系統恢復:通過熔斷機制,系統能夠更快地檢測到服務的故障狀態,并在熔斷器打開后,等待一段時間再嘗試恢復調用。這有助于目標服務有足夠的時間進行自我修復,從而加速整個系統的恢復過程。
  • 提供更好的用戶體驗: 服務降級雖然能夠保證核心功能的可用性,但在高負載或持續失敗的情況下,用戶可能會頻繁遇到降級后的功能或默認響應,影響使用體驗。服務熔斷器通過控制調用頻率和恢復策略,能夠在保證必要降級的同時,減少對用戶的負面影響。
責任編輯:趙寧寧 來源: 猿java
相關推薦

2025-04-03 10:04:53

服務降級分布式系統系統

2025-10-16 03:00:00

HTTPgRPCAPI

2023-09-12 14:02:30

數組vector

2023-10-24 15:15:26

HTTPWebSocket

2021-10-12 18:48:07

HTTP 協議Websocket網絡通信

2024-02-18 12:39:15

C++autodecltype

2024-02-22 10:34:00

NULLC++nullptr

2025-04-14 10:00:00

負載均衡Java開發

2024-11-26 07:37:22

2016-01-28 10:04:09

Jenkins運維持續交付

2025-11-26 07:41:14

2020-05-13 15:57:59

聚類分析算法監督學習

2025-01-07 14:36:12

2023-01-31 17:24:21

DPUCPUGPU

2023-09-14 16:02:27

2023-04-07 15:30:24

操作系統ChatGPT

2024-04-03 08:53:16

PythonGIL線程

2024-11-29 16:02:17

2023-06-01 07:50:42

JSDocTypeScriptAPI

2015-06-19 06:41:45

生命科學云計算集群計算
點贊
收藏

51CTO技術棧公眾號

久久精品小视频| 超碰av在线免费观看| 日本成人在线电影网| 鲁一鲁一鲁一鲁一av| 国产做受高潮69| 日韩亚洲国产欧美| 欧美videos极品另类| 欧美人与物videos| 一区二区三区在线免费| 欧美尤物美女在线| 97国产suv精品一区二区62| 日韩欧美国产黄色| 亚洲精品国产九九九| 午夜老司机精品| 亚洲毛片在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 久久久久久久影视| 日韩免费av在线| 福利电影一区二区| 国产1区2区在线| 欧美日本亚洲视频| 国产日本亚洲高清| 久久精品国产精品亚洲毛片| 欧美与动交zoz0z| 亚洲人成网站色ww在线| 亚洲性人人天天夜夜摸| 538在线视频| 久久偷窥视频| 久久久99久久| 色老板亚洲精品一区| 欧美成人激情免费网| 国产精品777777在线播放| 欧美日韩在线视频观看| 新版的欧美在线视频| 国产成人精品一区| 国产老妇另类xxxxx| 黄色在线视频观看网站| 精品中文字幕视频| 精品久久久久久综合日本欧美| 成人美女在线视频| 中文字幕不卡| 欧美成人小视频| 精品中文字幕一区二区| 欧美一区二区三区| 国产精品久久久久久亚洲影视| 成人一二三区视频| 黄网站在线观看| 亚洲2020天天堂在线观看| 国产精品18久久久久久久久| 在线免费看黄网站| 成人一区二区三区四区| 亚洲一级电影视频| 91麻豆精品激情在线观看最新| 国产肉体ⅹxxx137大胆| 日韩免费视频一区二区| 欧美国产一区视频在线观看| 欧美18一12sex性处hd| 日韩在线免费视频| ...av二区三区久久精品| 午夜国产精品视频免费体验区| 国产美女福利在线| 50度灰在线观看| 26uuu日韩精品一区二区| 正在播放亚洲一区| 亚洲三级在线看| 天天综合精品| 欧美亚视频在线中文字幕免费| 日韩第一区第二区| jizz18欧美18| 日韩大陆av| 欧美巨大丰满猛性社交| 玖玖在线免费视频| 好色先生视频污| 国产日韩在线视频| 亚洲第一中文字幕在线观看| 一本大道亚洲视频| 在线成人免费视频| 亚洲婷婷国产精品电影人久久| 国产精品国内免费一区二区三区| 成人黄视频在线观看| 久久手机视频| 69**夜色精品国产69乱| 久久久91精品国产一区不卡| 国产精品亚洲综合天堂夜夜| 日韩三级视频在线看| 2024国产精品| 国产精品一区高清| 久久久加勒比| 你懂的在线播放| 天天操天天爽天天射| 欧美性潮喷xxxxx免费视频看| 91久久在线播放| 91精品国产91久久久久久久久 | 337p亚洲精品色噜噜噜| 91蝌蚪国产九色| 1024国产精品| 超碰97久久| 中日韩免费毛片| 麻豆传媒一区| 尤物精品国产第一福利三区 | 综合久久一区| 欧美日韩精品| 久久久9色精品国产一区二区三区| 91短视频在线观看| 精品欧美一区二区精品久久| 国产视频精品一区二区三区| 久久久久国产精品厨房| 91精品国产91久久久久久黑人| 成人免费网址| 成年人视频在线免费| 成人在线观看视频网站| 亚洲白虎美女被爆操| 中文字幕 久热精品 视频在线| 亚洲情侣在线| 亚洲爱爱视频| 你懂得在线网址| 国产婷婷一区二区三区| 91亚洲精品久久久| 亚洲无限av看| 欧美日韩中国免费专区在线看| 韩日av一区二区| 嫩草一区二区三区| 欧美少妇网站| 日本a级黄色| 中文字幕久久一区| 国产精品爽黄69天堂a| 亚洲精品一区二区三区精华液| 日本一区二区免费在线观看视频| 亚洲激情婷婷| 免费看久久久| 欧美伦理免费在线| 成色在线视频| 久久观看最新视频| 亚洲一区二区三区香蕉| 九九热这里只有精品6| 日韩久久久久久| 亚洲va欧美va国产va天堂影院| 不卡电影一区二区三区| 国产亚洲成人一区| 精品国精品国产自在久国产应用 | 99精品国产99久久久久久福利| 亚洲精品三区| 91在线不卡| 日本加勒比高清在线| 成人短视频在线看| 91久久综合亚洲鲁鲁五月天| 亚洲视频电影图片偷拍一区| 视色,视色影院,视色影库,视色网| 丝袜美女写真福利视频| 国产精品普通话对白| 国产一区二区| 成年男女免费视频网站不卡| 污视频在线观看免费| 亚欧无线一线二线三线区别| 国产欧美韩日| 日本欧美爱爱爱| 最近2019中文字幕在线高清| 欧美一级二级三级蜜桃| 性久久久久久久久久久久| 久久精品视频在线看| 老司机免费视频一区二区三区| 亚洲破处大片| 精品72久久久久中文字幕| 国产精品亚洲欧美日韩一区在线| 国产高清中文字幕在线| 欧美69xxx| 欧美视频免费一区二区三区| 国产黄色高清在线| 亚洲欧美激情网| 日韩精品xxxx| 懂色av粉嫩av蜜臀av| 日韩电影免费观看在| 国产自产精品| yy111111少妇影院日韩夜片 | 日本免费黄色小视频| 男男gay无套免费视频欧美 | 濑亚美莉一二区在线视频| 亚洲一区二区三区久久久| 国产一二三四在线视频| 精品日韩在线播放| 视频一区二区在线观看| 精品91免费| 国产精品夜夜夜一区二区三区尤| 国产精品麻豆va在线播放| 热re91久久精品国99热蜜臀| 久久久久久久久久av| 欧美成人精品在线观看| 婷婷综合六月| 精品视频在线免费| 国内精品视频一区二区三区| 黄色av免费在线| 日韩影院精彩在线| 日韩毛片在线观看| 日韩第一页在线| caoporn国产精品| 亚洲一区二区三区乱码aⅴ| 免费看啪啪网站| 亚洲最新av网址| 伊人青青综合网站| 精品国产自在精品国产浪潮|