EAS支持在服务运行时配置动态参数,无需重启服务即可生效,适用于限流配置、模型参数调整等场景。
功能介绍
动态参数是EAS提供的运行时配置能力,允许您在服务运行过程中实时修改参数配置,无需重启服务即可生效。
与环境变量的区别:
环境变量:在服务启动时注入,修改后需要重启服务才能生效。
动态参数:运行时可修改,修改后立即生效,无需重启服务。
核心优势:
配置实时生效,快速同步到所有容器实例。
不影响服务运行,避免因重启导致的服务中断。
适合频繁调整的配置项,如限流阈值、模型参数等。
使用场景
动态参数适用于以下场景:
动态调整限流配置:根据业务流量实时调整
rate_limit等限流参数。实时修改模型推理参数:调整
temperature、top_p、max_tokens等模型参数。调整日志级别:在排查问题时临时调整日志输出级别。
灰度发布开关控制:通过动态参数控制新功能的开关状态。
A/B测试配置:快速切换不同的配置策略进行效果对比。
前提条件
使用动态参数功能前,需要在服务配置中开启动态配置开关。在服务配置 JSON 的顶层添加 features 字段:
{
"name": "your-service-name",
...其他配置,
"features": {
"eas.aliyun.com/enable-properties": "true"
}
}例外情况:当服务使用了LLM智能路由时,会默认开启动态配置开关,无需手动配置。
操作步骤
步骤1:配置动态参数
动态参数支持两种更新方式:
通过动态参数配置项更新(推荐):在目标服务概览页面的动态参数配置项中修改,修改后实时生效,不会触发服务重启。
通过服务配置更新(不推荐):直接修改服务配置 JSON 中的
properties字段,会触发服务更新。
以下介绍通过动态参数配置项进行更新的步骤:
在推理服务页签,单击目标服务名称进入概览页面。
在环境信息区域的动态参数配置项,进行添加/修改配置。支持以下两种方式添加参数:
表格方式:逐行添加参数名和参数值。
JSON方式:以JSON格式批量添加参数。
单击提交保存配置。
步骤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:如何实现配置热加载?
建议使用以下两种方式实现配置热加载:
文件监听:使用文件系统监听工具(如Python的watchdog库)监听配置文件变化,文件更新后自动重新加载。
定时轮询:定时(如每5秒)读取配置文件,检查内容是否变化并更新内存中的配置。
Q:动态参数是否支持存储敏感信息(如密钥)?
不建议使用动态参数存储敏感信息。敏感信息(如API密钥、数据库密码)应使用环境变量或专门的密钥管理服务(如阿里云KMS)进行管理,确保安全性。