配置动态参数

更新时间:
复制为 MD 格式

EAS支持在服务运行时配置动态参数,无需重启服务即可生效,适用于限流配置、模型参数调整等场景。

功能介绍

动态参数是EAS提供的运行时配置能力,允许您在服务运行过程中实时修改参数配置,无需重启服务即可生效。

与环境变量的区别:

  • 环境变量:在服务启动时注入,修改后需要重启服务才能生效。

  • 动态参数:运行时可修改,修改后立即生效,无需重启服务。

核心优势:

  • 配置实时生效,快速同步到所有容器实例。

  • 不影响服务运行,避免因重启导致的服务中断。

  • 适合频繁调整的配置项,如限流阈值、模型参数等。

使用场景

动态参数适用于以下场景:

  • 动态调整限流配置:根据业务流量实时调整rate_limit等限流参数。

  • 实时修改模型推理参数:调整temperaturetop_pmax_tokens等模型参数。

  • 调整日志级别:在排查问题时临时调整日志输出级别。

  • 灰度发布开关控制:通过动态参数控制新功能的开关状态。

  • A/B测试配置:快速切换不同的配置策略进行效果对比。

前提条件

使用动态参数功能前,需要在服务配置中开启动态配置开关。在服务配置 JSON 的顶层添加 features 字段:

{
  "name": "your-service-name",
  ...其他配置,
  "features": {
    "eas.aliyun.com/enable-properties": "true"
  }
}
说明

例外情况:当服务使用了LLM智能路由时,会默认开启动态配置开关,无需手动配置。

操作步骤

步骤1:配置动态参数

动态参数支持两种更新方式:

  • 通过动态参数配置项更新(推荐):在目标服务概览页面的动态参数配置项中修改,修改后实时生效,不会触发服务重启。

  • 通过服务配置更新(不推荐):直接修改服务配置 JSON 中的 properties 字段,会触发服务更新。

以下介绍通过动态参数配置项进行更新的步骤:

  1. 推理服务页签,单击目标服务名称进入概览页面。

  2. 环境信息区域的动态参数配置项,进行添加/修改配置。支持以下两种方式添加参数:

    • 表格方式:逐行添加参数名和参数值。

    • JSON方式:以JSON格式批量添加参数。

  3. 单击提交保存配置。

步骤2:验证配置生效

配置保存后,系统会自动将参数快速同步到所有容器实例。

配置文件路径为:/eas/workspace/properties/service.json

您可以在应用代码中读取该配置文件来使用动态参数。

使用示例

以下示例展示如何配置限流参数,以及在应用代码中读取动态参数。

配置限流参数:

{
  "properties": {
    "rate_limit": 100,
    "max_concurrent_requests": 50,
    "timeout_seconds": 30
  }
}

在应用中读取动态参数(Python):

import json

# 读取动态参数
def load_properties():
    try:
        with open('/eas/workspace/properties/service.json', 'r') as f:
            properties = json.load(f)
        return properties
    except Exception as e:
        print(f"Failed to load properties: {e}")
        return {}

# 使用动态参数
properties = load_properties()
rate_limit = properties.get('rate_limit', 100)
max_concurrent = properties.get('max_concurrent_requests', 50)

print(f"Rate limit: {rate_limit}")
print(f"Max concurrent requests: {max_concurrent}")

常见问题

Q:修改动态参数后多久生效?

动态参数修改后,会快速自动同步到所有容器实例的配置文件。但应用需要实现配置热加载机制(如文件监听或定时轮询)才能读取到最新配置。

Q:如何实现配置热加载?

建议使用以下两种方式实现配置热加载:

  • 文件监听:使用文件系统监听工具(如Pythonwatchdog库)监听配置文件变化,文件更新后自动重新加载。

  • 定时轮询:定时(如每5秒)读取配置文件,检查内容是否变化并更新内存中的配置。

Q:动态参数是否支持存储敏感信息(如密钥)?

不建议使用动态参数存储敏感信息。敏感信息(如API密钥、数据库密码)应使用环境变量或专门的密钥管理服务(如阿里云KMS)进行管理,确保安全性。