日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

斷路器在項目中的重要性:保護遠程接口調用的穩定運行

來源: 責編: 時間:2023-11-06 08:52:52 271觀看
導讀環境:SpringBoot2.4.12 + Spring Cloud Hoxton.SR12簡介Spring Cloud 斷路器提供了不同斷路器實現之間的抽象。它提供了在應用程序中使用的一致API,讓開發人員選擇最適合應用程序需求的斷路器實現。Spring Cloud支持以

環境:SpringBoot2.4.12 + Spring Cloud Hoxton.SR12AQr28資訊網——每日最新資訊28at.com

簡介

Spring Cloud 斷路器提供了不同斷路器實現之間的抽象。它提供了在應用程序中使用的一致API,讓開發人員選擇最適合應用程序需求的斷路器實現。AQr28資訊網——每日最新資訊28at.com

Spring Cloud支持以下斷路器實現:AQr28資訊網——每日最新資訊28at.com

  • Resilience4J
  • Sentinel
  • Spring Retry

阻塞式應用

要在代碼中創建斷路器,可以使用CircuitBreakerFactory API。當你在類路徑中包含Spring Cloud Circuit Breaker starter時,將自動為你創建實現此API的bean。下面的例子展示了如何使用這個API的一個簡單例子:AQr28資訊網——每日最新資訊28at.com

<dependency>  <groupId>org.springframework.cloud</groupId>  <artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId></dependency>
或者(反應式)
<dependency>  <groupId>org.springframework.cloud</groupId>  <artifactId>spring-cloud-starter-circuitbreaker-reactor-resilience4j</artifactId></dependency>

簡單API應用AQr28資訊網——每日最新資訊28at.com

@Servicepublic static class UsersService {  private RestTemplate rest;  private CircuitBreakerFactory cbFactory;  public DemoControllerService(RestTemplate rest, CircuitBreakerFactory cbFactory) {    this.rest = rest;    this.cbFactory = cbFactory;  }  public Users getUser() {    // 這里remoteUser是唯一標識,下面你會看到為這id配置    return cbFactory.create("remoteUser").run(() -> rest.getForObject("/100", Users.class), throwable -> "用戶用戶信息失敗");  }}

CircuitBreakerFactory.create API創建一個名為CircuitBreaker的類實例。run方法接受一個Supplier和一個Function。Supplier是你要包裝在斷路器中的代碼。Function是在斷路器跳閘時運行的后備功能。Function被傳遞導致觸發回退的Throwable。如果你不想提供一個回退,你可以選擇排除它。AQr28資訊網——每日最新資訊28at.com

反應式應用

如果Project Reactor位于類路徑上,你還可以為響應式代碼使用ReactiveCircuitBreakerFactory。下面的例子展示了如何做到這一點:AQr28資訊網——每日最新資訊28at.com

@Servicepublic static class DemoControllerService {    private ReactiveCircuitBreakerFactory cbFactory;    private WebClient webClient;    public DemoControllerService(WebClient webClient, ReactiveCircuitBreakerFactory cbFactory) {        this.webClient = webClient;        this.cbFactory = cbFactory;    }    public Mono<Users> getUser() {        return webClient.get().uri("/100").retrieve().bodyToMono(Users.class).transform(        it -> cbFactory.create("remoteUser").run(it, throwable -> return Mono.just("獲取用戶失敗")));    }}

ReactiveCircuitBreakerFactory.create API創建一個名為ReactiveCircuitBreaker的類實例。run方法將一個Mono或Flux包在一個斷路器中。你可以選擇配置一個回退函數,該函數將在斷路器被觸發并傳遞導致故障的Throwable時被調用。AQr28資訊網——每日最新資訊28at.com

配置

你可以通過創建Customizer類型的bean來配置斷路器工廠。Customizer接口有一個方法(稱為customize)AQr28資訊網——每日最新資訊28at.com

// 對斷路器工廠進行自定義@Componentpublic class PackCircuitBreakerCustomizer implements Customizer<Resilience4JCircuitBreakerFactory> {  @Override  public void customize(Resilience4JCircuitBreakerFactory tocustomize) {    tocustomize.configure(builder -> {      // 配置超時      builder.timeLimiterConfig(          TimeLimiterConfig.custom()          .timeoutDuration(Duration.ofMillis(3000))          .build()      ) ;      // 配置熔斷      builder.circuitBreakerConfig(          CircuitBreakerConfig.custom()          .failureRateThreshold(0.1f) // 當故障率大于等于故障閾值時,斷路器切換到開路狀態,開始短路調用。          .minimumNumberOfCalls(3) // 斷路器打開的前提是至少有3次的調用          .build()      ) ;    }, "a1", "a2", "a3", "remoteUser") ;// 這里指定了只有哪些id都會被應用這些配置    // 為所有的斷路器提供默認配置    tocustomize.configureDefault(id -> new Resilience4JConfigBuilder(id)        .circuitBreakerConfig(CircuitBreakerConfig.ofDefaults())        .timeLimiterConfig(TimeLimiterConfig.ofDefaults()).build());  }  }

AQr28資訊網——每日最新資訊28at.com

有關如何自定義給定實現的詳細信息,請參閱以下文檔:AQr28資訊網——每日最新資訊28at.com

Resilience4J:AQr28資訊網——每日最新資訊28at.com

https://docs.spring.io/spring-cloud-commons/spring-cloud-circuitbreaker/current/reference/html/spring-cloud-circuitbreaker.html#configuring-resilience4j-circuit-breakersAQr28資訊網——每日最新資訊28at.com

Sentinel:AQr28資訊網——每日最新資訊28at.com

https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/spring-cloud-alibaba-docs/src/main/asciidoc/circuitbreaker-sentinel.adoc#circuit-breaker-spring-cloud-circuit-breaker-with-sentinel%E2%80%94%E2%80%8Bconfiguring-sentinel-circuit-breakersAQr28資訊網——每日最新資訊28at.com

Spring Retry:AQr28資訊網——每日最新資訊28at.com

https://docs.spring.io/spring-cloud-circuitbreaker/docs/current/reference/html/spring-cloud-circuitbreaker.html#configuring-spring-retry-circuit-breakersAQr28資訊網——每日最新資訊28at.com

一些 CircuitBreaker 實現,如Resilience4JCircuitBreaker,在每次調用CircuitBreaker#run時調用自定義方法。它可能是低效的。在這種情況下,你可以使用CircuitBreaker#once方法。AQr28資訊網——每日最新資訊28at.com

下面的例子展示了io.github.resilience4j.circuitbreaker.CircuitBreaker的方法。斷路器消耗事件。AQr28資訊網——每日最新資訊28at.com

Customizer.once(circuitBreaker -> {  circuitBreaker.getEventPublisher()    .onStateTransition(event -> log.info("{}: {}", event.getCircuitBreakerName(), event.getStateTransition()));}, CircuitBreaker::getName)

完畢?。?!AQr28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-17158-0.html斷路器在項目中的重要性:保護遠程接口調用的穩定運行

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 聊聊Spring 微服務和多租戶

下一篇: AIDL在Android應用程序中的重要作用

標簽:
  • 熱門焦點
  • 小米官宣:2023年上半年出貨量中國第一!

