亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringCloud-Alibaba-Sentinel服務(wù)降級,熱點限流,服務(wù)熔斷

 更新時間:2020年12月12日 11:57:40   作者:T  
這篇文章主要介紹了SpringCloud-Alibaba-Sentinel服務(wù)降級,熱點限流,服務(wù)熔斷,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前言:
除了流量控制以外,對調(diào)用鏈路中不穩(wěn)定的資源進行熔斷降級也是保障高可用的重要措施之一。一個服務(wù)常常會調(diào)用別的模塊,可能是另外的一個遠程服務(wù)、數(shù)據(jù)庫,或者第三方 API 等。例如,支付的時候,可能需要遠程調(diào)用銀聯(lián)提供的 API;查詢某個商品的價格,可能需要進行數(shù)據(jù)庫查詢。然而,這個被依賴服務(wù)的穩(wěn)定性是不能保證的。如果依賴的服務(wù)出現(xiàn)了不穩(wěn)定的情況,請求的響應(yīng)時間變長,那么調(diào)用服務(wù)的方法的響應(yīng)時間也會變長,線程會產(chǎn)生堆積,最終可能耗盡業(yè)務(wù)自身的線程池,服務(wù)本身也變得不可用

在這里插入圖片描述

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

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

在這里插入圖片描述

慢調(diào)用比例:
最大 RT:200意思是 在200毫秒處理完這個請求
比例閥值:1 意思是是 在200毫秒處理一個請求 你設(shè)置幾就就200毫秒處理幾個

熔斷時長:1意思是一秒內(nèi)不可用
最小請求數(shù):5 意思是 一秒5次請求

在這里插入圖片描述
在這里插入圖片描述

異常比例:
比例閥值:官網(wǎng):(異常比率的閾值范圍是 [0.0, 1.0],代表 0% - 100%)0.3意思錯誤的達到了百分之30的時候 觸發(fā)熔斷

熔斷時間:1的意思是一秒之間不可用
最小請求數(shù):5一秒5個

在這里插入圖片描述

異常數(shù)
異常數(shù):3意思是超過3個異常,就是第4次進入熔斷服務(wù)降級,當?shù)谖宕握埱笫菍Φ木蜁謴?fù)
熔斷時長:1秒

在這里插入圖片描述

熱點參數(shù)限流
何為熱點?熱點即經(jīng)常訪問的數(shù)據(jù)。很多時候我們希望統(tǒng)計某個熱點數(shù)據(jù)中訪問頻次最高的 Top K 數(shù)據(jù),并對其訪問進行限制。比如:

商品 ID 為參數(shù),統(tǒng)計一段時間內(nèi)最常購買的商品 ID 并進行限制
用戶 ID 為參數(shù),針對一段時間內(nèi)頻繁訪問的用戶 ID 進行限制
熱點參數(shù)限流會統(tǒng)計傳入?yún)?shù)中的熱點參數(shù),并根據(jù)配置的限流閾值與模式,對包含熱點參數(shù)的資源調(diào)用進行限流。熱點參數(shù)限流可以看做是一種特殊的流量控制,僅對包含熱點參數(shù)的資源調(diào)用生效。

在這里插入圖片描述

示例:
這里有兩個 參數(shù)一個是A 一個是B熱點限流是根據(jù)設(shè)置參數(shù)的下標設(shè)置的,下表是從0開始的,
@SentinelResource注解設(shè)置要限流的id, blockHandler設(shè)置返回可預(yù)知的響應(yīng)體

 @GetMapping(value = "select/test")
 @SentinelResource(value = "test",blockHandler = "teat1")
 public String test(@RequestParam(value = "a",required = false) Integer a,@RequestParam(value = "b",required = false) Integer b){

 return "我是:Sentinel";

 }

設(shè)置的可預(yù)知的響應(yīng)體這個的BlockException是必須的參數(shù)

 public String teat1(@RequestParam(value = "a",required = false) Integer a,@RequestParam(value = "b",required = false)Integer b, BlockException e){

 return "沒錯我就是我了";

 }

配置
test是@SentinelResource(value = "test",blockHandler = "teat1")
參數(shù)索引:0就是0下標
單機閥值:1處理的個數(shù)
統(tǒng)計窗口時長 1是一秒處理完成

在這里插入圖片描述

高級選項

在這里插入圖片描述

參數(shù)類型:選擇參數(shù)的數(shù)據(jù)類型
參數(shù)值:1就參數(shù)如果等于1就限流
限流閥: 3就是3次

在這里插入圖片描述

這些可以自己測試

在這里插入圖片描述

服務(wù)熔斷

Sentinel 提供了 @SentinelResource 注解用于定義資源,并提供了 AspectJ 的擴展用于自動定義資源、處理 BlockException 等。

