日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

gateway sentinel 熔断 不起作用_Spring Cloud Alibaba集训营第五天(服务熔断和限流)

發布時間:2023/12/19 javascript 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gateway sentinel 熔断 不起作用_Spring Cloud Alibaba集训营第五天(服务熔断和限流) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:為什么需要流控降級

我們的生產環境經常會出現一些不穩定的情況,如:

  • 大促時瞬間洪峰流量導致系統超出最大負載,load 飆高,系統崩潰導致用戶無法下單
  • “黑馬”熱點商品擊穿緩存,DB 被打垮,擠占正常流量
  • 調用端被不穩定服務拖垮,線程池被占滿,導致整個調用鏈路卡死

這些不穩定的場景可能會導致嚴重后果。大家可能想問:如何做到均勻平滑的用戶訪問?如何預防流量過大或服務不穩定帶來的影響?這時候我們就要請出微服務穩定性的法寶 —— 高可用流量防護,其中重要的手段就是流量控制和熔斷降級,它們是保障微服務穩定性重要的一環。

為什么需要流量控制?

流量是非常隨機性的、不可預測的。前一秒可能還風平浪靜,后一秒可能就出現流量洪峰了(例如雙十一零點的場景)。然而我們系統的容量總是有限的,如果突然而來的流量超過了系統的承受能力,就可能會導致請求處理不過來,堆積的請求處理緩慢,CPU/Load 飆高,最后導致系統崩潰。因此,我們需要針對這種突發的流量來進行限制,在盡可能處理請求的同時來保障服務不被打垮,這就是流量控制。

為什么需要熔斷降級?

一個服務常常會調用別的模塊,可能是另外的一個遠程服務、數據庫,或者第三方 API 等。例如,支付的時候,可能需要遠程調用銀聯提供的 API;查詢某個商品的價格,可能需要進行數據庫查詢。然而,這個被依賴服務的穩定性是不能保證的。如果依賴的服務出現了不穩定的情況,請求的響應時間變長,那么調用服務的方法的響應時間也會變長,線程會產生堆積,最終可能耗盡業務自身的線程池,服務本身也變得不可用。

現代微服務架構都是分布式的,由非常多的服務組成。不同服務之間相互調用,組成復雜的調用鏈路。以上的問題在鏈路調用中會產生放大的效果。復雜鏈路上的某一環不穩定,就可能會層層級聯,最終導致整個鏈路都不可用。因此我們需要對不穩定的弱依賴服務進行熔斷降級,暫時切斷不穩定調用,避免局部不穩定因素導致整體的雪崩。

Sentinel: 高可用護航的利器

Sentinel 是阿里巴巴開源的,面向分布式服務架構的高可用防護組件,主要以流量為切入點,從流量控制、流量整形、熔斷降級、系統自適應保護、熱點防護等多個維度來幫助開發者保障微服務的穩定性。Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺、冷啟動、消息削峰填谷、自適應流量控制、實時熔斷下游不可用服務等,是保障微服務高可用的利器,原生支持 Java/Go/C++ 等多種語言,并且提供 Istio/Envoy 全局流控支持來為 Service Mesh 提供高可用防護的能力。

Sentinel 的技術亮點:

  • 高度可擴展能力:基礎核心 + SPI 接口擴展能力,用戶可以方便地擴展流控、通信、監控等功能
  • 多樣化的流量控制策略(資源粒度、調用關系、流控指標、流控效果等多個維度),提供分布式集群流控的能力
  • 熱點流量探測和防護
  • 對不穩定服務進行熔斷降級和隔離
  • 全局維度的系統負載自適應保護,根據系統水位實時調節流量
  • 覆蓋 API Gateway 場景,為 Spring Cloud Gateway、Zuul 提供網關流量控制的能力
  • 實時監控和規則動態配置管理能力

