最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java之springcloud Sentinel案例講解

 更新時間:2021年08月10日 10:43:08   作者:深情以改  
這篇文章主要介紹了Java之springcloud Sentinel案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下

一、Sentinel是什么?

Sentinel (分布式系統(tǒng)的流量防衛(wèi)兵) 是阿里開源的一套用于服務容錯的綜合性解決方案。
它以流量為切入點,從流量控制、熔斷降級、系統(tǒng)負載保護等多個維度來保護服務的穩(wěn)定性。

二、使用步驟

1.下載地址

下載地址:https://github.com/alibaba/Sentinel/releases
java -jar sentinel-dashboard-1.7.0.jar
訪問:http://localhost:8080
用戶名密碼:sentinel/sentinel

2.導入依賴

<!--服務容錯 每一個服務 都引入 sentinel 客戶端-->																								
<dependency>																																							
    <groupId>com.alibaba.cloud</groupId>																																							
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>																																							
</dependency>																																							

3.添加配置

#spring:																																							
#  cloud:																																							
    sentinel:																																							
      transport:																																							
        port: 8081 #跟控制臺交流的端口,隨意指定一個未使用的端口即可																																							
        dashboard: localhost:8080 # 指定控制臺服務的地址																																							

4.啟動jar

在這里插入圖片描述

5 運行接口后就才能被監(jiān)控,設置流控規(guī)則

在這里插入圖片描述

6 測試重復刷新后

在這里插入圖片描述

該處使用的url網(wǎng)絡請求的數(shù)據(jù)。

三 容錯異常

FlowException)

降級
DegradeException)
參數(shù)熱點異常
ParamFlowException
系統(tǒng)
SystemBlockException
授權
AuthorityException

自定義sentinel異常 BlockExceptionAspect

@Slf4j																																																				
@Component																																																				
public class BlockExceptionAspect  implements UrlBlockHandler {																																																				
																																																				
    @Override																																																				
    public void blocked(HttpServletRequest httpServletRequest,																																																				
                        HttpServletResponse httpServletResponse, BlockException e) throws IOException {																																																				
																																																				
																																																				
        System.out.println("進入。。。 MyUrlBlockHandler");																																																				
        // 打印日志																																																				R
        log.error(e.getMessage(),e);																																																				
        // 統(tǒng)一返回結果																																																				
        R appResult = null;																																																				
        if (e instanceof FlowException) {																																																				
            appResult = new R(ResponseEnum.FLOW_BLOCK,null);																																																				
        } else if (e instanceof DegradeException) {																																																				
            appResult = new R(ResponseEnum.DEG_BLOCK,null);																																																				
        } else if (e instanceof ParamFlowException) {																																																				
            appResult = new R(ResponseEnum.DEG_BLOCK,null);																																																				
        } else if (e instanceof SystemBlockException) {																																																				
            appResult = new R(ResponseEnum.DEG_BLOCK,null);																																																				
        } else if (e instanceof AuthorityException) {																																																				
            appResult = new R(ResponseEnum.DEG_BLOCK,null);																																																				
        }																																																				
        httpServletResponse.setCharacterEncoding("utf-8");																																																				
        httpServletResponse.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);																																																				
																																																				
        httpServletResponse.getWriter().print(JSON.toJSONString(appResult));																																																				
																																																				
    }																																																				
}																																																				

一: QPS每秒查詢率(Query Per Second)
原理:每天80%的訪問集中在20%的時間里,這20%時間叫做峰值時間。

公式:( 總PV數(shù) * 80% ) / ( 每天秒數(shù) * 20% ) = 峰值時間每秒請求數(shù)(QPS) 。

PV(page view)即頁面瀏覽量,通常是衡量一個網(wǎng)絡新聞頻道或網(wǎng)站甚至一條網(wǎng)絡新聞的主要指標。網(wǎng)頁瀏覽數(shù)是評價網(wǎng)站流量最常用的指標之一,簡稱為PV。

機器:峰值時間每秒QPS / 單臺機器的QPS = 需要的機器 。

每天300w PV 的在單臺機器上,這臺機器需要多少Q(mào)PS?

( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)。

一般需要達到139QPS,因為是峰值。(200萬pv才有100峰值qps)

二:TPS
TPS:Transactions Per Second(每秒傳輸?shù)氖挛锾幚韨€數(shù)),即服務器每秒處理的事務數(shù)。

TPS包括一條消息入和一條消息出,加上一次用戶數(shù)據(jù)庫訪問。(業(yè)務TPS = CAPS × 每個呼叫平均TPS)

一個事務是指一個客戶機向服務器發(fā)送請求然后服務器做出反應的過程??蛻魴C在發(fā)送請求時開始計時,收到服務器響應后結束計時,以此來計算使用的時間和完成的事務個數(shù)。

一般的,評價系統(tǒng)性能均以每秒鐘完成的技術交易的數(shù)量來衡量。系統(tǒng)整體處理能力取決于處理能力最低模塊的TPS值。

三:RT(Response-time)
響應時間是指:系統(tǒng)對請求作出響應的時間(一次請求耗時)。

