国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - Java教程 - Java之springcloud Sentinel案例講解

Java之springcloud Sentinel案例講解

2021-11-12 14:10深情以改 Java教程

這篇文章主要介紹了Java之springcloud Sentinel案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下

一、Sentinel是什么?

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

二、使用步驟

1.下載地址

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

2.導入依賴

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

3.添加配置

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

4.啟動jar

Java之springcloud Sentinel案例講解

5 運行接口后就才能被監控,設置流控規則

Java之springcloud Sentinel案例講解

6 測試重復刷新后

Java之springcloud Sentinel案例講解

該處使用的url網絡請求的數據。

三 容錯異常

?
1
FlowException)

降級
DegradeException)
參數熱點異常
ParamFlowException
系統
SystemBlockException
授權
AuthorityException

自定義sentinel異常 BlockExceptionAspect

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@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);                                                                                                                                                                                                               
        // 統一返回結果                                                                                                                                                                                                              
        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包括一條消息入和一條消息出,加上一次用戶數據庫訪問。(業務TPS = CAPS × 每個呼叫平均TPS)

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

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

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

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

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

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

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

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

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

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

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

說明:公式中的 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 。

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

八:并發連接數
并發數是指系統同時能處理的請求數量,這個也是反應了系統的負載能力。

總結

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

到此這篇關于Java之springcloud Sentinel案例講解的文章就介紹到這了,更多相關Java之springcloud Sentinel內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_56219549/article/details/119514267

延伸 · 閱讀

精彩推薦
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
708
主站蜘蛛池模板: 久久久精品网站 | 日韩精品免费视频 | 日韩欧一区二区三区 | 在线精品亚洲欧美日韩国产 | 亚洲天堂黄色 | 宅男lu666噜噜噜在线观看 | 国产三级一区二区三区 | 精品久久网 | 在线观看91 | 国产亚洲视频在线观看 | 欧美亚洲天堂 | 亚洲乱码国产乱码精品精98午夜 | 你懂的免费在线观看 | 午夜av电影 | 亚洲免费精品 | 亚洲国产精品一区二区三区 | 国产在线精品一区二区三区 | 久久久一区二区三区 | 久久人爱| 一区二区av在线 | 久久久久亚洲 | 久久99精品久久久久蜜臀 | 久久99精品久久久 | 精品国偷自产国产一区 | 日韩视频专区 | 国产黄色a级毛片 | 欧美一区二区免费在线 | 中文在线观看www | 久久午夜精品 | 欧美日韩国产一区二区三区 | 中文字幕综合在线 | 久久伊人官网 | 91久久久久久久久久 | 在线日韩视频 | 成人免费黄色毛片 | 欧美日韩综合在线 | 国产精品久久久久久婷婷天堂 | 亚洲成年人影院 | 国产视频二区 | 国产黄色一级录像 | 久久视频免费 |