国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Sentinel: 分布式系統(tǒng)的流量防衛(wèi)兵

jifei / 2832人閱讀

摘要:有沒有那么一個框架能夠把熔斷跟限流都給做了,以前沒有,但是現(xiàn)在有了,我這屬于自問自答哈這個框架就是阿里最新開源的。后來我才發(fā)現(xiàn)我錯了,大錯特錯,這是一個新的框架,潛力實力阿里開源。

前言

在 Spring Cloud 體系中,熔斷降級我們會使用 Hystrix 框架,限流通常會在 Zuul 中進行處理,Zuul 中沒有自帶限流的功能,我們可以自己做限流或者集成第三方開源的限流框架。最新一代的網(wǎng)關(guān) Spring Cloud Gateway 則自帶了限流的功能。

有沒有那么一個框架能夠把熔斷跟限流都給做了,以前沒有,但是現(xiàn)在有了,我這屬于自問自答哈!這個框架就是阿里最新開源的 Sentinel。

第一眼見到 Sentinel 有一種很熟悉的感覺,似曾相識啊!Redis 里面集群的那個哨兵模式不就是 Sentinel 嘛。后來我才發(fā)現(xiàn)我錯了,大錯特錯,這是一個新的框架,潛力 + 實力 = 阿里開源。

Sentinel 是什么?
本段介紹來源于Sentinel Github主頁介紹

隨著微服務(wù)的流行,服務(wù)和服務(wù)之間的穩(wěn)定性變得越來越重要。Sentinel 以流量為切入點,從流量控制、熔斷降級、系統(tǒng)負載保護等多個維度保護服務(wù)的穩(wěn)定性。

Sentinel 具有以下特征:

豐富的應(yīng)用場景:Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺(即突發(fā)流量控制在系統(tǒng)容量可以承受的范圍)、消息削峰填谷、集群流量控制、實時熔斷下游不可用應(yīng)用等。

完備的實時監(jiān)控:Sentinel 同時提供實時的監(jiān)控功能。您可以在控制臺中看到接入應(yīng)用的單臺機器秒級數(shù)據(jù),甚至 500 臺以下規(guī)模的集群的匯總運行情況。

廣泛的開源生態(tài):Sentinel 提供開箱即用的與其它開源框架/庫的整合模塊,例如與 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相應(yīng)的依賴并進行簡單的配置即可快速地接入 Sentinel。

完善的 SPI 擴展點:Sentinel 提供簡單易用、完善的 SPI 擴展接口。您可以通過實現(xiàn)擴展接口來快速地定制邏輯。例如定制規(guī)則管理、適配動態(tài)數(shù)據(jù)源等。

Sentinel 的主要特性:

Sentinel 的開源生態(tài):

初次見面的我們

先來簡單的體驗下 Sentinel 吧,在你的Maven項目中增加 Sentinel 的依賴:


    com.alibaba.csp
    sentinel-core
    1.4.1

Sentinel中需要限流的稱之為資源,對資源進行處理,下面來看最簡單的一段代碼:

public static void main(String[] args) {
    initFlowRules();
    while (true) {
        Entry entry = null;
        try {
            entry = SphU.entry("HelloWorld");
            /*您的業(yè)務(wù)邏輯 - 開始*/
            System.out.println("hello world");
            /*您的業(yè)務(wù)邏輯 - 結(jié)束*/
        } catch (BlockException e1) {
            /*流控邏輯處理 - 開始*/
            System.out.println("block!");
            /*流控邏輯處理 - 結(jié)束*/
        } finally {
           if (entry != null) {
               entry.exit();
           }
       }
    }
}

private static void initFlowRules(){
    List rules = new ArrayList<>();
    FlowRule rule = new FlowRule();
    rule.setResource("HelloWorld");
    rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
    // Set limit QPS to 20.
    rule.setCount(20);
    rules.add(rule);
    FlowRuleManager.loadRules(rules);
}

第一行中初始化限流的規(guī)則,創(chuàng)建了一個資源叫 HelloWorld,設(shè)置了這個資源的QPS 為 20。

在業(yè)務(wù)開始前使用SphU.entry();方法標識開始,結(jié)束使用entry.exit();,如果觸發(fā)了流控邏輯就會拋出BlockException異常讓用戶自行處理。

代碼運行之后,我們可以在日志 ~/logs/csp/${appName}-metrics.log.xxx 里看到下面的輸出:

|--timestamp-|------date time----|-resource-|p |block|s |e|rt
1529998904000|2018-06-26 15:41:44|HelloWorld|20|0    |20|0|0
1529998905000|2018-06-26 15:41:45|HelloWorld|20|5579 |20|0|728
1529998906000|2018-06-26 15:41:46|HelloWorld|20|15698|20|0|0
1529998907000|2018-06-26 15:41:47|HelloWorld|20|19262|20|0|0
1529998908000|2018-06-26 15:41:48|HelloWorld|20|19502|20|0|0
1529998909000|2018-06-26 15:41:49|HelloWorld|20|18386|20|0|0