一些普遍的使用場景:

  • 在服務提供方(Service Provider)的場景下,我們需要保護服務提供方自身不被流量洪峰打垮。這時候通常根據服務提供方的服務能力進行流量控制,或針對特定的服務調用方進行限制。我們可以結合前期壓測評估核心接口的承受能力,配置 QPS 模式的限流,當每秒的請求量超過設定的閾值時,會自動拒絕多余的請求。
  • 為了避免調用其他服務時被不穩定的服務拖垮自身,我們需要在服務調用端(Service Consumer)對不穩定服務依賴進行隔離和熔斷。手段包括信號量隔離、異常比例降級、RT 降級等多種手段。
  • 當系統長期處于低水位的情況下,流量突然增加時,直接把系統拉升到高水位可能瞬間把系統壓垮。這時候我們可以借助 Sentinel 的 WarmUp 流控模式控制通過的流量緩慢增加,在一定時間內逐漸增加到閾值上限,而不是在一瞬間全部放行。這樣可以給冷系統一個預熱的時間,避免冷系統被壓垮。
  • 利用 Sentinel 的勻速排隊模式進行“削峰填谷”,把請求突刺均攤到一段時間內,讓系統負載保持在請求處理水位之內,同時盡可能地處理更多請求。
  • 利用 Sentinel 的網關流控特性,在網關入口處進行流量防護,或限制 API 的調用頻率。

Sentinel 有著豐富的開源生態。Sentinel 開源不久就被納入 CNCF Landscape 版圖,并且也成為 Spring Cloud 官方推薦的流控降級組件之一。社區提供 Spring Cloud、Dubbo、gRPC、Quarkus 等常用微服務框架的適配,開箱即用;同時支持 Reactive 生態,支持 Reactor、Spring WebFlux 異步響應式架構。Sentinel 也在逐漸覆蓋 API Gateway 和 Service Mesh 場景,在云原生架構中發揮更大的作用。

在原來的 Spring Cloud Netflix 系列中,有自帶的熔斷組件 Hystrix ,是 Netflix 公司提供的一個開源的組件,提供了熔斷、隔離的這些特性,不過 Hystrix 在 2018 年 11 月份開始,就不再迭代開發,進入維護的模式。同年開源的 Spring Cloud Alibaba(SCA) 提供了一站式的解決方案,默認為 Sentinel 整合了 Spring Web、RestTemplate、FeignClient 和 Spring WebFlux。Sentinel 在 Spring Cloud 生態中,不僅補全了 Hystrix 在 Servlet、RestTemplate 和 API Gateway 這一塊的空白,而且還完全兼容了 Hystrix 在 FeignClient 中限流降級的用法,并且支持運行時靈活地配置和調整限流降級規則。同時 SCA 還集成了 Sentinel 提供的 API gateway 流控模塊,可以無縫支持 Spring Cloud Gateway 和 Zuul 網關的流控降級。

Spring Cloud Alibaba Sentinel 服務限流/熔斷實戰

下面到了動手時間了!

我們已經將案例代碼集成在沙箱中,通過點擊鏈接直接訪問。

我們結合一個實例來對 Spring Cloud 服務限流/熔斷進行實戰。我們的實例項目由四個模塊構成:

  • service-api: 服務接口定義,供 consumer/provider 引用
  • dubbo-provider: Dubbo 服務端,對外提供一些服務
  • web-api-demo: Spring Boot Web 應用,其中的一些 API 會作為 consumer 來調用 dubbo-provider 獲取結果。里面一共定義了三個 API path:
  • /demo/hello: 接受一個 name 參數,會 RPC 調用后端的 FooService:sayHello(name) 方法。
  • /demo/time:調用后端的 FooService:getCurrentTime 方法獲取當前時間;里面可以通過 slow 請求參數模擬慢調用。
  • /demo/bonjour/{name}: 直接調用本地 DemoService 服務。
  • demo-gateway: Spring Cloud Gateway 網關,作為整個項目的訪問入口,將流量轉發至后端服務或第三方服務。我們的入口 URL 訪問都會經過該 API gateway。demo-gateway 的路由配置如下:
spring:cloud:gateway:enabled: truediscovery:locator:# route ID 轉化小寫lower-case-service-id: trueroutes:- id: foo-service-routeuri: http://localhost:9669/predicates:- Path=/demo/**- id: httpbin-routeuri: https://httpbin.orgpredicates:- Path=/httpbin/**filters:- RewritePath=/httpbin/(?<segment>.*), /${segment}

