# 配置管理的UI模板

本文档主要针对Sermant Backend的配置管理功能,介绍如何开发配置管理的UI模板

# UI模板

# 功能介绍

Sermant Backend的配置管理功能依据UI模板进行配置查询、新增、修改时的页面渲染。

# 开发实例

配置管理的UI模板是以插件为维度的,每个插件的动态配置都对应一个UI模板。UI模板采用yaml格式,主要包含以下几部分:

# 插件的基本信息

参数键 说明 默认值 是否必须 备注
name-zh 插件的中文名称 null
name-en 插件的英文名称 null

# Group和Key生成规则

Group和Key生成规则主要用于结合元素信息生成插件动态配置的Group和Key。

参数键 说明 默认值 是否必须 备注
groupRule group的生成规则,如果由变量组成,如由应用名称、环境名称组成可以用app=${application}&environment=${environment}表示。变量名的key需要和元素名称保持一致 null
keyRule key的生成规则,和Group生成规则的表示方式一样 null

# 插件UI模板的元素信息elements

UI模板的元素信息会在配置详情页面上渲染为input框,从而让用户填写。根据用户填写的值结合Group和Key的生成规则会动态生成插件动态配置的Group和Key。

参数键 说明 默认值 是否必须 备注
name 元素名称 null
desc-zh 元素的中文展示名称 null
desc-en 元素的英文展示名称 null
values 元素的可选项 null 需要用户手动填写时非必须 values为数组格式,包含三个属性desc-zh: 可选项的中文展示名称,desc-en: 可选项的英文展示名称, name: 可选项的值
placeholder 元素信息对应input框的占位信息 null 包含两个属性desc-zh: 占位信息的中文展示内容,desc-en: 占位信息的英文展示内容
required 该元素信息是否必填 null
notice 该元素信息的提示信息 null 包含两个属性desc-zh: 提示信息的中文展示内容,desc-en: 提示信息的英文展示内容

# 插件的动态配置模板configTemplates

为了方便用户配置,配置详情页面会展示插件的动态配置模板,页面会根据动态配置模板信息去判断当前插件需要使用的是那一套动态配置模板(判断方式为通过正则表达式校验根据Key生成规则生成的key符合动态配置模板中那套模板的key)。

参数键 说明 默认值 是否必须 备注
key 动态配置key的匹配规则 null
value 插件的动态配置模板 null

# 效果

以流控插件动态配置的UI模板为例,模板内容如下所示:

plugin:
  name-zh: 流控插件
  name-en: flowcontrol
groupRule:
  - service=${service}
  - app=${application}&environment=${environment}&service=${service}
  - app=${application}&environment=${environment}
keyRule:
  - servicecomb.${ruleType}.${sceneName}
elements:
  - name: ruleType
    desc-zh: 规则类型
    desc-en: Rule Type
    values:
      - desc-zh: 流量匹配规则
        desc-en: Traffic Matching Rule
        name: matchGroup
      - desc-zh: 限流规则
        desc-en: Rate Limiting Rule
        name: rateLimiting
      - desc-zh: 熔断规则
        desc-en: Circuit Breaker Rule
        name: circuitBreaker
      - desc-zh: 隔离规则
        desc-en: Bulkhead Rule
        name: bulkhead
      - desc-zh: 错误注入
        desc-en: Fault Injection Rule
        name: faultInjection
      - desc-zh: 重试
        desc-en: Retry Rule
        name: retry
      - desc-zh: 系统级流控
        desc-en: System Level Flow Control
        name: system
    placeholder:
      desc-zh: 请选择规则类型
      desc-en: Please select a rule type
    required: true
    notice:
      desc-zh: 流控插件支持的规则类型
      desc-en: Rule types supported by the flow control plugin
  - name: sceneName
    desc-zh: 规则场景名称
    desc-en: Scene Name
    placeholder:
      desc-zh: 请输入场景名称
      desc-en: Please enter the scene name
    required: true
    notice:
      desc-zh: 流量匹配规则和具体流控规则的场景名称一致时流控规则才会生效
      desc-en: The flow control rule will only take effect when the scene name matches the traffic matching rule
  - name: application
    placeholder:
      desc-zh: 请输入应用名称
      desc-en: Please enter the application name
    required: true
    notice:
      desc-zh: 该配置对应sermant配置文件中的service.meta.application
      desc-en: This configuration corresponds to the service.meta.application  in the sermant configuration file
  - name: environment
    placeholder:
      desc-zh: 请输入环境名称
      desc-en: Please enter the environment name
    required: false
    notice:
      desc-zh: 该配置对应sermant配置文件中的service.meta.environment
      desc-en: This configuration corresponds to the service.meta.environment in the sermant configuration file
  - name: service
    desc-zh: service
    desc-en: service
    placeholder:
      desc-zh: 请输入服务名称
      desc-en: Please enter the service name
    required: true
    notice:
      desc-zh: 微服务的名称,由微服务配置文件的dubbo.application.name、spring.applicaton.name确定
      desc-en: The name of the microservice is determined by the dubbo.application.name and spring.application.name in the microservice configuration file
configTemplates:
  - key: servicecomb.matchGroup.*
    value: "matches:\n  - apiPath:\n      exact: /degrade\n    headers:\n      key:\n        exact: value\n    method:\n      - GET\n    name: degrade"
  - key: servicecomb.rateLimiting.*
    value: "limitRefreshPeriod: 1000\nrate: 2"
  - key: servicecomb.circuitBreaker.*
    value: "failureRateThreshold: 90\nminimumNumberOfCalls: 3\nslidingWindowSize: 10S\nslidingWindowType: time\nslowCallRateThreshold: 80"
  - key: servicecomb.bulkhead.*
    value: "maxConcurrentCalls: 5\nmaxWaitDuration: 10S"
  - key: servicecomb.faultInjection.*
    value: "type: abort\npercentage: 100\nfallbackType: ReturnNull\nforceClosed: false\nerrorCode: 503"
  - key: servicecomb.retry.*
    value: "waitDuration: 2000\nretryStrategy: FixedInterval\nmaxAttempts: 2\nretryOnResponseStatus:\n  - 500"
  - key: servicecomb.system.*
    value: "systemLoad: 5\ncpuUsage: 0.6\nqps: 1000\naveRt: 100\nthreadNum: 200"

页面展示内容如下所示:

上次更新: 2024/10/12 08:44:19