Dubbo3 配置規(guī)則

2022-04-02 10:07 更新

在 Dubbo 中配置應(yīng)用級(jí)治理規(guī)則和服務(wù)級(jí)治理規(guī)則

提示
本文描述的是新版本規(guī)則配置,而不是老版本配置規(guī)則

覆蓋規(guī)則是 Dubbo 設(shè)計(jì)的在無需重啟應(yīng)用的情況下,動(dòng)態(tài)調(diào)整 RPC 調(diào)用行為的一種能力。2.7.0 版本開始,支持從服務(wù)和應(yīng)用兩個(gè)粒度來調(diào)整動(dòng)態(tài)配置。

概覽

請(qǐng)?jiān)诜?wù)治理控制臺(tái)查看或修改覆蓋規(guī)則。

應(yīng)用粒度

# 將應(yīng)用demo(key:demo)在20880端口上提供(side:provider)的所有服務(wù)(scope:application)的權(quán)重修改為1000(weight:1000)。
---
configVersion: v2.7
scope: application
key: demo
enabled: true
configs:
- addresses: ["0.0.0.0:20880"]
  side: provider
  parameters:
  weight: 1000
  ...

服務(wù)粒度

# 所有消費(fèi)(side:consumer)DemoService服務(wù)(key:org.apache.dubbo.samples.governance.api.DemoService)的應(yīng)用實(shí)例(addresses:[0.0.0.0]),超時(shí)時(shí)間修改為6000ms
---
configVersion: v2.7
scope: service
key: org.apache.dubbo.samples.governance.api.DemoService
enabled: true
configs:
- addresses: [0.0.0.0]
  side: consumer
  parameters:
  timeout: 6000
  ...

規(guī)則詳解

配置模板

---
configVersion: v2.7
scope: application/service
key: app-name/group+service+version
enabled: true
configs:
- addresses: ["0.0.0.0"]
  providerAddresses: ["1.1.1.1:20880", "2.2.2.2:20881"]
  side: consumer
  applications/services: []
  parameters:
    timeout: 1000
    cluster: failfase
    loadbalance: random
- addresses: ["0.0.0.0:20880"]
  side: provider
  applications/services: []
  parameters:
    threadpool: fixed
    threads: 200
    iothreads: 4
    dispatcher: all
    weight: 200
...

其中:

  • configVersion 表示 dubbo 的版本
  • scope表示配置作用范圍,分別是應(yīng)用(application)或服務(wù)(service)粒度。必填。
  • key 指定規(guī)則體作用在哪個(gè)服務(wù)或應(yīng)用。必填。scope=service時(shí),key取值為[{group}:]{service}[:{version}]的組合
  • scope=application時(shí),key取值為application名稱
  • enabled=true 覆蓋規(guī)則是否生效,可不填,缺省生效。
  • configs 定義具體的覆蓋規(guī)則內(nèi)容,可以指定n(n>=1)個(gè)規(guī)則體。必填。
    • side
    • applications
    • services
    • parameters
    • addresses
    • providerAddresses

對(duì)于絕大多數(shù)配置場(chǎng)景,只需要理清楚以下問題基本就知道配置該怎么寫了:

  1. 要修改整個(gè)應(yīng)用的配置還是某個(gè)服務(wù)的配置。
    • 應(yīng)用:scope: application, key: app-name(還可使用services指定某幾個(gè)服務(wù))。
    • 服務(wù):scope: service, key:group+service+version 。
  2. 修改是作用到消費(fèi)者端還是提供者端。
    • 消費(fèi)者:side: consumer ,作用到消費(fèi)端時(shí)(你還可以進(jìn)一步使用providerAddress, applications選定特定的提供者示例或應(yīng)用)。
    • 提供者:side: provider。
  3. 配置是否只對(duì)某幾個(gè)特定實(shí)例生效。
    • 所有實(shí)例:addresses: ["0.0.0.0"] 或addresses: ["0.0.0.0:*"] 具體由side值決定。
    • 指定實(shí)例:addersses[實(shí)例地址列表]。
  4. 要修改的屬性是哪個(gè)。

示例

  1. 禁用提供者:(通常用于臨時(shí)踢除某臺(tái)提供者機(jī)器,相似的,禁止消費(fèi)者訪問請(qǐng)使用路由規(guī)則)
    --- 
    configVersion: v2.7 
    scope: application 
    key: demo-provider 
    enabled: true 
    configs: 
    - addresses: ["10.20.153.10:20880"]
      side: provider
      parameters: 
      disabled: true 
    ...
  2. 調(diào)整權(quán)重:(通常用于容量評(píng)估,缺省權(quán)重為 200)
    --- 
    configVersion: v2.7 
    scope: application 
    key: demo-provider 
    enabled: true 
    configs: 
    - addresses: ["10.20.153.10:20880"] 
      side: provider 
      parameters: 
      weight: 200 
    ...
  3. 調(diào)整負(fù)載均衡策略:(缺省負(fù)載均衡策略為 random)
    --- 
    configVersion: v2.7 
    scope: application 
    key: demo-consumer 
    enabled: true 
    configs: 
    - side: consumer 
      parameters: 
      loadbalance: random 
    ...
  4. 服務(wù)降級(jí):(通常用于臨時(shí)屏蔽某個(gè)出錯(cuò)的非關(guān)鍵服務(wù))
    --- 
    configVersion: v2.7 
    scope: service 
    key: org.apache.dubbo.samples.governance.api.DemoService 
    enabled: true 
    configs: 
    - side:
      consumer
      parameters: 
      force: return null 
    ...


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)