這個路由配置包含兩個路由:

  • foo-service-route: 會將 /demo/ 開頭的訪問路由到 localhost:9669 后端服務上面,即對應我們的 Web 服務。我們訪問示例中的 API 都會經過這個路由,比如 localhost:8090/demo/time。
  • httpbin-route: 這是一個示例路由,它會將 /httpbin/ 開頭的訪問路由到 https://httpbin.org 這個示例網站上,比如 localhost:8090/httpbin/json 實際會映射到 https://httpbin.org/json 上面。

同時我們的環境也包含啟動好的 Sentinel 控制臺,可以直接訪問并供各個服務接入。對應的地址:http://139.196.203.133:8080

下面我們來一步一步操作接入 SCA Sentinel 并通過控制臺/Nacos 動態數據源配置流控降級規則來驗證效果。

spring-cloud-alibaba-dependencies 配置

首先第一步我們在項目的父 pom 里面導入最新版本的 spring-cloud-alibaba-dependencies,這樣我們在實際引入 SCA 相關依賴的時候就不需要指定版本號了:

<dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.2.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies> </dependencyManagement>

服務接入 SCA Sentinel

首先我們分別為三個服務模塊引入 Spring Cloud Alibaba Sentinel 依賴:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>

starter 會自動對 Sentinel 的適配模塊進行配置,只需要簡單的配置即可快速接入 Sentinel 并連接到 Sentinel 控制臺。

對于 Dubbo 服務,我們還需要額外引入 Dubbo 的適配模塊。Sentinel 為 Apache Dubbo 提供開箱即用的整合模塊,僅需引入 sentinel-apache-dubbo-adapter 依賴即可接入 Dubbo 自動埋點統計(支持 provider 和 consumer):

<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-apache-dubbo-adapter</artifactId><version>1.8.0</version> </dependency>

我們在 web-api-demo 和 dubbo-provider 兩個應用的 pom 文件添加 adapter 依賴,這樣兩個應用的 Dubbo consumer/provider 接口就可以自動被 Sentinel 統計。

對于 Spring Cloud Gateway、Zuul 1.x 等網關,我們還需要在上面 SCA 依賴的基礎上額外引入 spring-cloud-alibaba-sentinel-gateway 依賴:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId> </dependency>

這個依賴會自動為網關添加 Sentinel 相關的配置,從而可以讓 API gateway 自動接入 Sentinel。我們在 demo-gateway 應用的 pom 文件里面添加這個依賴,這樣我們的 gateway 應用就可以接入 Sentinel 了。

引入依賴之后,我們只需要進行簡單的配置即可快速接入 Sentinel 控制臺。我們可以在 application.properties 文件里面配置應用名和連接控制臺的地址,以 web-api-demo 為例:

spring.application.name=foo-web spring.cloud.sentinel.transport.dashboard=localhost:8080

其中 spring.application.name 相信大家都比較熟悉了,這里 Spring Cloud Alibaba Sentinel 會自動提取這個值作為接入應用的 appName。同時我們通過 spring.cloud.sentinel.transport.dashboard 來配置要連接的控制臺地址和端口。

完成以上的配置后,我們可以依次啟動 dubbo-provider、web-api-demo 和 demo-gateway 應用,并通過網關入口訪問 localhost:8090/demo/time 獲取當前時間。觸發服務后,我們稍后可以在 Sentinel 控制臺看到我們的三個應用,可以在監控頁面看到訪問信息,代表接入成功。

我們可以在每個應用的簇點鏈路頁面看到當前應用的一些埋點調用,比如 Web 應用可以看到 Web URL 和 Dubbo consumer 調用:

流控規則

下面我們來配一條最簡單的流控規則。在 Dubbo provider 端,我們進入簇點鏈路頁面,針對 com.alibaba.csp.sentinel.demo.dubbo.FooService:getCurrentTime(boolean) 這個服務調用配置限流規則(需要有過訪問量才能看到)。我們配一條 QPS 為 1 的流控規則,這代表針對該服務方法的調用每秒鐘不能超過 1 次,超出會直接拒絕。

點擊“新增”按鈕,成功添加規則。我們可以在瀏覽器反復請求 localhost:8090/demo/time(頻率不要太慢),可以看到會出現限流異常信息(Dubbo provider 默認的限流處理邏輯是拋出異常,該異常信息由 Dubbo 直接返回,并由 Spring 展示為默認 error 頁面):

同時我們也可以在“實時監控”頁面看到實時的訪問量和拒絕量:

