中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

個人備案網站做企業(yè)網可以嗎北京搜索引擎優(yōu)化主管

個人備案網站做企業(yè)網可以嗎,北京搜索引擎優(yōu)化主管,上海公司公開發(fā)行股票,學php網站開發(fā)好嗎目錄 前言 一、什么是Sentinel? Sentinel 的主要特性 Sentinel 的開源生態(tài) 二、Sentinel的核心功能 三、Sentinel 的主要優(yōu)勢與特性 1、豐富的流控規(guī)則 2、完善的熔斷降級機制 3、實時監(jiān)控和控制臺 4、多數(shù)據(jù)源支持 5、擴展性強 四、Sentinel 與 Hystrix …

目錄

前言

一、什么是Sentinel?

?Sentinel 的主要特性

Sentinel 的開源生態(tài)

二、Sentinel的核心功能

三、Sentinel 的主要優(yōu)勢與特性

1、豐富的流控規(guī)則

?2、完善的熔斷降級機制

3、實時監(jiān)控和控制臺

4、多數(shù)據(jù)源支持

5、擴展性強

四、Sentinel 與 Hystrix 的對比

五、Sentinel安裝與使用

1、Sentineal 控制臺下載與安裝

2、給服務接入sentinel監(jiān)控

3、流控規(guī)則

接口限流

直接流控模式

關聯(lián)流控模式

鏈路流控模式

主要概念

使用場景

4、@SentinelResource注解

基本用法

使用示例

注意事項

總結


前言

隨著微服務架構的普及,如何保證系統(tǒng)的高可用性和穩(wěn)定性成為開發(fā)者必須面對的重要課題。阿里巴巴開源的 Sentinel 作為一款流量防護組件,提供了熔斷、限流、降級等多種功能,幫助開發(fā)者提升系統(tǒng)的容錯能力。本文將記錄 Sentinel 的核心功能及其在 Spring Cloud 中的集成和使用。也希望本文,能夠幫助你們在微服務項目中輕松地集成和使用 Sentinel,提升系統(tǒng)的穩(wěn)定性和容錯能力。


一、什么是Sentinel

Sentinel 是阿里巴巴開源的流量防護組件,專注于流量控制和系統(tǒng)穩(wěn)定性保護。它提供了豐富的功能,如限流、熔斷降級、系統(tǒng)自適應保護、實時監(jiān)控等,幫助開發(fā)者構建高可用和高穩(wěn)定性的微服務系統(tǒng)。

中文官網:home | Sentinel (sentinelguard.io)

?Sentinel 的主要特性

Sentinel 的開源生態(tài)

二、Sentinel的核心功能

限流:通過多種流量控制策略,實現(xiàn)對熱點數(shù)據(jù)、分布式請求等的限流。

熔斷降級:根據(jù)調用錯誤比例、RT(響應時間)等指標,對不穩(wěn)定的服務進行熔斷,避免級聯(lián)故障。

系統(tǒng)自適應保護:根據(jù)系統(tǒng)的負載情況,動態(tài)調整限流和熔斷策略,保證系統(tǒng)在高負載下的穩(wěn)定性。

實時監(jiān)控:提供實時的監(jiān)控與報警功能,幫助開發(fā)者及時發(fā)現(xiàn)和處理問題。

三、Sentinel 的主要優(yōu)勢與特性

1、豐富的流控規(guī)則

流量整形:支持勻速排隊、預熱、并發(fā)等多種流控策略。
熱點參數(shù)限流:針對傳入參數(shù)進行熱點數(shù)據(jù)的限流保護。
系統(tǒng)自適應保護:根據(jù)系統(tǒng)的負載情況,動態(tài)調整限流和熔斷策略。

?2、完善的熔斷降級機制

基于錯誤比例:在指定時間窗口內,如果請求的錯誤比例超過閾值,則觸發(fā)熔斷。
基于響應時間:在指定時間窗口內,如果請求的平均響應時間超過閾值,則觸發(fā)熔斷。

3、實時監(jiān)控和控制臺

實時監(jiān)控:提供對實時流量、調用關系、鏈路流量等多維度的監(jiān)控。
控制臺:通過可視化的 Dashboard,實時配置和管理限流、熔斷規(guī)則。

4、多數(shù)據(jù)源支持

規(guī)則動態(tài)更新:支持從 Nacos、Apollo、ZooKeeper 等多個數(shù)據(jù)源動態(tài)加載和更新規(guī)則。

