动态配置规则是 Dubbo 设计的在无需重启应用的情况下,动态调整 RPC 调用行为的一种能力。Dubbo 2.7.0 版本开始,支持从服务和应用两个粒度来调整动态配置。

创建动态配置

  1. 登录 EDAS 控制台
  2. 在左侧导航栏中选择微服务管理 > Dubbo服务治理
  3. Dubbo服务治理页面选择地域命名空间
  4. Dubbo服务治理左侧导航栏选择动态配置
  5. 查询结果区域右侧单击创建
  6. 创建新动态配置对话框中设置动态配置规则,配置完成后单击创建
    注意 在 EDAS 的 Dubbo 服务治理中,请勿将权重和负载均衡配置在动态配置中,EDAS 提供了权重配置负载均衡
    • 服务名:格式为 group/service:versiongroupversion 可为空。
    • 配置示例:DUBBO/com.alibaba.edas.HelloService:1.0.0。应用名:即 EDAS 中创建的应用名称。
    • 规则内容:您可在文本框中输入要动态配置的参数内容。配置示例如下:
      {
        "configVersion": "v2.7",
        "enabled": true,
        "configs": [
          {
            "addresses": [
              "0.0.0.0"
            ],
            "providerAddresses": [
              "1.1.1.1:20880",
              "2.2.2.2:20881"
            ],
            "side": "consumer",
            "parameters": {
              "timeout": "6000",
              "cluster": "failfast"
            }
          },
          {
            "addresses": [
              "0.0.0.0"
            ],
            "side": "consumer",
            "applications/services": [],
            "parameters": {
              "threadpool": "fixed",
              "threads": 200,
              "iothreads": 4,
              "dispatcher": "all"
            }
          }
        ]
      }

      以上配置示例中:

      • configVersion:表示 Dubbo 的版本。
      • enabled:覆盖规则是否生效,可不填,缺省生效。
      • configs:定义具体的规则内容,可以指定 n(n>=1)个规则体。例如 side、applications、services、parameters、addresses 和 providerAddresses。

      绝大多数配置场景需要清楚以下配置项信息:

      1. 针对服务消费者还是服务提供者进行配置:
        • 消费者:"side": "consumer",当对消费者进行配置时,还可以进一步使用providerAddress,applications 选定特定的提供者示例或应用。
        • 提供者:"side": "provider"
      2. 配置对应用实例生效的范围是:
        • 所有实例:“addresses”: ["0.0.0.0"]"addresses": ["0.0.0.0:*"]具体由 side 值决定。
        • 指定实例:"addersses": [实例地址列表]
      3. 要修改的属性有哪些。

动态配置规则示例

  • 禁用提供者应用:通常用于临时踢除某台提供者机器,相似的,禁止消费者访问请使用路由规则。
    {
        "configVersion": "v2.7",
        "enabled": true,
        "configs": [
          {
            "addresses": ["10.20.153.10:20880"],
            "side": "provider",
            "parameters": {
                "disabled": true
            }
          }
        ]
    }
  • 服务降级:通常用于临时屏蔽某个出错的非关键服务。
    {
        "configVersion": "v2.7",
        "enabled": true,
        "configs": [
          {
            "addresses": ["10.20.153.10:20880"],
            "side": "provider",
            "parameters": {
                "force": "return null"
            }
          }
        ]
    }