@SentinelResource 注解

@SentinelResource 用于定義資源,并提供可選的異常處理和 fallback 配置項。 @SentinelResource 注解包含以下屬性:

value:資源名稱,必需項(不能為空)
entryType:entry 類型,可選項(默認為 EntryType.OUT)
blockHandler / blockHandlerClass: blockHandler 對應(yīng)處理 BlockException 的函數(shù)名稱,可選項。blockHandler 函數(shù)訪問范圍需要是 public,返回類型需要與原方法相匹配,參數(shù)類型需要和原方法相匹配并且最后加一個額外的參數(shù),類型為 BlockException。blockHandler 函數(shù)默認需要和原方法在同一個類中。若希望使用其他類的函數(shù),則可以指定 blockHandlerClass 為對應(yīng)的類的 Class 對象,注意對應(yīng)的函數(shù)必需為 static 函數(shù),否則無法解析。
fallback / fallbackClass:fallback 函數(shù)名稱,可選項,用于在拋出異常的時候提供 fallback 處理邏輯。fallback 函數(shù)可以針對所有類型的異常(除了 exceptionsToIgnore 里面排除掉的異常類型)進行處理。fallback 函數(shù)簽名和位置要求:
返回值類型必須與原函數(shù)返回值類型一致;
方法參數(shù)列表需要和原函數(shù)一致,或者可以額外多一個 Throwable 類型的參數(shù)用于接收對應(yīng)的異常。
fallback 函數(shù)默認需要和原方法在同一個類中。若希望使用其他類的函數(shù),則可以指定 fallbackClass 為對應(yīng)的類的 Class 對象,注意對應(yīng)的函數(shù)必需為 static 函數(shù),否則無法解析。
defaultFallback(since 1.6.0):默認的 fallback 函數(shù)名稱,可選項,通常用于通用的 fallback 邏輯(即可以用于很多服務(wù)或方法)。默認 fallback 函數(shù)可以針對所有類型的異常(除了 exceptionsToIgnore 里面排除掉的異常類型)進行處理。若同時配置了 fallback 和 defaultFallback,則只有 fallback 會生效。defaultFallback 函數(shù)簽名要求:
返回值類型必須與原函數(shù)返回值類型一致;
方法參數(shù)列表需要為空,或者可以額外多一個 Throwable 類型的參數(shù)用于接收對應(yīng)的異常。
defaultFallback 函數(shù)默認需要和原方法在同一個類中。若希望使用其他類的函數(shù),則可以指定 fallbackClass 為對應(yīng)的類的 Class 對象,注意對應(yīng)的函數(shù)必需為 static 函數(shù),否則無法解析。
exceptionsToIgnore(since 1.6.0):用于指定哪些異常被排除掉,不會計入異常統(tǒng)計中,也不會進入 fallback 邏輯中,而是會原樣拋出。
1.8.0 版本開始,defaultFallback 支持在類級別進行配置。

注:1.6.0 之前的版本 fallback 函數(shù)只針對降級異常(DegradeException)進行處理,不能針對業(yè)務(wù)異常進行處理。

特別地,若 blockHandler 和 fallback 都進行了配置,則被限流降級而拋出 BlockException 時只會進入 blockHandler 處理邏輯。若未配置 blockHandler、fallback 和 defaultFallback,則被限流降級時會將 BlockException 直接拋出(若方法本身未定義 throws BlockException 則會被 JVM 包裝一層 UndeclaredThrowableException)。

示例:

1,fallback處理java異常

@SentinelResource(value = "select",fallback = "ErrorFallback")

代碼

 @GetMapping(value = "select/{id}")
 @SentinelResource(value = "select",fallback = "ErrorFallback")
 public CommonResult getid(@PathVariable Long id){

  if(id>3) {
  throw new NullPointerException(id+"沒有記錄");
  }else {
  return restTemplate.getForObject(URL + "/select/" + id, CommonResult.class);
  }

 }

fallback 處理方法

public CommonResult ErrorFallback(@PathVariable Long id,Throwable e){

 return new CommonResult<>(500,"不好意,沒有此記錄");
 }

處理結(jié)果

在這里插入圖片描述

blockHandler 處理sentinel配置異常 java的異常無法處理

@SentinelResource(value = "select",blockHandler = "ErrorFallback")

 public CommonResult ErrorFallback(@PathVariable Long id, BlockException e){

 return new CommonResult<>(500,"不好意,沒有此記錄"+e.getMessage());
 }

測試
這設(shè)置的是異常比例 異常達到百分之30進行熔斷

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

兩個注解同時用

 @SentinelResource(value = "select",blockHandler = "ErrorFallback",fallback = "ErrorFallback1")