5、擴展性強

SPI 擴展:提供 SPI 擴展點,可以自定義流控、熔斷、降級等策略。

四、Sentinel 與 Hystrix 的對比

特性SentinelSpring Cloud Hystrix
限流提供豐富的限流策略,如預熱、勻速排隊、并發(fā)控制等不支持
熔斷機制支持基于錯誤比例、響應時間、異常數(shù)量等多種熔斷策略主要基于錯誤比例和響應時間
實時監(jiān)控提供完整的實時監(jiān)控和可視化控制臺需要集成 Turbine 和 Hystrix Dashboard
規(guī)則動態(tài)配置支持多種數(shù)據(jù)源(如 Nacos、Apollo、ZooKeeper)動態(tài)配置規(guī)則通過 Archaius 實現(xiàn),靈活性相對較低
擴展性提供豐富的 SPI 擴展點,方便自定義策略擴展性相對較差
社區(qū)活躍度社區(qū)活躍,持續(xù)更新2018 年 Netflix 宣布進入維護模式,社區(qū)活躍度降低
依賴輕量級,無需依賴額外組件需要依賴 Hystrix Dashboard 和 Turbine 進行監(jiān)控

Sentinel 和 Spring Cloud Hystrix 都是優(yōu)秀的服務保護工具,但各有特點。Sentinel 提供了更豐富的限流策略、動態(tài)規(guī)則配置和實時監(jiān)控功能,并且具有更高的擴展性。相比之下,Hystrix 在熔斷和降級方面也有較好的表現(xiàn),但由于Hystrix進入維護模式,其社區(qū)活躍度和新特性支持有所降低。

在選擇時,可以根據(jù)具體需求和項目特點進行權衡。如果需要更強的限流能力、動態(tài)規(guī)則配置和實時監(jiān)控,建議選擇 Sentinel。如果項目已經使用 Hystrix 并且穩(wěn)定運行,也可以繼續(xù)使用 Hystrix。

五、Sentinel安裝與使用

1、Sentineal 控制臺下載與安裝

下載地址:Releases · alibaba/Sentinel (github.com)

選擇jar包下載

通過CMD命令運行

java -jar sentinel-dashboard-1.8.8.jar

如下圖所示,則已啟動成功。

訪問地址:localhost:8080

賬號密碼:都是sentinel

2、給服務接入sentinel監(jiān)控

引入依賴

<!-- sentinel -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId><version>${spring-cloud-alibaba.version}</version>
</dependency>

如果版本不對的話,運行會報錯,sentinel依賴時與web依賴形成循環(huán)依賴。

附上完整的maven依賴

<properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><!-- spring boot --><spring-boot.version>2.7.5</spring-boot.version><!-- spring cloud --><spring-cloud.version>2021.0.1</spring-cloud.version><spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version><spring-cloud-starter-alibaba-nacos-config.version>2.1.4.RELEASE</spring-cloud-starter-alibaba-nacos-config.version>
</properties>

配置sentinel

server:port: 9090spring:application:name: demo-usercloud:nacos:discovery:server-addr: 192.168.1.85:8848namespace: democonfig:server-addr: 192.168.1.85:8848prefix: ${spring.application.name}file-extension: ymlnamespace: demosentinel:transport:dashboard: localhost:8080    #配置sentinel dashboard地址

重啟服務,訪問接口localhost:9090/hello/getOrder

這時候在控制臺就可以看到我們的請求了,證明已經監(jiān)控到我們服務

3、流控規(guī)則

流控規(guī)則屬性

資源名: 唯一名稱,默認請求路徑,表示對該資源進行流控
針對來源: Sentinel可以針對調用者進行限流,填寫微服務名,默認default(不區(qū)分來源)
閾值類型/單擊閾值:
QPS:(每秒鐘的請求數(shù)量):當調用該api的QPS達到閾值時,進行限流
線程數(shù):當調用該線程數(shù)達到閾值的時候,進行限流
是否集群:不需要集群
流控模式:
直接: api達到限流條件時,直接限流
關聯(lián): 當關聯(lián)的資源達到閾值時,就限流自己
鏈路: 只記錄指定鏈路上的流量(指定資源從入口資源進來的流量,如果達到閾值,就進行限流)【api級別的針對來源】
流控效果:
快速失敗: 直接失敗,拋異常
Warm Up: 根據(jù)codeFactor(冷加載因子,默認3)的值,從閾值/codeFctor,經過預熱時長,才達到設置的QPS閾值
排隊等待: 勻速排隊,讓請求以勻速的速度通過,閾值類型必須設置為QPS,否則無效

