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

Java之springcloud Sentinel案例講解

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

一、Sentinel是什么?

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

二、使用步驟

1.下載地址

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

2.導(dǎo)入依賴

<!--服務(wù)容錯 每一個服務(wù) 都引入 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 # 指定控制臺服務(wù)的地址																																							

4.啟動jar

在這里插入圖片描述

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

在這里插入圖片描述

6 測試重復(fù)刷新后

在這里插入圖片描述

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

三 容錯異常

FlowException)

降級
DegradeException)
參數(shù)熱點異常
ParamFlowException
系統(tǒng)
SystemBlockException
授權(quán)
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)一返回結(jié)果																																																				
        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)絡(luò)新聞頻道或網(wǎng)站甚至一條網(wǎng)絡(luò)新聞的主要指標(biāo)。網(wǎng)頁瀏覽數(shù)是評價網(wǎng)站流量最常用的指標(biāo)之一,簡稱為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ù)),即服務(wù)器每秒處理的事務(wù)數(shù)。

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

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

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

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

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

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

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

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

最后,說一下CPU使用率和Load的關(guān)系吧。如果主要是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設(shè)備(如磁盤、NFS)比較多時,Load可能會比較高,而CPU利用率不一定高。這種情況,還經(jīng)常發(fā)生在系統(tǒng)內(nèi)存不足并開始使用swap的時候,Load一般會比較高,而CPU使用率并不高。

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

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

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

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

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

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

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

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

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

總結(jié)

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

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

相關(guān)文章

  • 關(guān)于java String中intern的深入講解

    關(guān)于java String中intern的深入講解

    這篇文章主要給大家介紹了關(guān)于java String中intern的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Java實現(xiàn)的簡單數(shù)字處理類及用法示例

    Java實現(xiàn)的簡單數(shù)字處理類及用法示例

    這篇文章主要介紹了Java實現(xiàn)的簡單數(shù)字處理類及用法,涉及java數(shù)字運算相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Spring Cloud入門系列服務(wù)提供者總結(jié)

    Spring Cloud入門系列服務(wù)提供者總結(jié)

    這篇文章主要介紹了Spring Cloud入門系列之服務(wù)提供者總結(jié),服務(wù)提供者使用Eureka Client組件創(chuàng)建 ,創(chuàng)建完成以后修改某文件,具體操作方法及實例代碼跟隨小編一起看看吧
    2021-06-06
  • Java實現(xiàn)簡單樹結(jié)構(gòu)

    Java實現(xiàn)簡單樹結(jié)構(gòu)

    這篇文章主要為大家詳細介紹了Java實現(xiàn)簡單樹結(jié)構(gòu)的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • java?ThreadPoolExecutor線程池內(nèi)部處理流程解析

    java?ThreadPoolExecutor線程池內(nèi)部處理流程解析

    這篇文章主要為大家介紹了java?ThreadPoolExecutor線程池內(nèi)部處理流程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Java實戰(zhàn)之飛翔的小鳥小游戲

    Java實戰(zhàn)之飛翔的小鳥小游戲

    這篇文章主要介紹了Java實戰(zhàn)之飛翔的小鳥小游戲,文中有非常詳細的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • hibernate存取json數(shù)據(jù)的代碼分析

    hibernate存取json數(shù)據(jù)的代碼分析

    這篇文章主要介紹了hibernate存取json數(shù)據(jù)的代碼分析,需要的朋友可以參考下
    2017-09-09
  • SpringBoot實現(xiàn)Md5對數(shù)據(jù)庫數(shù)據(jù)加密的示例

    SpringBoot實現(xiàn)Md5對數(shù)據(jù)庫數(shù)據(jù)加密的示例

    本文主要介紹了SpringBoot實現(xiàn)Md5對數(shù)據(jù)庫數(shù)據(jù)加密的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Spring Boot 2.0快速構(gòu)建服務(wù)組件全步驟

    Spring Boot 2.0快速構(gòu)建服務(wù)組件全步驟

    這篇文章主要給大家介紹了關(guān)于Spring Boot 2.0快速構(gòu)建服務(wù)組件的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Spring Boot 2.0具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • SpringBoot參數(shù)校驗與國際化使用教程

    SpringBoot參數(shù)校驗與國際化使用教程

    這篇文章主要給大家介紹了關(guān)于SpringBoot參數(shù)校驗與國際化使用教程的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11

最新評論