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

Java之springcloud Sentinel案例講解

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

一、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網絡請求的數據。

三 容錯異常

FlowException)

降級
DegradeException)
參數熱點異常
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數 * 80% ) / ( 每天秒數 * 20% ) = 峰值時間每秒請求數(QPS) 。

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

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

每天300w PV 的在單臺機器上,這臺機器需要多少QPS?

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

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

二:TPS
TPS:Transactions Per Second(每秒傳輸的事物處理個數),即服務器每秒處理的事務數。

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

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

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

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

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

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

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

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

最后,說一下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利用率不一定高。這種情況,還經常發(fā)生在系統(tǒng)內存不足并開始使用swap的時候,Load一般會比較高,而CPU使用率并不高。

五:PV
頁面訪問次數:Page View

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

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

說明:公式中的 8 指的是將 Byte 轉換為 bit,即 8b/B,因為帶寬的單位是 bps(比特率),即bit per second,每秒二進制位數,而容量單位一般使用 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ā)連接數
并發(fā)數是指系統(tǒng)同時能處理的請求數量,這個也是反應了系統(tǒng)的負載能力。

總結

功能 Sentinel Hystrix resilience4j
隔離策略 信號量隔離(并發(fā)線程數限流) 線程池隔離/信號量隔離 信號量隔離
熔斷降級策略 基于響應時間、異常比率、異常數 基于異常比率 基于異常比率、響應時間
實時統(tǒng)計實現(xiàn) 滑動窗口(LeapArray) 滑動窗口 (基于 RxJava)
動態(tài)規(guī)則配置 支持多種數據源 支持多種數據源 有限支持
擴展性 多個擴展點 插件的形式 接口的形式
基于注解的支持 支持 支持 支持
限流 基于 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內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 關于java String中intern的深入講解

    關于java String中intern的深入講解

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

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

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

    Spring Cloud入門系列服務提供者總結

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

    Java實現(xiàn)簡單樹結構

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

    java?ThreadPoolExecutor線程池內部處理流程解析

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

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

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

    hibernate存取json數據的代碼分析

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

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

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

    Spring Boot 2.0快速構建服務組件全步驟

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

    SpringBoot參數校驗與國際化使用教程

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

最新評論