吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Sentinel擴展性設計機制分析

電子設計 ? 2018-10-26 10:03 ? 次閱讀

Sentinel 提供多樣的 SPI 接口用于提供擴展的能力。用戶可以在用同一個 sentinel-core 的基礎上自行擴展接口實現(xiàn),從而可以方便地給 Sentinel 添加自定義的邏輯。 初始化邏輯擴展機制 為了統(tǒng)一初始化的流程,我們抽象出了 InitFunc 接口代表 Sentinel 的一些初始化邏輯,如: 注冊動態(tài)規(guī)則源(示例) 注冊 StatisticSlot 回調函數(shù)(示例) 啟動 Command Center 初始化心跳發(fā)送 我們可以通過注解設置 InitFunc 執(zhí)行的優(yōu)先級。

Sentinel 提供多樣的 SPI 接口用于提供擴展的能力。用戶可以在用同一個 sentinel-core 的基礎上自行擴展接口實現(xiàn),從而可以方便地給 Sentinel 添加自定義的邏輯。

初始化邏輯擴展機制

為了統(tǒng)一初始化的流程,我們抽象出了 InitFunc 接口代表 Sentinel 的一些初始化邏輯,如:

注冊動態(tài)規(guī)則源(示例)

注冊 StatisticSlot 回調函數(shù)(示例)

啟動 Command Center

初始化心跳發(fā)送

我們可以通過注解設置 InitFunc 執(zhí)行的優(yōu)先級。當應用首次訪問資源時,注冊的初始化函數(shù)會依次執(zhí)行。若希望手動提前觸發(fā)初始化,可以在相應的位置(如 Spring Bean)調用 InitExecutor.doInit() 函數(shù),重復調用只會執(zhí)行一次。

Slot Chain 擴展機制

Sentinel 內部是通過一系列的 slot 組成的 slot chain 來完成各種功能的,包括構建調用鏈、調用數(shù)據(jù)統(tǒng)計、規(guī)則檢查等。各個 slot 之間的順序非常重要。Sentinel 將 SlotChainBuilder 作為 SPI 接口進行擴展,使得 Slot Chain 具備了擴展的能力。用戶可以自行加入自定義的 slot 并編排 slot 間的順序,從而可以給 Sentinel 添加自定義的功能。

比如我們想要在請求 pass 后記錄當前的 context 和資源信息,則可以實現(xiàn)一個簡單的 slot:

然后實現(xiàn)一個 SlotChainBuilder,可以在 DefaultSlotChainBuilder 的基礎上將我們新的 slot 添加到鏈的尾部(當然也可以不用 DefaultSlotChainBuilder,自由組合現(xiàn)有的 slot):

最后在 resources/META-INF/services 目錄下的 SPI 配置文件 com.alibaba.csp.sentinel.slotchain.SlotChainBuilder 中添加上實現(xiàn)的 SlotChainBuilder 的類名即可生效:

# Custom slot chain builder

com.alibaba.csp.sentinel.demo.slot.DemoSlotChainBuilder

Sentinel 的熱點限流模塊就是利用了 Slot Chain 的擴展機制來將熱點限流功能添加到原有的功能鏈中。

StatisticSlot Callback

之前 StatisticSlot 里面包含了太多的邏輯,像普通 QPS 和 熱點參數(shù) QPS 的 addPass/addBlock 等邏輯統(tǒng)計都在 StatisticSlot 里面,各個邏輯都雜糅在一起,不利于擴展。因此有必要為 StatisticSlot 抽象出一系列的 callback,從而使 StatisticSlot 具備基本的擴展能力,并將一系列的邏輯從 StatisticSlot 解耦出來,更為清晰。目前 Sentinel 提供了兩種 callback:

ProcessorSlotEntryCallback:包含 onPass 和 onBlocked 兩個回調函數(shù),分別對應請求通過 StatisticSlot 和請求被 blocked 的時候執(zhí)行。

ProcessorSlotExitCallback:包含 onExit 回調函數(shù),當請求經 StatisticSlot exit 的時候執(zhí)行。

用戶只需將實現(xiàn)的 callback 注冊到 StatisticSlotCallbackRegistry 即可生效。

動態(tài)規(guī)則源

