安全的營(yíng)銷(xiāo)型網(wǎng)站制作鄭州百度網(wǎng)站快速優(yōu)化
規(guī)則配置
要通過(guò) Sentinel 控制臺(tái)配置集群流控規(guī)則,需要對(duì)控制臺(tái)進(jìn)行改造。我們提供了相應(yīng)的接口進(jìn)行適配。
從 Sentinel 1.4.0 開(kāi)始,我們抽取出了接口用于向遠(yuǎn)程配置中心推送規(guī)則以及拉取規(guī)則:
DynamicRuleProvider<T>
: 拉取規(guī)則DynamicRulePublisher<T>
: 推送規(guī)則
對(duì)于集群限流的場(chǎng)景,由于每個(gè)集群限流規(guī)則都需要唯一的 flowId,因此我們建議所有的規(guī)則配置都通過(guò)動(dòng)態(tài)規(guī)則源進(jìn)行管理,并在統(tǒng)一的地方生成集群限流規(guī)則。
我們提供了新版的流控規(guī)則頁(yè)面,可以針對(duì)應(yīng)用維度推送規(guī)則,對(duì)于集群限流規(guī)則可以自動(dòng)生成 flowId。用戶(hù)只需實(shí)現(xiàn)?DynamicRuleProvider
?和?DynamicRulePublisher
?接口,即可實(shí)現(xiàn)應(yīng)用維度推送(URL:?/v2/flow
)。
注:應(yīng)用維度推送流控規(guī)則頁(yè)面的默認(rèn)實(shí)現(xiàn)僅僅是對(duì)舊版 API 的兼容(批量推送有效的機(jī)器/拉取最近有效的機(jī)器的規(guī)則),對(duì)集群規(guī)則無(wú)效。生產(chǎn)環(huán)境下不推薦使用默認(rèn)實(shí)現(xiàn),建議對(duì)接動(dòng)態(tài)規(guī)則源。
我們提供了 Nacos、ZooKeeper 和 Apollo 的推送和拉取規(guī)則實(shí)現(xiàn)示例(位于?test
?目錄下)。以 Nacos 為例,若希望使用 Nacos 作為動(dòng)態(tài)規(guī)則配置中心,用戶(hù)可以提取出相關(guān)的類(lèi),然后只需在?FlowControllerV2
?中指定對(duì)應(yīng)的 bean 即可開(kāi)啟 Nacos 適配。前端頁(yè)面需要手動(dòng)切換,或者修改前端路由配置(sidebar.html
?流控規(guī)則路由從?dashboard.flowV1
?改成?dashboard.flow
?即可,注意簇點(diǎn)鏈路頁(yè)面對(duì)話框需要自行改造)。
@Autowired @Qualifier("flowRuleNacosProvider") private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider; @Autowired @Qualifier("flowRuleNacosPublisher") private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;
默認(rèn) Nacos 適配的 dataId 和 groupId 約定如下:
- groupId:?
SENTINEL_GROUP
- 流控規(guī)則 dataId:?
{appName}-flow-rules
,比如應(yīng)用名為 appA,則 dataId 為?appA-flow-rules
用戶(hù)可以在?NacosConfigUtil
?修改對(duì)應(yīng)的 groupId 和 dataId postfix。用戶(hù)可以在?NacosConfig
?配置對(duì)應(yīng)的?Converter
,默認(rèn)已提供?FlowRuleEntity
?的 decoder 和 encoder。
注意:接入端也需要注冊(cè)對(duì)應(yīng)的動(dòng)態(tài)規(guī)則源,參考?集群流控規(guī)則配置文檔。
集群流控管理
注:客戶(hù)端必須引入集群限流相關(guān)依賴(lài)(比如需要使用集群限流,則需要引入集群限流 client 依賴(lài);若需要作為嵌入式的集群限流服務(wù)端,則還需要引入集群限流 server 依賴(lài)),否則無(wú)法進(jìn)行配置。
Sentinel 1.4.1 版本的控制臺(tái)引入了應(yīng)用維度的集群流控管理頁(yè)面,可以方便地從應(yīng)用維度分配 token server、查看相關(guān)狀態(tài)。我們可以在側(cè)邊欄點(diǎn)擊“集群流控”,進(jìn)入 Token Server 列表頁(yè)面,可以查看當(dāng)前應(yīng)用下所有的 token server 列表及相關(guān)狀態(tài):
我們可以點(diǎn)擊右上角的“添加 Token Server”按鈕來(lái)添加新的 token server 并分配 client:
Token Client 列表
?