Sentinel重要的前置知識

文章目錄

  • 1、雪崩問題及解決方案
    • 1.1、雪崩問題
    • 1.2、超時處理
    • 1.3、倉壁模式
    • 1.4、斷路器
    • 1.5、限流
    • 1.6、總結
  • 2、服務保護技術對比
  • 3、Sentinel介紹和安裝
    • 3.1、初識Sentinel
    • 3.2、安裝Sentinel
  • 4、微服務整合Sentinel

?🍃作者介紹:雙非本科大三網絡工程專業在讀,阿里云專家博主,專注于Java領域學習,擅長web應用開發、數據結構和算法,初步涉獵Python人工智能開發和前端開發。
🦅主頁:@逐夢蒼穹
📕所屬專欄:微服務
? 您的一鍵三連,是我創作的最大動力🌹

1、雪崩問題及解決方案

1.1、雪崩問題

微服務中,服務間調用關系錯綜復雜,一個微服務往往依賴于多個其它微服務。

如圖,如果服務提供者I發生了故障,當前的應用的部分業務因為依賴于服務I,因此也會被阻塞。此時,其它不依賴于服務I的業務似乎不受影響。

但是,依賴服務I的業務請求被阻塞,用戶不會得到響應,則tomcat的這個線程不會釋放,于是越來越多的用戶請求到來,越來越多的線程會阻塞;

服務器支持的線程和并發數有限,請求一直阻塞,會導致服務器資源耗盡,從而導致所有其它服務都不可用,那么當前服務也就不可用了。
那么,依賴于當前服務的其它服務隨著時間的推移,最終也都會變的不可用,形成級聯失敗,雪崩就發生了:

解決雪崩問題的常見方式有四種:

超時處理:設定超時時間,請求超過一定時間沒有響應就返回錯誤信息,不會無休止等待
艙壁模式:限定每個業務能使用的線程數,避免耗盡整個tomcat的資源,因此也叫線程隔離。
熔斷降級:由斷路器統計業務執行的異常比例,如果超出闊值則會熔斷該業務,攔截訪問該業務的一切請求。
流量控制:限制業務訪問的QPS,避免服務因流量的突增而故障。

1.2、超時處理

超時處理:設定超時時間,請求超過一定時間沒有響應就返回錯誤信息,不會無休止等待

1.3、倉壁模式

倉壁模式來源于船艙的設計:
R.png
船艙都會被隔板分離為多個獨立空間,當船體破損時,只會導致部分空間進入,將故障控制在一定范圍內,避免整個船體都被淹沒。
與此類似,我們可以限定每個業務能使用的線程數,避免耗盡整個tomcat的資源,因此也叫線程隔離。

1.4、斷路器

斷路器模式:由斷路器統計業務執行的異常比例,如果超出閾值則會熔斷該業務,攔截訪問該業務的一切請求。
斷路器會統計訪問某個服務的請求數量,異常比例:

當發現訪問服務D的請求異常比例過高時,認為服務D有導致雪崩的風險,會攔截訪問服務D的一切請求,形成熔斷:

1.5、限流

流量控制:限制業務訪問的QPS,避免服務因流量的突增而故障。

1.6、總結

什么是雪崩問題?

微服務之間相互調用,因為調用鏈中的一個服務故障,引起整個鏈路都無法訪問的情況。

可以認為:

①限流是對服務的保護,避免因瞬間高并發流量而導致服務故障,進而避免雪崩。是一種預防措施
②超時處理、線程隔離、降級熔斷是在部分服務故障時,將故障控制在一定范圍,避免雪崩。是一種補救措施

2、服務保護技術對比

在SpringCloud當中支持多種服務保護技術:

  • Netfix Hystrix
  • Sentinel
  • Resilience4J

Sentinel中文文檔:introduction | Sentinel (sentinelguard.io)

早期比較流行的是Hystrix框架,但目前國內實用最廣泛的還是阿里巴巴的Sentinel框架,這里我們做下對比:

SentinelHystrix
隔離策略信號量隔離線程池隔離/信號量隔離
熔斷降級策略基于慢調用比例或異常比例基于失敗比率
實時指標實現滑動窗口滑動窗口(基于 RxJava)
規則配置支持多種數據源支持多種數據源
擴展性多個擴展點插件的形式
基于注解的支持支持支持
限流基于 QPS,支持基于調用關系的限流有限的支持
流量整形支持慢啟動、勻速排隊模式不支持
系統自適應保護支持不支持
控制臺開箱即用,可配置規則、查看秒級監控、機器發現等不完善
常見框架的適配Servlet、Spring Cloud、Dubbo、gRPC 等Servlet、Spring Cloud Netflix

3、Sentinel介紹和安裝

3.1、初識Sentinel

Sentinel是阿里巴巴開源的一款微服務流量控制組件。

官網地址:https://sentinelguard.io/zh-cn/index.html

Sentinel 具有以下特征:

豐富的應用場景:Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺(即突發流量控制在系統容量可以承受的范圍)、消息削峰填谷、集群流量控制、實時熔斷下游不可用應用等。
完備的實時監控:Sentinel 同時提供實時的監控功能。您可以在控制臺中看到接入應用的單臺機器秒級數據,甚至 500 臺以下規模的集群的匯總運行情況。
廣泛的開源生態:Sentinel 提供開箱即用的與其它開源框架/庫的整合模塊,例如與 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相應的依賴并進行簡單的配置即可快速地接入 Sentinel。
完善的SPI擴展點:Sentinel 提供簡單易用、完善的 SPI 擴展接口。您可以通過實現擴展接口來快速地定制邏輯。例如定制規則管理、適配動態數據源等。

3.2、安裝Sentinel

1)下載
sentinel官方提供了UI控制臺,方便我們對系統做限流設置。可以在GitHub下載。
2)運行
下載jar包:

將jar包放到任意非中文目錄,執行命令(跟普通的jar包一個運行方式):

java -jar sentinel-dashboard-1.8.1.jar

如果要修改Sentinel的默認端口、賬戶、密碼,可以通過下列配置:

配置項默認值說明
server.port8080服務端口
sentinel.dashboard.auth.usernamesentinel默認用戶名
sentinel.dashboard.auth.passwordsentinel默認密碼

例如,修改端口:

java -Dserver.port=8090 -jar sentinel-dashboard-1.8.1.jar

3)訪問
啟動之后:
image.png
訪問http://localhost:8080頁面,就可以看到sentinel的控制臺了:

需要輸入賬號和密碼,默認都是:sentinel
登錄后,發現一片空白,什么都沒有:
image.png
這是因為還沒有與微服務整合
4)如果啟動報錯:
image.png
則是JDK版本的問題,更換電腦的JDK版本就可以了。
不更換電腦版本的方法:

①去官網(https://www.java.com/zh-CN/download/)下一個jre(注意是jar而不是jdk)
②在虛擬機安裝,然后拷貝安裝目錄下面的內容到物理機
③拷貝完成后,把jar包放在bin目錄下即可啟動

image.png
image.png

4、微服務整合Sentinel

我們在order-service中整合sentinel,并連接sentinel的控制臺,步驟如下:
1)引入sentinel依賴

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

2)配置控制臺
修改application.yaml文件,添加下面內容:

server:port: 8088
spring:cloud: sentinel:transport:dashboard: localhost:8080

3)訪問order-service的任意端點
打開瀏覽器,訪問http://localhost:8088/order/101,這樣才能觸發sentinel的監控。
然后再訪問sentinel的控制臺,查看效果:
image.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14999.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14999.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14999.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PX4使用yolo仿真環境搭建

文章目錄 前言一、修改機架sdf文件二、安裝yolo三、運行 前言 ubuntu20.04 PX4 1.13.3 已配置好PX4 ROS gazebo環境 一、修改機架sdf文件 將雙目相機加到仿真的iris機架上 修改下圖文件 添加如下&#xff1a; <include><uri>model://stereo_camera</uri>…