Sentinel 的 動態(tài)規(guī)則數(shù)據(jù)源 用于從外部的存儲中讀取及寫入規(guī)則。Sentinel 將動態(tài)規(guī)則數(shù)據(jù)源劃分為兩種類型:讀數(shù)據(jù)源(ReadableDataSource)和寫數(shù)據(jù)源(WritableDataSource),從而使不同類型的數(shù)據(jù)源職責更加清晰:

讀數(shù)據(jù)源僅負責監(jiān)聽或輪詢讀取遠程存儲的變更。

寫數(shù)據(jù)源僅負責將規(guī)則變更寫入到規(guī)則源中。

我們只需要自己實現(xiàn)動態(tài)規(guī)則源,然后將其注冊至對應的 RuleManager 上,這樣就可以實時地配置規(guī)則并進行拉取/推送了。注冊動態(tài)規(guī)則源時可以借助 Sentinel 的 InitFunc SPI 在初始化時自動注冊。

Transport 擴展機制

CommandCenter 可擴展:用戶可以用不同的網絡協(xié)議或不同的庫來實現(xiàn) Transport API Server。

HeartbeatSender 可擴展:用戶可以用不同的網絡協(xié)議和心跳策略來實現(xiàn)心跳發(fā)送(上報到控制臺)。

CommandHandler 可擴展:用戶可以自行實現(xiàn) CommandHandler 并注冊到 SPI 配置文件中來為 CommandCenter 添加自定義的命令。

作者:云棲社區(qū) 中間件小哥

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SPI接口
    +關注

    關注

    0

    文章

    259

    瀏覽量

    34549
  • Sentinel
    +關注

    關注

    0

    文章

    10

    瀏覽量

    7167