接口限流

直接流控模式

新增流控規(guī)則

資源名指的是我們的接口地址,QPS設置為1,其他都選擇默認值。保存后,我們測試接口調用。

第一次請求是正常響應的。

接下來我們快速請求接口,一秒鐘點擊多次
發(fā)現(xiàn)已經被限流了。

關聯(lián)流控模式

當關聯(lián)的資源達到閾值時,就限流自己,也就是說關聯(lián)的資源(接口),QPS為1時,一秒內被多次請求的時候,自己的接口就會被限流。

如圖所示,hello/addOrder 接口并發(fā)請求,hello/getOrder接口就被限流了。

鏈路流控模式

鏈路流控模式(Chain Mode)是 Sentinel 提供的一種流控模式,主要用于控制資源在特定調用鏈路上的訪問頻率。與一般的直接流控模式不同,鏈路流控模式通過定義調用鏈路來實現(xiàn)更細粒度的流量控制。這對于復雜的分布式系統(tǒng)中,尤其是微服務架構中,控制不同調用路徑的流量非常有用。

主要概念

在鏈路流控模式下,流控規(guī)則會對特定的調用鏈路進行控制。調用鏈路通常由一個入口資源和一個目標資源組成,表示從入口資源到目標資源的一條特定調用路徑。

使用場景

同一資源多入口:當一個資源可以通過多個入口訪問時,可以針對不同入口設置不同的流控規(guī)則。

細粒度流控:對于某些關鍵資源,可以根據(jù)不同的調用鏈路進行更細粒度的流量控制,從而實現(xiàn)精細化管理。

示例:

假設有一個系統(tǒng),其中有一個服務 orderService,它可以通過兩個不同的入口資源 getOrder 和 getOrder2 被調用。我們希望限制通過 getOrder2 入口對 orderService 的調用頻率。

4、@SentinelResource注解

@SentinelResource 是 Sentinel 提供的一個注解,用于定義資源并為其配置流控、熔斷等規(guī)則。在方法上使用 @SentinelResource 注解,可以實現(xiàn)對該方法的流控、降級以及異常處理等功能。

基本用法

?@SentinelResource 的基本屬性包括 value、blockHandler、fallback 等。以下是它的常用屬性及使用示例:

1. value(必填)
描述: 指定資源名稱。該名稱將作為 Sentinel 的資源標識,用于進行流控和降級保護。
類型: String
2. blockHandler
描述: 指定當資源被流控(如限流、降級)時的處理方法。該方法必須與原方法在同一個類中,或者在公共類中。方法簽名要求一致,并且最后一個參數(shù)必須是 BlockException。
類型: String
3. blockHandlerClass
描述: 指定 blockHandler 所在類。如果 blockHandler 方法不在同一個類中,可以通過 blockHandlerClass 指定類。
類型: Class<?>
4. fallback
描述: 指定當資源執(zhí)行發(fā)生異常時的處理方法。方法簽名要求與原方法一致,或者額外帶一個 Throwable 類型的參數(shù)用于接收異常。
類型: String
5. fallbackClass
描述: 指定 fallback 所在類。如果 fallback 方法不在同一個類中,可以通過 fallbackClass 指定類。
類型: Class<?>
6. defaultFallback
描述: 指定通用的默認降級方法,當未指定 fallback 方法或 fallback 方法不可用時,調用此方法。方法必須是靜態(tài)的,且返回類型與原方法一致。
類型: String
7. exceptionsToIgnore
描述: 指定不會觸發(fā) fallback 處理的異常列表。
類型: Class<? extends Throwable>[]
8. exceptionsToTrace
描述: 指定會觸發(fā) fallback 處理的異常列表。默認情況下,所有的異常都會觸發(fā) fallback。
類型: Class<? extends Throwable>[]

使用示例

示例1:

在這個示例中,當訪問 /hello 接口時,若觸發(fā)了流控規(guī)則,handleBlock 方法會被調用返回處理結果。helloResource指的就是流控規(guī)則的資源名

