巨污gif动态图出处第900期_国产精品手机视频一区二区_狠狠色婷婷丁香综合久久韩国_操美女的软件

131 1300 0010
其他電源
當前位置: 首頁>> 電源技術>>其他電源>>
  • 導航欄目
  • 逆變電源
  • 開關電源
  • 電機伺服
  • 其他電源
  • Sentinel擴展性設計機制分析
    Sentinel擴展性設計機制分析
  • Sentinel擴展性設計機制分析
  •   發布日期: 2018-10-26  瀏覽次數: 1,415

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

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

     

      初始化邏輯擴展機制

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

      注冊動態規則源(示例)

      注冊 StatisticSlot 回調函數(示例)

      啟動 Command Center

      初始化心跳發送

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

      Slot Chain 擴展機制

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

      

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

      

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

      

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

      # Custom slot chain builder

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

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

      StatisticSlot Callback

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

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

      ProcessorSlotExitCallback:包含 onExit 回調函數,當請求經 StatisticSlot exit 的時候執行。

      用戶只需將實現的 callback 注冊到 StatisticSlotCallbackRegistry 即可生效。

      動態規則源

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

      讀數據源僅負責監聽或輪詢讀取遠程存儲的變更。

      寫數據源僅負責將規則變更寫入到規則源中。

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

      Transport 擴展機制

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

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

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

      作者:云棲社區 中間件小哥


  • ·上一篇:
    ·下一篇:
  • 其他關聯資訊
    深圳市日月辰科技有限公司
    地址:深圳市寶安區松崗鎮潭頭第二工業城A區27棟3樓
    電話:0755-2955 6626
    傳真:0755-2978 1585
    手機:131 1300 0010
    郵箱:hu@szryc.com

    深圳市日月辰科技有限公司 版權所有:Copyright?2010-2023 m.267818.cn 電話:13113000010 粵ICP備2021111333號