public CommonResult ErrorFallback1(@PathVariable Long id, Throwable e){

 return new CommonResult<>(500,"fallback:不好意,沒有此記錄"+e.getMessage());
 }
 public CommonResult ErrorFallback(@PathVariable Long id, BlockException e){

 return new CommonResult<>(500,"blockHandler:不好意,沒有此記錄"+e.getMessage());
 }

在這里插入圖片描述

在這里插入圖片描述

但是 要是blockHandler 和fallback 同時配置則被限流降級拋出異常BlockException 處理

exceptionsToIgnore 
 @SentinelResource(value = "select",blockHandler = "ErrorFallback",fallback = "ErrorFallback1"
   ,exceptionsToIgnore = {IllegalAccessException.class})
blockHandlerClass=定義返回統(tǒng)一返回方法.class

業(yè)務(wù)

@GetMapping(value = "select/test")
 @SentinelResource(value = "test",blockHandlerClass= MySentinel.class,blockHandler = "a")
 public String test(@RequestParam(value = "a",required = false) Integer a,@RequestParam(value = "b",required = false) Integer b){

 return "我是:Sentinel";

 }

熔斷降級

package com.tang.cloud.mysentinel;

import com.alibaba.csp.sentinel.slots.block.BlockException;
import jdk.nashorn.internal.ir.Block;
import org.bouncycastle.crypto.engines.BlowfishEngine;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * 統(tǒng)一返回降級處理
 */
public class MySentinel {

 //返回的的類型和調(diào)用的方法的類型一致,參數(shù)的類型和個數(shù)相同
 public static String a(@RequestParam(value = "a",required = false) Integer a, @RequestParam(value = "b",required = false) Integer b, BlockException excep){

 return "我在在另一個類中定義的方法";
 }
 }

到此這篇關(guān)于SpringCloud-Alibaba-Sentinel服務(wù)降級熱點限流服務(wù)熔斷的文章就介紹到這了,更多相關(guān)SpringCloud-Alibaba-Sentinel-服務(wù)降級內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java輸入字符串并將每個字符輸出的方法

    java輸入字符串并將每個字符輸出的方法

    今天小編就為大家分享一篇java輸入字符串并將每個字符輸出的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • JAVA十大排序算法之歸并排序詳解

    JAVA十大排序算法之歸并排序詳解

    這篇文章主要介紹了java中的歸并排序,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • MyBatisPlus中@TableField注解的基本使用

    MyBatisPlus中@TableField注解的基本使用

    這篇文章主要介紹了MyBatisPlus中@TableField注解的基本使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • springcloud之Feign超時問題的解決

    springcloud之Feign超時問題的解決

    這篇文章主要介紹了springcloud之Feign超時問題的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 詳解如何使用ModelMapper庫進行對象之間的屬性映射

    詳解如何使用ModelMapper庫進行對象之間的屬性映射

    這篇文章主要介紹了如何使用ModelMapper庫進行對象之間的屬性映射實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 基于Java實現(xiàn)進制轉(zhuǎn)換工具類的示例代碼

    基于Java實現(xiàn)進制轉(zhuǎn)換工具類的示例代碼

    這篇文章主要為大家詳細介紹了如何基于Java實現(xiàn)進制轉(zhuǎn)換工具類,從而實現(xiàn)減少參數(shù)長度的效果,文中的示例代碼講解詳細,需要的可以參考一下
    2023-02-02
  • 使用Java實現(xiàn)一個能保留計算過程的計算器

    使用Java實現(xiàn)一個能保留計算過程的計算器

    計算器是我們?nèi)粘I钪谐S玫墓ぞ咧?它能夠進行基本的數(shù)學(xué)運算,如加法、減法、乘法和除法,而在設(shè)計一個計算器時,我們可以通過使用Java編程語言來實現(xiàn)一個簡單的控制臺計算器,并且讓它能夠保留計算過程,文中有詳細的代碼示例,需要的朋友可以參考下
    2023-11-11
  • Spring?Security中如何獲取AuthenticationManager對象

    Spring?Security中如何獲取AuthenticationManager對象

    有時需要使用AuthenticationManager(以下簡稱Manager)對象,可是這個對象不是Bean,沒有直接保存在Spring的Bean庫中,那么如何獲取Spring Security中的這個對象呢,需要的朋友可以參考下
    2022-11-11
  • Java訪問修飾符原理及代碼解析

    Java訪問修飾符原理及代碼解析

    這篇文章主要介紹了Java訪問修飾符原理及代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • JavaEE在線人數(shù)管理系統(tǒng)

    JavaEE在線人數(shù)管理系統(tǒng)

    這篇文章主要為大家分享了JavaEE在線人數(shù)管理系統(tǒng),顯示在線人數(shù)、在線人詳細信息、管理員踢人等功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09

最新評論