我們同樣也可以在 Web API 處配置限流規則,觀察效果。Spring Web 默認的限流處理邏輯是返回默認的提示信息(Blocked by Sentinel),狀態碼為 429。在后面的章節我們會介紹如何自定義流控處理邏輯。

了解了限流的基本用法,大家可能想問:生產環境我需要針對每個接口都去配置流控規則嗎?閾值不會配怎么辦?其實,限流降級的配置是需要結合容量規劃、依賴梳理來做的。我們可以借助 JMeter 或 阿里云 PTS 等壓測工具對我們的服務進行全鏈路壓測,了解每個服務的最大承受能力,來確定核心接口的最大容量并作為 QPS 閾值。

網關流控規則

Sentinel 對 API Gateway 流控的場景進行了定制,支持針對網關的路由(如上面 gateway 定義的 foo-service-route)或自定義的 API 分組進行流控,支持針對請求屬性(如某個 header)進行流控。用戶可以在 Sentinel 控制臺 自定義 API 分組,可以看做是一些 URL 匹配的組合。比如我們可以定義一個 API 叫 my_api,請求 path 模式為 /foo/** 和 /baz/** 的都歸到 my_api 這個 API 分組下面。限流的時候可以針對這個自定義的 API 分組維度進行限流。

下面我們在控制臺針對 gateway 配置一條網關流控規則。我們可以看到 API Gateway 的控制臺頁面與普通應用的頁面有一些差異,這些就是針對網關場景的定制。Sentinel 網關流控規則支持提取某個 route 的請求屬性,包括 remote IP、header、URL 參數、cookie 等,支持自動統計其中的熱點值并分別進行限制,也支持針對某個具體值進行限制(比如給某個 uid 限量)。

我們給 foo-service-route 這個路由配一條針對請求屬性的網關流控規則。這條規則會針對 URL 參數中提取出來的每個熱點 uid 參數分別進行限制,每分鐘的請求量最多允許 2 次。

保存規則后,我們可以構造一些向后端服務的請求,攜帶上不同的 uid 參數(即使沒有用到),比如 localhost:8090/demo/time?uid=xxx。我們可以觀察到,每個 uid 的訪問每分鐘超出兩次后會出現限流頁面。

關于 Sentinel 網關流控的詳細配置指南和實現原理請參考 網關流控文檔。

熔斷降級規則

熔斷降級通常用于自動切斷不穩定的服務,防止調用方被拖垮導致級聯故障。熔斷降級規則通常在調用端,針對弱依賴調用進行配置,在熔斷時返回預定義好的 fallback 值,這樣可以保證核心鏈路不被不穩定的旁路影響。

Sentinel 提供以下幾種熔斷策略:

  • 慢調用比例 (SLOW_REQUEST_RATIO):選擇以慢調用比例作為閾值,需要設置允許的慢調用 RT(即最大的響應時間),請求的響應時間大于該值則統計為慢調用。當單位統計時長(statIntervalMs,默認為 1s)內請求數目大于設置的最小請求數目,并且慢調用的比例大于閾值,則接下來的熔斷時長內請求會自動被熔斷。經過熔斷時長后熔斷器會進入探測恢復狀態(HALF-OPEN 狀態),若接下來的一個請求響應時間小于設置的慢調用 RT 則結束熔斷,若大于設置的慢調用 RT 則會再次被熔斷。
  • 異常比例 (ERROR_RATIO):當單位統計時長內請求數目大于設置的最小請求數目,并且異常的比例大于閾值,則接下來的熔斷時長內請求會自動被熔斷。經過熔斷時長后熔斷器會進入探測恢復狀態(HALF-OPEN 狀態),若接下來的一個請求成功完成(沒有錯誤)則結束熔斷,否則會再次被熔斷。異常比率的閾值范圍是 [0.0, 1.0],代表 0% - 100%。
  • 異常數 (ERROR_COUNT):當單位統計時長內的異常數目超過閾值之后會自動進行熔斷。經過熔斷時長后熔斷器會進入探測恢復狀態(HALF-OPEN 狀態),若接下來的一個請求成功完成(沒有錯誤)則結束熔斷,否則會再次被熔斷。

下面我們來在 Web 應用中針對 Dubbo consumer 來配置慢調用熔斷規則,并模擬慢調用來觀察效果。我們在 web-api-demo 中針對 com.alibaba.csp.sentinel.demo.dubbo.FooService 服務調用配置熔斷降級規則。

控制臺配置的統計時長默認為 1s。在上面的這條規則中,我們設定慢調用臨界值為 50ms,響應時間超出 50ms 即記為慢調用。當統計時長內的請求數 >=5 且慢調用的比例超出我們配置的閾值(80%)就會觸發熔斷,熔斷時長為 5s,經過熔斷時長后會允許一個請求探測通過,若請求正常則恢復,否則繼續熔斷。

我們的實例中 /demo/time API 可以通過 slow 請求參數模擬慢調用,當 slow=true 時該請求耗時會超過 100ms。我們可以用 ab 等壓測工具或腳本,批量請求 localhost:8090/demo/time?slow=true,可以觀察到熔斷的返回

如果我們一直模擬慢調用,我們可以觀察到熔斷后每 5s 會允許通過一個請求,但該請求仍然是慢調用,會重新打回熔斷,無法恢復。我們可以在觸發熔斷后,等待一段時間后手動發一個不帶 slow=true 的正常請求,然后再進行請求,可以觀察到熔斷恢復。

需要注意的是,即使服務調用方引入了熔斷降級機制,我們還是需要在 HTTP 或 RPC 客戶端配置請求超時時間,來做一個兜底的防護。

注解方式自定義埋點

剛才我們看到的埋點都是 Sentinel 適配模塊提供的自動埋點。有的時候自動埋點可能沒法滿足我們的需求,我們希望在某個業務邏輯的位置進行限流,能不能做到呢?當然可以!Sentinel 提供兩種方式進行自定義埋點:SphU API 和 @SentinelResource 注解,前者最為通用但是代碼比較繁雜,耦合度較高;注解方式侵入性較低,但有使用場景的限制。這里我們來動手在 Web 應用的 DemoService 上添加注解,來達到針對本地服務埋點的目標。

在 DemoService 中我們實現了一個簡單的打招呼的服務:

@Service public class DemoService {public String bonjour(String name) {return "Bonjour, " + name;} }

下面我們給 bonjour 這個函數添加 @SentinelResource 注解,注解的 value 代表這個埋點的名稱(resourceName),會顯示在簇點鏈路/監控頁面。

@SentinelResource(value = "DemoService#bonjour") public String bonjour(String name)

加上該注解后,再通過網關訪問 /demo/bonjour/{name} 這個 API 的時候,我們就可以在簇點鏈路頁面看到我們自定義的 DemoService#bonjour 埋點了。

添加注解埋點只是第一步。一般在生產環境中,我們希望在這些自定義埋點發生限流的時候,有一些 fallback 邏輯,而不是直接對外拋出異常。這里我們可以寫一個 fallback 函數:

public String bonjourFallback(Throwable t) {if (BlockException.isBlockException(t)) {return "Blocked by Sentinel: " + t.getClass().getSimpleName();}return "Oops, failed: " + t.getClass().getCanonicalName(); }

我們的 fallback 函數接受一個 Throwable 參數,可以從中獲取異常信息。Sentinel 注解的 fallback 會捕獲業務異常和流控異常(即 BlockException 及其子類),我們可以在 fallback 邏輯里面進行相應的處理(如日志記錄),并返回 fallback 的值。

注意:Sentinel 注解對 fallback 和 blockHandler 函數的方法簽名有要求,具體請參考此處文檔。

寫好 fallback 函數的實現后,我們在 @SentinelResource 注解里面指定一下:

@SentinelResource(value = "DemoService#bonjour", defaultFallback = "bonjourFallback") public String bonjour(String name)

這樣當我們自定義的 DemoService#bonjour 資源被限流或熔斷的時候,請求會走到 fallback 的邏輯中,返回 fallback 結果,而不會直接拋出異常。我們可以配一個 QPS=1 的限流規則,然后快速請求后觀察返回值:

? ~ curl http://localhost:8090/demo/bonjour/Sentinel Bonjour, Sentinel ? ~ curl http://localhost:8090/demo/bonjour/Sentinel Blocked by Sentinel: FlowException注意:使用 @SentinelResource 注解要求對應的類必須由 Spring 托管(即為 Spring bean),并且不能是內部調用(沒法走到代理),不能是 private 方法。Sentinel 注解生效依賴 Spring AOP 動態代理機制。

配置自定義的流控處理邏輯

Sentinel 的各種適配方式均支持自定義的流控處理邏輯。以 Spring Web 適配為例,我們只需要提供自定義的 BlockExceptionHandler 實現并注冊為 bean 即可為 Web 埋點提供自定義處理邏輯。其中 BlockExceptionHandler 的定義如下:

public interface BlockExceptionHandler {// 在此處處理限流異常,可以跳轉到指定頁面或返回指定的內容void handle(HttpServletRequest request, HttpServletResponse response, BlockException e) throws Exception; }

我們的 Web 應用中提供了 Web 埋點自定義流控處理邏輯的示例:

@Configuration public class SentinelWebConfig {@Beanpublic BlockExceptionHandler sentinelBlockExceptionHandler() {return (request, response, e) -> {// 429 Too Many Requestsresponse.setStatus(429);PrintWriter out = response.getWriter();out.print("Oops, blocked by Sentinel: " + e.getClass().getSimpleName());out.flush();out.close();};} }

該 handler 會獲取流控類型并打印返回信息,返回狀態碼為 429。我們可以根據實際的業務需求,配置跳轉或自定義的返回信息。

對于注解方式,我們上一節已經提到,可以指定 fallback 函數來處理流控異常和業務異常,這里不再展開講解;對于 Dubbo 適配,我們可以通過 DubboAdapterGlobalConfig 注冊 provider/consumer fallback 來提供自定義的流控處理邏輯;對于 Spring Cloud Gateway 適配,我們可以注冊自定義的 BlockRequestHandler 實現類來為網關流控注冊自定義的處理邏輯。

對 Spring Cloud 其他組件的支持

Spring Cloud Alibaba Sentinel 還提供對 Spring Cloud 其它常用組件的支持,包括 RestTemplate、Feign 等。篇幅所限,我們不展開實踐。大家可以參考 Spring Cloud Alibaba 文檔 來進行接入和配置。

如何選擇流控降級組件

講到這里,大家可能會有疑問:Sentinel 和其它同類產品(如 Hystrix)相比有什么優缺點?是否有必要遷移到 Sentinel?如何快速遷移?以下是 Sentinel 與其它 fault-tolerance 組件的對比:

總結

通過本教程,我們了解了流控降級作為高可用防護手段的重要性,了解了 Sentinel 的核心特性和原理,并通過動手實踐學習了如何快速接入 SCA Sentinel 來為微服務進行流控降級。Sentinel 還有著非常多的高級特性等著大家去發掘,如熱點防護、集群流控等,大家可以參考 Sentinel 官方文檔來了解更多的特性和場景。

那么是不是服務的量級很小就不用進行限流防護了呢?是不是微服務的架構比較簡單就不用引入熔斷保護機制了呢?其實,這與請求的量級、架構的復雜程度無關。很多時候,可能正是一個非常邊緣的服務出現故障而導致整體業務受影響,造成巨大損失。我們需要具有面向失敗設計的意識,在平時就做好容量規劃和強弱依賴的梳理,合理地配置流控降級規則,做好事前防護,而不是在線上出現問題以后再進行補救。

同時,我們也在阿里云上提供了 Sentinel 的企業版本 AHAS Sentinel,提供開箱即用的企業級高可用防護能力。與開源版本相比,AHAS 還提供以下的專業能力:

  • 可靠的實時監控和歷史秒級監控數據查詢,包含接口維度的 QPS、響應時間及系統 load、CPU 使用率等指標,支持按照調用類型分類,支持同比/環比展示
  • Top K 接口監控統計,快速了解系統的慢調用和大流量接口;熱力圖概覽,快速定位不穩定的機器
  • Java Agent 方式/K8s Java 應用零侵入快速接入,支持近 20 種主流框架和 API Gateway
  • 全自動托管、高可用的集群流量控制
  • Nginx 流量控制,支持規則動態配置、集群流控

總結

以上是生活随笔為你收集整理的gateway sentinel 熔断 不起作用_Spring Cloud Alibaba集训营第五天(服务熔断和限流)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。