    今日早間,小米電視官方微博帶來消息,稱2023年小米電視上半年出貨量達到了中國第一,同時還表示小米電視的巨屏風暴即將開始。“公布一個好消息2023年#小米電視上半年出貨量中國
  • 太卷!Redmi MAX 100英寸電視便宜了:12999元買Redmi史上最大屏

    8月5日消息,從小米商城了解到,Redmi MAX 100英寸巨屏電視日前迎來官方優惠,到手價12999元,比發布價便宜了7000元,在大屏電視市場開卷。據了解,Redmi MAX 100
  • 三言兩語說透設計模式的藝術-簡單工廠模式

    一、寫在前面工廠模式是最常見的一種創建型設計模式,通常說的工廠模式指的是工廠方法模式,是使用頻率最高的工廠模式。簡單工廠模式又稱為靜態工廠方法模式,不屬于GoF 23種設計
  • Automa-通過連接塊來自動化你的瀏覽器

    1、前言通過瀏覽器插件可實現自動化腳本的錄制與編寫,具有代表性的工具就是:Selenium IDE、Katalon Recorder,對于簡單的業務來說可快速實現自動化的上手工作。Selenium IDEKat
  • 企業采用CRM系統的11個好處

    客戶關系管理(CRM)軟件可以為企業提供很多的好處,從客戶保留到提高生產力。  CRM軟件用于企業收集客戶互動,以改善客戶體驗和滿意度?! RM軟件市場規模如今超過580
  • 如何使用JavaScript創建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經瀏覽過購物網站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區域,以便瀏覽。結合這個小小的重要功能可以大大改善您網站的用戶體驗
  • 只需五步,使用start.spring.io快速入門Spring編程

    步驟1打開https://start.spring.io/,按照屏幕截圖中的內容創建項目,添加 Spring Web 依賴項,并單擊“生成”按鈕下載 .zip 文件,為下一步做準備。請在進入步驟2之前進行解壓。圖
  • 拼多多APP上線本地生活入口,群雄逐鹿萬億市場

    Tech星球(微信ID:tech618)文 | 陳橋輝 Tech星球獨家獲悉,拼多多在其APP內上線了&ldquo;本地生活&rdquo;入口,位置較深,位于首頁的&ldquo;充值中心&rdquo;內,目前主要售賣美食相關的
  • 華為開發者大會2023日程公開:開設鴻蒙HarmonyOS 4體驗區

    IT之家 7 月 31 日消息,華為今日公布了 HDC.Together 開發者大會 2023 的詳細日程。整場大會將于 8 月 4 日-6 日之間舉行,屆時將發布最新一代鴻蒙 H
Top 主站蜘蛛池模板: 长阳| 德化县| 元氏县| 师宗县| 巴楚县| 三江| 常宁市| 汕尾市| 搜索| 连平县| 治多县| 衡东县| 双桥区| 大同县| 齐齐哈尔市| 岗巴县| 时尚| 兴城市| 宿松县| 泗阳县| 洪雅县| 广宁县| 炎陵县| 洛阳市| 富锦市| 中阳县| 白银市| 玛曲县| 巴青县| 舞阳县| 建宁县| 焉耆| 苍梧县| 沂源县| 龙胜| 榆树市| 周宁县| 泸定县| 盐城市| 丹巴县| 白水县|