收藏 人收藏

    評論

    相關推薦

    Facebook的擴展性挑戰(zhàn)討論

    今天我們一起來了解Facebook背后的軟件,看看作為當今世界上訪問量最大的網站之一,F(xiàn)acebook是如何保證5億用戶的系統(tǒng)一直穩(wěn)定可靠的運行。 Facebook的擴展性挑戰(zhàn)
    發(fā)表于 07-17 07:22

    支持多內核可擴展性的網關,不看肯定后悔

    支持多內核可擴展性的網關,不看肯定后悔
    發(fā)表于 05-25 06:49

    請問處理器擴展性有什么重要之處?

    處理器擴展性有什么重要之處?
    發(fā)表于 06-17 09:51

    多機飛行仿真系統(tǒng)擴展性研究

    針對以往多機飛行仿真系統(tǒng)中存在擴展性差的問題,在利用新一代分布式仿真技術框架結構開發(fā)該系統(tǒng)的基礎上,采用時間同步和數(shù)據(jù)過濾的方式來提高系統(tǒng)的擴展性。從基于HLA 協(xié)議開
    發(fā)表于 05-12 17:06 ?22次下載
    多機飛行仿真系統(tǒng)<b class='flag-5'>擴展性</b>研究

    OpenStack 企業(yè)私有云需大規(guī)模擴展性支持

    擴展性(Scalability)是云的基本要素之一,因此對 OpenStack 云也不例外。 一方面,和已經非常成熟的公有云和私有云方案相比,目前的 OpenStack 在擴展性方面還有很多的不足
    發(fā)表于 10-11 10:25 ?0次下載
    OpenStack 企業(yè)私有云需大規(guī)模<b class='flag-5'>擴展性</b>支持

    基于軟件定義網絡控制可擴展性研究

    問題,對SDN控制平面可擴展性相關工作進行綜述.首先分析控制平面可擴展性的影響因素并給出改善思路:在此基礎上,從數(shù)據(jù)平面緩存優(yōu)化、高性能控制器、分布式控制平面和控制資源優(yōu)化分配4種技術路線出發(fā),論述了主要的解決方案和研究進展,最
    發(fā)表于 12-19 18:07 ?0次下載
    基于軟件定義網絡控制可<b class='flag-5'>擴展性</b>研究

    為什么區(qū)塊鏈擴展性如此困難

    擴展性的爭論遍及整個數(shù)字貨幣社區(qū)。隨著一些重大事件的發(fā)生,在短短幾天時間內,就會導致整個以太網絡的崩潰,比如CryptoKitties。正如大家所知道的,當前狀態(tài)下最大的公共區(qū)塊鏈不能處理過多的事務,因此需要擴展
    發(fā)表于 12-13 14:51 ?1282次閱讀

    如何使用BPL和DLL進行程序的擴展性資料說明

    本文檔的主要內容詳細介紹的是如何使用BPL和DLL進行程序的擴展性資料說明。
    發(fā)表于 05-17 18:05 ?0次下載
    如何使用BPL和DLL進行程序的<b class='flag-5'>擴展性</b>資料說明

    區(qū)塊鏈可擴展性的要點分別是什么

    大多數(shù)關于可擴展性的討論都圍繞著各種平臺每秒可以處理的交易數(shù)量。
    發(fā)表于 10-31 09:31 ?2531次閱讀

    如何提高比特幣的可擴展性

    多年來,比特幣社區(qū)就如何提高比特幣的可擴展性提出了各種各樣的建議,但總體上還沒有能夠達成全面共識。這就是為什么我們目前有幾個類似比特幣的網絡從原始網絡分支出來。
    發(fā)表于 03-07 08:54 ?1379次閱讀

    區(qū)塊鏈可擴展性有怎樣的要點

    很難說誰的可擴展性方法最終會更可行。然而,如果每個參與者都認識到存在的選擇比表面上的要多,那就更好了。
    發(fā)表于 03-07 14:40 ?827次閱讀

    影響軟件高可擴展性的六大因素

    軟件可擴展性是一個有趣的話題。實現(xiàn)軟件可擴展性涉及很多因素,我們在本文將討論一些與開發(fā)和運維方面相關的因素。
    的頭像 發(fā)表于 02-17 16:13 ?8809次閱讀
    影響軟件高可<b class='flag-5'>擴展性</b>的六大因素

    什么是可擴展性,為什么它很重要

    擴展性是按需輕松擴展或升級的能力。它是產品、系統(tǒng)、團隊或公司提供滿足不斷增長的需求的服務的能力。提供足夠的基礎設施來滿足更苛刻的IT要求,例如增加存儲和安全性,同時保持低成本,是數(shù)據(jù)中心運營商的日常斗爭。
    的頭像 發(fā)表于 04-21 10:36 ?5181次閱讀
    什么是可<b class='flag-5'>擴展性</b>,為什么它很重要

    SD-WAN組網的可擴展性怎么樣?

    SD-WAN組網具有很好的可擴展性,能夠輕松滿足企業(yè)網絡不斷擴張和增長的需求,同時保持網絡的高效和可管理性,這使得SD-WAN組網能夠隨著企業(yè)的快速發(fā)展而快速調整規(guī)模,變更拓撲,采取不同的接入方式等
    的頭像 發(fā)表于 08-18 11:29 ?566次閱讀

    擴展性對物聯(lián)網管理系統(tǒng)有哪些影響?

    擴展性對于物聯(lián)網管理系統(tǒng)的設計和開發(fā)非常重要,它直接影響著系統(tǒng)的性能、可靠性和能耗等方面,是評估一個系統(tǒng)優(yōu)劣的重要因素之一。可擴展性對物聯(lián)網管理系統(tǒng)的影響主要體現(xiàn)在以下幾個方面:
    的頭像 發(fā)表于 10-11 15:15 ?551次閱讀
    大发888网页出纳柜台| 迷你百家乐的玩法技巧和规则| 云顶国际网站| 百家乐分析网| 百家乐官网喜牛| 澳门网络游戏| 真人百家乐蓝盾赌场娱乐网规则 | 大发888游戏代充| 百家乐官网棋牌游戏开发| 房产| 百家乐国际娱乐网| 新东方百家乐官网的玩法技巧和规则| 真钱棋牌导航| 澳门百家乐怎赌才能赚钱| 百家乐官网出庄的概率| 兴山县| 大发888登陆网页| 百家乐凯时赌场娱乐网规则| 博彩百家乐官网后一预测软件 | 百家乐9点| 赢家百家乐官网的玩法技巧和规则 | 百家乐官网庄闲概率| 嘉祥县| bet365备用器| 威尼斯人娱乐城真假性| 百家乐投注五揽式| 吕百家乐官网赢钱律| 百家乐官网变牌桌| 百家乐官网真人游戏网上投注| 西充县| 中国足球竞彩网| 德州扑克发牌视频| 大发888娱乐城论坛| tt百家乐的玩法技巧和规则| 太阳城百家乐试玩优惠| 我的做生意财位| 真人百家乐官网游戏网| 澳门百家乐官网牌规| 宁河县| 什么百家乐官网平注法| 百家乐官网网站新全讯网|