響應時間:執(zhí)行一個請求從開始到最后收到響應數(shù)據(jù)所花費的總體時間,即從客戶端發(fā)起請求到收到服務器響應結果的時間。響應時間RT(Response-time),是一個系統(tǒng)最重要的指標之一,它的數(shù)值大小直接反應了系統(tǒng)的快慢。

四:Load(系統(tǒng)負載)
Linux的Load(系統(tǒng)負載),是一個讓新手不太容易了解的概念。load的就是一定時間內(nèi)計算機有多少個active_tasks,也就是說是計算機的任務執(zhí)行隊列的長度,cpu計算的隊列。

top/uptime等工具默認會顯示1分鐘、5分鐘、15分鐘的平均Load。

具體來說,平均Load是指,在特定的一段時間內(nèi)統(tǒng)計的正在CPU中運行的(R狀態(tài))、正在等待CPU運行的、處于不可中斷睡眠的(D狀態(tài))的任務數(shù)量的平均值。

最后,說一下CPU使用率和Load的關系吧。如果主要是CPU密集型的程序在運行(If CPU utilization is near 100 percent (user + nice + system), the workload sampled is CPU-bound.),

那么CPU利用率高,Load一般也會比較高。而I/O密集型的程序在運行,

可能看到CPU的%user, %system都不高,%iowait可能會有點高,這時的Load通常比較高。

同理,程序讀寫慢速I/O設備(如磁盤、NFS)比較多時,Load可能會比較高,而CPU利用率不一定高。這種情況,還經(jīng)常發(fā)生在系統(tǒng)內(nèi)存不足并開始使用swap的時候,Load一般會比較高,而CPU使用率并不高。

五:PV
頁面訪問次數(shù):Page View

六:UV
訪客數(shù)(去重復):Unique Visitor

七:帶寬
帶寬(bps)=總流量數(shù)(bit)/產(chǎn)生流量的時長(秒)=(PV頁面平均大小8)/統(tǒng)計時間(秒)

說明:公式中的 8 指的是將 Byte 轉換為 bit,即 8b/B,因為帶寬的單位是 bps(比特率),即bit per second,每秒二進制位數(shù),而容量單位一般使用 Byte。

假設某站點的日均 PV 是 10w,頁面平均大小 0.4 M,那么其平均帶寬需求是:

平均帶寬 = (10w * 0.4M * 8) / (60 * 60 * 24)= 3.7 Mbps

以上計算的僅僅是平均帶寬,我們在進行容量預估時需要的是峰值帶寬,即必須要保證站點在峰值流量時能夠正常運轉。假設,峰值流量是平均流量的5倍,這個5倍稱為峰值因 子。按照這個計算,實際需要的帶寬大約在3.7 Mbps * 5=18.5 Mbps 。

帶寬需求 = 平均帶寬 * 峰值因子

八:并發(fā)連接數(shù)
并發(fā)數(shù)是指系統(tǒng)同時能處理的請求數(shù)量,這個也是反應了系統(tǒng)的負載能力。

總結

功能 Sentinel Hystrix resilience4j
隔離策略 信號量隔離(并發(fā)線程數(shù)限流) 線程池隔離/信號量隔離 信號量隔離
熔斷降級策略 基于響應時間、異常比率、異常數(shù) 基于異常比率 基于異常比率、響應時間
實時統(tǒng)計實現(xiàn) 滑動窗口(LeapArray) 滑動窗口 (基于 RxJava)
動態(tài)規(guī)則配置 支持多種數(shù)據(jù)源 支持多種數(shù)據(jù)源 有限支持
擴展性 多個擴展點 插件的形式 接口的形式
基于注解的支持 支持 支持 支持
限流 基于 QPS,支持基于調用關系的限流 有限的支持 Rate Limiter
流量整形 支持預熱模式、勻速器模式、預熱排隊模式(流量規(guī)則處可配置) 不支持 簡單的 Rate Limiter 模式
系統(tǒng)自適應保護 支持 不支持 不支持
控制臺 提供開箱即用的控制臺,可配置規(guī)則、查看秒級監(jiān)控、機器發(fā)現(xiàn)等 簡單的監(jiān)控查看 不提供控制臺,可對接其它監(jiān)控系統(tǒng)

到此這篇關于Java之springcloud Sentinel案例講解的文章就介紹到這了,更多相關Java之springcloud Sentinel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

防城港市| 班玛县| 汽车| 乐安县| 曲周县| 安溪县| 盐边县| 伽师县| 四会市| 象山县| 景德镇市| 六枝特区| 闵行区| 临西县| 新建县| 定远县| 洛阳市| 曲水县| 宜良县| 江北区| 桂林市| 阿拉善右旗| 伊金霍洛旗| 张家港市| 东平县| 永胜县| 怀化市| 宜君县| 黔西县| 文登市| 祁阳县| 玉门市| 丰宁| 吕梁市| 秦安县| 沿河| 兴和县| 陇西县| 东明县| 湖州市| 甘洛县|