p:通過的請求,

block:被阻止的請求

s:成功執(zhí)行完成的請求個數(shù)

e:用戶自定義的異常

rt:平均響應(yīng)時長。

我是Mac系統(tǒng),日志是在這個目錄下,Windows我沒試過,應(yīng)該也在用戶的主目錄下

上面這個列子是官方的示列,如果你覺得沒有看到你想要的效果,因為一直在循環(huán),也不知道有沒有限流成功,我們可以稍微改動一下進行測試就知道了。

將while循環(huán)改成for循環(huán), 次數(shù)為10000次,只輸出一句話,不做任何限制,執(zhí)行完成的時間大概在40毫秒左右。

long startTime = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
    System.out.println("hello world");
}
long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime);

下面加上限流的邏輯,執(zhí)行完成的時間基本上就超過100毫秒了,可見限流起了作用。

for (int i = 0; i < 10000; i++) {
    Entry entry = null;
    try {
        entry = SphU.entry("HelloWorld");
        // 資源中的邏輯.
        System.out.println("hello world");
    } catch (BlockException e1) {
        System.out.println("blocked!");
    } finally {
        if (entry != null) {
            entry.exit();
        }
    }
}
long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime);
歡迎加入我的知識星球,一起交流技術(shù),免費學(xué)習(xí)猿天地的課程(http://cxytiandi.com/course) PS:目前星球中正在星主的帶領(lǐng)下組隊學(xué)習(xí)Sentinel,等你哦!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/73518.html

相關(guān)文章

  • Spring Cloud Gateway 擴展支持動態(tài)限流

    摘要:以流量為切入點,從流量控制熔斷降級系統(tǒng)負載保護等多個維度保護服務(wù)的穩(wěn)定性分布式系統(tǒng)的流量防衛(wèi)兵。歡迎關(guān)注我們獲得更多的好玩實踐 之前分享過 一篇 《Spring Cloud Gateway 原生的接口限流該怎么玩》, 核心是依賴Spring Cloud Gateway 默認提供的限流過濾器來實現(xiàn) 原生RequestRateLimiter 的不足 配置方式 spring: clou...

    妤鋒シ 評論0 收藏0
  • Spring Cloud Gateway 擴展支持動態(tài)限流

    摘要:以流量為切入點,從流量控制熔斷降級系統(tǒng)負載保護等多個維度保護服務(wù)的穩(wěn)定性分布式系統(tǒng)的流量防衛(wèi)兵。歡迎關(guān)注我們獲得更多的好玩實踐 之前分享過 一篇 《Spring Cloud Gateway 原生的接口限流該怎么玩》, 核心是依賴Spring Cloud Gateway 默認提供的限流過濾器來實現(xiàn) 原生RequestRateLimiter 的不足 配置方式 spring: clou...

    beanlam 評論0 收藏0
  • Spring Cloud Alibaba基礎(chǔ)教程:使用Sentinel實現(xiàn)接口限流

    摘要:但是比較可惜的是已經(jīng)宣布對停止更新。客戶端整合每個微服務(wù)客戶端都需要整合的客戶端封裝與配置,才能將監(jiān)控信息上報給展示以及實時的更改限流或熔斷規(guī)則等。下面我們就分兩部分來看看,如何使用來實現(xiàn)接口限流。 最近管點閑事浪費了不少時間,感謝網(wǎng)友libinwalan的留言提醒。及時糾正路線,繼續(xù)跟大家一起學(xué)習(xí)Spring Cloud Alibaba。 Nacos作為注冊中心和配置中心的基礎(chǔ)教程,...

    stefanieliang 評論0 收藏0
  • 布式熔斷降級平臺aegis

    摘要:現(xiàn)狀分布式場景中。因此要對在原服務(wù)不可用時進行熔斷降級處理。分析熔斷降級可以服務(wù)端限流網(wǎng)關(guān)限流客戶端限流。它提供兩種資源隔離的模式信號量隔離和線程池隔離。支持流控熔斷降級系統(tǒng)保護等。它支持并發(fā)數(shù)的流量控制也支持熔斷降級。 現(xiàn)狀 分布式場景中。若服務(wù)不穩(wěn)定,會導(dǎo)致調(diào)用方服務(wù)也不可用,從而造成雪崩效應(yīng)。因此要對在原服務(wù)不可用時進行熔斷降級處理。 分析 熔斷降級可以服務(wù)端限流、網(wǎng)關(guān)限流、客戶...

    ixlei 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<