真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Sentinel擴(kuò)展機(jī)制是什么-創(chuàng)新互聯(lián)

這篇文章主要介紹“Sentinel擴(kuò)展機(jī)制是什么”,在日常操作中,相信很多人在Sentinel擴(kuò)展機(jī)制是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”Sentinel擴(kuò)展機(jī)制是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

青云譜ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

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

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

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

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

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

  • 啟動(dòng) Command Center

  • 初始化心跳發(fā)送

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

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

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

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

public class DemoSlot extends AbstractLinkedProcessorSlot {    @Override
    public void entry(Context context, ResourceWrapper resourceWrapper, DefaultNode node, int count, Object... args)
        throws Throwable {
        System.out.println("Current context: " + context.getName());
        System.out.println("Current entry resource: " + context.getCurEntry().getResourceWrapper().getName());
        fireEntry(context, resourceWrapper, node, count, args);
    }    @Override
    public void exit(Context context, ResourceWrapper resourceWrapper, int count, Object... args) {
        System.out.println("Exiting for entry on DemoSlot: " + context.getCurEntry().getResourceWrapper().getName());
        fireExit(context, resourceWrapper, count, args);
    }
}

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

package com.alibaba.csp.sentinel.demo.slot;public class DemoSlotChainBuilder implements SlotChainBuilder {    @Override
    public ProcessorSlotChain build() {
        ProcessorSlotChain chain = new DefaultSlotChainBuilder().build();
        chain.addLast(new DemoSlot());        return chain;
    }
}

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

# Custom slot chain buildercom.alibaba.csp.sentinel.demo.slot.DemoSlotChainBuilder

Sentinel 的熱點(diǎn)限流模塊就是利用了 Slot Chain 的擴(kuò)展機(jī)制來將熱點(diǎn)限流功能添加到原有的功能鏈中。

StatisticSlot Callback

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

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

  • ProcessorSlotExitCallback:包含 onExit 回調(diào)函數(shù),當(dāng)請求經(jīng) StatisticSlot exit 的時(shí)候執(zhí)行。

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

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

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

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

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

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

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

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

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

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

到此,關(guān)于“Sentinel擴(kuò)展機(jī)制是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請繼續(xù)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!


當(dāng)前題目:Sentinel擴(kuò)展機(jī)制是什么-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://weahome.cn/article/dophsh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部