設定規則

在 Dubbo 中設定應用程式級治理規則和服務級治理規則

覆寫規則

覆寫規則是 Dubbo 設計的一種功能,可以在不重新啟動應用程式的情況下動態調整 RPC 呼叫的行為。從 2.7.0 版本開始,支援在服務應用程式兩個粒度上進行動態設定調整。

概覽

請在服務治理控制台中檢視或修改覆寫規則。

應用程式粒度

# Change the weight of all services (scope:application) provided by the application demo (key:demo) on port 20880 (side:provider) to 1000 (weight:1000).
---
configVersion: v2.7
scope: application
key: demo
enabled: true
configs:
- addresses: ["0.0.0.0:20880"]
  side: provider
  parameters:
  weight: 1000
  ...

服務粒度

# All consumer (side:consumer) DemoService service (key:org.apache.dubbo.samples.governance.api.DemoService) application instance (addresses:[0.0.0.0]), the timeout is changed to 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
  ...

規則詳情

設定範本

---
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 表示設定的範圍,即應用程式或服務的粒度。必填
  • key 指定規則主體作用於哪個服務或應用程式。必填
    • 當 scope=service 時,key 值為 [{group}:]{service}[:{version}] 的組合
  • 當 scope=application 時,key 值為應用程式名稱
  • enabled=true 覆寫規則是否生效,可以留空,預設生效。
  • configs 定義具體的覆蓋規則內容,可以指定 n (n>=1) 個規則主體。必填
    • 端,
    • 應用程式
    • 服務 - 參數
    • 地址
    • 提供者地址

對於大多數設定場景,您只需要釐清以下問題即可知道如何編寫設定

  1. 您是要修改整個應用程式的設定還是服務的設定。

    • 應用程式:scope: application, key: app-name(您也可以使用 services 指定特定服務)。
    • 服務:scope: service, key:group+service+version
  2. 修改是應用於消費者端還是提供者端。

    • 消費者:side: consumer,在消費者端生效時(您可以進一步使用 providerAddressapplications 來選擇特定的提供者實例或應用程式)。
    • 提供者:side: provider
  3. 組態是否僅對某些特定實例生效。

    • 所有實例:addresses: ["0.0.0.0"]addresses: ["0.0.0.0:*"],具體取決於端的值。
    • 指定實例:addersses[實例地址列表]
  4. 要修改的屬性。

範例

1. 禁用提供者:(通常用於暫時剔除一台提供者機器,類似地,請使用路由規則禁止消費者訪問)

---
configVersion: v2.7
scope: application
key: demo-provider
enabled: true
configs:
- addresses: ["10.20.153.10:20880"]
  side: provider
  parameters:
    disabled: true
...

2. 調整權重:(通常用於容量評估,預設權重為 200)

---
configVersion: v2.7
scope: application
key: demo-provider
enabled: true
configs:
- addresses: ["10.20.153.10:20880"]
  side: provider
  parameters:
    weight: 200
...

3. 調整負載均衡策略:(預設負載均衡策略為隨機)

---
configVersion: v2.7
scope: application
key: demo-consumer
enabled: true
configs:
- side: consumer
  parameters:
    loadbalance: random
...

4. 服務降級:(通常用於暫時遮蔽發生錯誤的非關鍵服務)

```yaml

configVersion: v2.7 scope: service key: org.apache.dubbo.samples.governance.api.DemoService enabled: true configs

  • side: consumer parameters: force: return null …

上次修改時間:2023 年 1 月 2 日:增強英文文件 (#1798) (95a9f4f6c1c)