用nn.Sequential實現圖像的數據增強(augmentations)

代碼example: import torch import torch.nn as nn# 定義一些增強操作&#xff0c;例如隨機水平翻轉和歸一化 augmentations nn.Sequential(nn.RandomHorizontalFlip(),nn.Normalize(mean[0.5], std[0.5]) )# 創建一個示例 tensor candidate torch.randn(1, 3, 224, 224) #…

QWRT改AP模式 自動獲取IP

關閉&#xff08;禁用&#xff09;WAN 和 WAN6接口修改LAN接口 IP地址 改為上級路由的網段&#xff0c;如主路由器IP192.168.2.1&#xff0c;那么就設置為192.168.2.2&#xff08;不要沖突了&#xff09;IPv4 網關 改為上級路由的IP地址&#xff0c;如主路由器IP192.168.2.1&am…

使用 CapSolver API 服務解決 Arkose Labs FunCaptcha 驗證碼

使用 CapSolver API 服務解決 Arkose Labs FunCaptcha 驗證碼 FunCaptcha 以其復雜的圖像驗證而聞名&#xff0c;對自動化系統構成了巨大的挑戰。CapSolver 的 API 服務利用先進的 AI 技術輕松應對和解決 FunCaptcha 挑戰。本指南探討了 CapSolver 如何實現無縫自動化&#xff…

什么是html

HTML&#xff08;HyperText Markup Language&#xff0c;超文本標記語言&#xff09;是一種用于創建網頁的標準標記語言。它描述了一個網站的結構骨架&#xff0c;使得瀏覽器能夠展示具有特定格式的文本、鏈接、圖片和其他內容。HTML 文檔由一系列的元素構成&#xff0c;這些元…

STM32筆記-AD模數轉換

目錄 一、ADC介紹 二、ADC主要特征 三、ADC框圖 1. ???? 外部觸發轉換 ? 2. 轉換模式 3. 輸入通道 4. 邏輯框圖 四、校準 五、數據對齊 六、AD轉換步驟 七、AD_Init(單通道AD轉換)初始化函數配置 DMA: adc_dma_mode_enable(ADC0); 這段代碼是用來使能ADC的DMA&a…

ts 字符串不能做索引異常提示 type because expression of type ‘string‘

Element implicitly has an any type because expression of type string cant be used to index type 例子 let a{b:"1",c:"1" } var b"b"; let ca[b] let ca[b]就會爆這個錯誤&#xff0c;因為在編譯器看來b是一個未知的東西&#xff0c;它不…

什么是創造力?如何判斷自己的創造力?

創造力&#xff0c;主要表現為創新思想、發現和創造新事物的能力&#xff0c;是知識&#xff0c;智力和能力的綜合能力&#xff0c;尤其是在職業發展方面&#xff0c;創造力具有重要的意義&#xff0c;企業的核心競爭力就來源于創造力&#xff0c;這就需要具有創造力的員工來推…

ArduPilot開源飛控之MAVProxy深入研讀系列 - 1基本操作

ArduPilot開源飛控之MAVProxy深入研讀系列 - 1基本操作 1. 源由2. 基本操作2.1 二進制安裝2.2 源代碼安裝2.3 硬鏈接飛控2.4 軟連接飛控 3. 啟動參數3.1 輸入3.2 輸出3.3 日志3.4 交互3.5 其他 4. 參考資料 1. 源由 玩開源&#xff0c;就盡量不要用Windows/Android/iOS/MaxOS什…

【前端每日基礎】day30

iframe的優點和缺點 &#xff1f; 優點&#xff1a; 內容隔離&#xff1a; < iframe> 允許將另一個 HTML 文檔嵌入到當前頁面中&#xff0c;并在一個獨立的環境中展示。這種隔離性可以防止嵌入的內容對主頁面的樣式和功能造成影響。 模塊化&#xff1a; < iframe>…

【QGIS入門實戰精品教程】13.1:導入帶地理標簽的航測照片