import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@GetMapping("/hello")@SentinelResource(value = "helloResource", blockHandler = "handleBlock")public String hello() {return "Hello, Sentinel!";}public String handleBlock(BlockException ex) {return "請求已被阻止!";}
}

示例2:

當 /test 接口在執(zhí)行過程中拋出異常時,會調用 fallbackMethod 方法進行處理。

import com.alibaba.csp.sentinel.annotation.SentinelResource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class FallbackController {@GetMapping("/test")@SentinelResource(value = "testResource", fallback = "fallbackMethod")public String test() {if (Math.random() > 0.5) {throw new RuntimeException("出錯");}return "成功";}public String fallbackMethod(Throwable ex) {return "Fallback: " + ex.getMessage();}
}

示例3:

在這個例子中,當資源觸發(fā)流控時,將調用 ExternalHandler 類中的 externalBlockHandler 方法進行處理。

import com.alibaba.csp.sentinel.annotation.SentinelResource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ExternalHandlerController {@GetMapping("/external")@SentinelResource(value = "externalResource", blockHandler = "externalBlockHandler", blockHandlerClass = ExternalHandler.class)public String external() {return "這是個示例";}
}class ExternalHandler {// 必須為靜態(tài)方法public static String externalBlockHandler(BlockException ex) {return "請求已被阻止";}
}
注意事項

blockHandler 和 fallback 方法的簽名要求: 這些方法必須和原方法簽名一致,blockHandler 方法額外需要接收一個 BlockException 參數(shù),而 fallback 方法可以選擇性地接收一個 Throwable 參數(shù)。
defaultFallback: 作為全局降級處理方法,必須是 public static 方法,并且參數(shù)和返回類型與原方法一致。
處理類的類加載順序: 如果使用 blockHandlerClass 或 fallbackClass 指定外部類,這些類必須在項目啟動時能夠被加載。


總結

本文介紹了 Sentinel 的核心功能及其在 Spring Cloud 中的集成和使用。Sentinel 提供了豐富的流量控制和系統(tǒng)保護功能,幫助開發(fā)者提升系統(tǒng)的容錯能力和穩(wěn)定性。希望通過本文的學習,能夠幫助你更好地理解和使用 Sentinel,提升微服務項目的穩(wěn)定性和容錯能力。

http://www.risenshineclean.com/news/34466.html

相關文章:

  • 網站專題建設合同2024新聞熱點事件
  • wordpress布置網站教程友情鏈接只有鏈接
  • seo搜索引擎優(yōu)化技術教程關鍵詞排名優(yōu)化提升培訓
  • 網站信息資料庫建設品牌seo是什么
  • 什么專業(yè)的會做網站網站統(tǒng)計
  • 建設銀行網站電腦上不去網絡營銷策劃書2000字
  • 煩惱可以做網站嗎搜索熱度查詢
  • 家教網站建設的推廣免費網站流量
  • 倒計時網站模板搜索引擎關鍵詞seo優(yōu)化公司
  • 上海網站建設設計制作寧波seo排名方案優(yōu)化公司
  • 國內出名的設計網站有哪些免費網站制作軟件平臺
  • 好姑娘中文在線觀看國語高清免費深圳白帽優(yōu)化
  • 廈門網站建設哪家好百度一級代理商
  • 房地產網站大全東莞日增感染人數(shù)超25萬
  • 青島專業(yè)網站制作團隊肇慶百度快照優(yōu)化
  • 做宣傳圖冊在什么網站外國黃岡網站推廣平臺
  • 做潤滑油網站圖片直播回放老卡怎么回事
  • 做網站的屬于什么崗位網上推廣賺錢方法
  • wordpress 推薦環(huán)境關鍵詞seo排名優(yōu)化
  • 自適應網站 seo怎么做濟南網站建設老威
  • 杭州網站建設咨詢藍韻網絡長尾關鍵詞挖掘站長工具
  • 中學生制作的網站網絡運營
  • 做網站需要基礎嗎互聯(lián)網營銷師培訓內容
  • 品牌設計網站怎樣推廣自己的廣告
  • 網站策劃書最后一步怎么做采集站seo提高收錄
  • 寧夏銀川網站建設游戲app拉新平臺
  • 怎么做網站賺錢廣告營銷案例分析
  • wordpress openbox主題山東服務好的seo
  • 做彩票網站要什么接口互聯(lián)網推廣與營銷
  • 平面設計專用網站臨安網站seo