<strong id="0toem"><dl id="0toem"></dl></strong><b id="0toem"><menuitem id="0toem"></menuitem></b>

      <b id="0toem"><menuitem id="0toem"></menuitem></b>
    1. <code id="0toem"><abbr id="0toem"></abbr></code>
      <strong id="0toem"><dl id="0toem"></dl></strong>
      <kbd id="0toem"></kbd>
              1. <code id="0toem"></code>
                <th id="0toem"><progress id="0toem"></progress></th><strong id="0toem"><form id="0toem"></form></strong>

                <th id="0toem"></th>
              2. 131 1300 0010
                其他電源
                當(dāng)前位置: 首頁>> 電源技術(shù)>>其他電源>>
              3. 導(dǎo)航欄目
              4. 逆變電源
              5. 開關(guān)電源
              6. 電機(jī)伺服
              7. 其他電源
              8. Sentinel擴(kuò)展性設(shè)計機(jī)制分析
                Sentinel擴(kuò)展性設(shè)計機(jī)制分析
              9. Sentinel擴(kuò)展性設(shè)計機(jī)制分析
              10.   發(fā)布日期: 2018-10-26  瀏覽次數(shù): 1,789

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

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

                 

                  初始化邏輯擴(kuò)展機(jī)制

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

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

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

                  啟動 Command Center

                  初始化心跳發(fā)送

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

                  Slot Chain 擴(kuò)展機(jī)制

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

                  

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

                  

                  然后實現(xiàn)一個 SlotChainBuilder,可以在 DefaultSlotChainBuilder 的基礎(chǔ)上將我們新的 slot 添加到鏈的尾部(當(dāng)然也可以不用 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 的擴(kuò)展機(jī)制來將熱點限流功能添加到原有的功能鏈中。

                  StatisticSlot Callback

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

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

                  ProcessorSlotExitCallback:包含 onExit 回調(diào)函數(shù),當(dāng)請求經(jīng) 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ù)源職責(zé)更加清晰:

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

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

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

                  Transport 擴(kuò)展機(jī)制

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

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

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

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


              11. ·上一篇:
                ·下一篇:
              12. 其他關(guān)聯(lián)資訊
                深圳市日月辰科技有限公司
                地址:深圳市寶安區(qū)松崗鎮(zhèn)潭頭第二工業(yè)城A區(qū)27棟3樓
                電話:0755-2955 6626
                傳真:0755-2978 1585
                手機(jī):131 1300 0010
                郵箱:[email protected]

                深圳市日月辰科技有限公司 版權(quán)所有:Copyright?2010-2023 www.xydibang.com 電話:13113000010 粵ICP備2021111333號
                <strong id="0toem"><dl id="0toem"></dl></strong><b id="0toem"><menuitem id="0toem"></menuitem></b>

                    <b id="0toem"><menuitem id="0toem"></menuitem></b>
                  1. <code id="0toem"><abbr id="0toem"></abbr></code>
                    <strong id="0toem"><dl id="0toem"></dl></strong>
                    <kbd id="0toem"></kbd>
                            1. <code id="0toem"></code>
                              <th id="0toem"><progress id="0toem"></progress></th><strong id="0toem"><form id="0toem"></form></strong>

                              <th id="0toem"></th>
                            2. 殴美一级免费黄片 | 日韩中文无 | jiZZJIZZ成熟丰满少妇 | 欧美视频在线观看 | 91亚洲精品久久久久蜜桃 |