文章目錄 一、數據準備二、導入帶地理標簽的航測照片三、導出點位shp四、生成航線一、數據準備 本實驗數據位于13.1:導入帶地理標簽的航測照片.rar中,如下: 查看照片及相機參數信息,航測照片都帶有相機參數、部分POS及地理坐標信息,如下所示: 二、導入帶地理標簽的航測照…

YoloV8改進策略:蒸餾改進|CWDLoss|使用蒸餾模型實現YoloV8無損漲點|特征蒸餾

摘要 在本文中&#xff0c;我們成功應用蒸餾策略以實現YoloV8小模型的無損性能提升。我們采用了CWDLoss作為蒸餾方法的核心&#xff0c;通過對比在線和離線兩種蒸餾方式&#xff0c;我們發現離線蒸餾在效果上更為出色。因此&#xff0c;為了方便廣大讀者和研究者應用&#xff…

大語言模型PEFT

目錄 一、PEFT的關鍵概念和方法 部分參數微調 概念 方法 優勢 適配器&#xff08;Adapters&#xff09; 方法 優勢 低秩分解&#xff08;Low-rank Factorization&#xff09; 方法 優勢 差分微調&#xff08;Delta Tuning&#xff09; 方法 優勢 多任務學習&…

政策及需求多因素驅動下 中國適老化改造市場空間大

政策及需求多因素驅動下 中國適老化改造市場空間大 適老化改造是為了提高老年人居住環境的舒適度和安全性&#xff0c;滿足老年人居住需求進行的建筑改造&#xff0c;根據住房和城鄉建設部城市建設司發布的《城市居家適老化改造指導手冊》可以將適老化改造分為基礎性改造和提升…

【linux】新增磁盤的使用

查看硬盤和分區信息 【Linux】lsblk 命令使用-CSDN博客 lsblk 根據您提供的lsblk命令輸出&#xff0c;我們可以看到系統中的塊設備及其分區信息。以下是對每個設備的解釋&#xff1a; vda&#xff1a;這是一個大小為40G的磁盤設備。 vda1&#xff1a;這是vda磁盤的第一個分區…

Python學習---基于TCP協議的網絡通信程序案例

TCP簡介&#xff1a; ●TCP 面向連接、可靠的、基于字節流的傳輸控制協議 ●TCP的特點 ○面向連接 ○可靠傳輸 ■應答機制 ■超時重傳 ■錯誤校驗 ■流量管控 ●TCP通信模型 TCP嚴格區分客戶…

智慧展廳設計的難點有哪些

1、運用先進的展示技術 將全息影像、三維投影、虛擬現實、人機互動等技術做做完美銜接&#xff0c;把展廳的內容展示做到豐富多彩&#xff0c;從而讓展廳富有科技感和藝術性。 2、內容要生動有趣 從而更好地吸引參觀者。展廳設計師要與客戶有良好深入的溝通&#xff0c;搜集與整…

TP6 模型批量插入獲取插入的自增ID

在TP框架中&#xff0c;數據插入 添加一條數據,返回添加成功的條數 $data [foo > bar, bar > foo]; Db::name(user)->save($data); // 或者 Db::name(user)->insert($data); 批量添加 $data [[foo > bar, bar > foo],[foo > bar1, bar > foo1],[…

mysql相關知識總結

目錄 1.建表2.添加字段3.修改字段類型4.添加索引5.遇到的問題 1.建表 CREATE TABLE test.table_test ( id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主鍵id, day date DEFAULT NULL COMMENT 日期, show_cnt bigint(20) DEFAULT 0 COMMENT 曝光次數, play_time do…

無人機的相關基礎知識(看不懂了 待定以后繼續補充)

視頻&#xff1a; 【浙江大學】浙大博導帶你從0制作無人機_嗶哩嗶哩_bilibili 什么是無人飛行器 無人機自主導航構架 IMU&#xff08;加速度計和陀螺儀&#xff09;&#xff0c;可以測出當前的 加速度和角速度 這倆信息再去融合外部傳感器 &#xff08;例如視覺傳感器或者雷…