欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java之springcloud Sentinel案例講解

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

一、Sentinel是什么?

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

二、使用步驟

1.下載地址

下載地址:https://github.com/alibaba/Sentinel/releases
java -jar sentinel-dashboard-1.7.0.jar
訪(fǎng)問(wèn):http://localhost:8080
用戶(hù)名密碼:sentinel/sentinel

2.導(dǎo)入依賴(lài)

<!--服務(wù)容錯(cuò) 每一個(gè)服務(wù) 都引入 sentinel 客戶(hù)端-->																								
<dependency>																																							
    <groupId>com.alibaba.cloud</groupId>																																							
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>																																							
</dependency>																																							

3.添加配置

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

4.啟動(dòng)jar

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

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

三 容錯(cuò)異常

FlowException)

降級(jí)
DegradeException)
參數(shù)熱點(diǎn)異常
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("進(jìn)入。。。 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每秒查詢(xún)率(Query Per Second)
原理:每天80%的訪(fǎng)問(wèn)集中在20%的時(shí)間里,這20%時(shí)間叫做峰值時(shí)間。

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

PV(page view)即頁(yè)面瀏覽量,通常是衡量一個(gè)網(wǎng)絡(luò)新聞?lì)l道或網(wǎng)站甚至一條網(wǎng)絡(luò)新聞的主要指標(biāo)。網(wǎng)頁(yè)瀏覽數(shù)是評(píng)價(jià)網(wǎng)站流量最常用的指標(biāo)之一,簡(jiǎn)稱(chēng)為PV。

機(jī)器:峰值時(shí)間每秒QPS / 單臺(tái)機(jī)器的QPS = 需要的機(jī)器 。

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

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

一般需要達(dá)到139QPS,因?yàn)槭欠逯怠?200萬(wàn)pv才有100峰值qps)

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

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

一個(gè)事務(wù)是指一個(gè)客戶(hù)機(jī)向服務(wù)器發(fā)送請(qǐng)求然后服務(wù)器做出反應(yīng)的過(guò)程。客戶(hù)機(jī)在發(fā)送請(qǐng)求時(shí)開(kāi)始計(jì)時(shí),收到服務(wù)器響應(yīng)后結(jié)束計(jì)時(shí),以此來(lái)計(jì)算使用的時(shí)間和完成的事務(wù)個(gè)數(shù)。

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

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

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

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

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

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

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

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

可能看到CPU的%user, %system都不高,%iowait可能會(huì)有點(diǎn)高,這時(shí)的Load通常比較高。

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

五:PV
頁(yè)面訪(fǎng)問(wèn)次數(shù):Page View

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

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

說(shuō)明:公式中的 8 指的是將 Byte 轉(zhuǎn)換為 bit,即 8b/B,因?yàn)閹挼膯挝皇?bps(比特率),即bit per second,每秒二進(jìn)制位數(shù),而容量單位一般使用 Byte。

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

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

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

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

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

總結(jié)

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

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

相關(guān)文章

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

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

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

    Java實(shí)現(xiàn)的簡(jiǎn)單數(shù)字處理類(lèi)及用法示例

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

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

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

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

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

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

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

    Java實(shí)戰(zhàn)之飛翔的小鳥(niǎo)小游戲

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

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

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

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

    本文主要介紹了SpringBoot實(shí)現(xiàn)Md5對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)加密的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot 2.0具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • SpringBoot參數(shù)校驗(yàn)與國(guó)際化使用教程

    SpringBoot參數(shù)校驗(yàn)與國(guó)際化使用教程

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

最新評(píng)論