本文档介绍如何在 EdgeOne 边缘推理 中开启并使用会话亲和(Session Affinity),将同一会话的多次请求优先调度到同一个 GPU 实例,复用实例上已缓存的上下文前缀,降低多轮对话、长上下文场景下的首字延迟(TTFT)。
概述
在默认的无状态路由下,同一会话的多次请求可能被分发到不同的 GPU 实例,每轮请求都需要重新计算完整的上下文前缀,在长上下文场景下会带来较高的首字延迟与重复计算成本。
开启会话亲和后,客户端在请求 Header 中携带会话标识(sessionId),平台会将相同 sessionId 的请求优先调度到同一个 GPU 实例,从而复用该实例上已缓存的前缀计算结果。
说明:
会话亲和采用优先调度策略,并非强制绑定。单个实例存在并发上限,当目标实例并发已满时,请求可能会被调度到其他实例,此时无法复用原实例上已缓存的前缀。
适用场景
多轮对话:Chatbot、智能客服等每轮请求都携带完整对话历史的场景。
长上下文追问:基于同一份长文档进行多次提问,如文档问答、代码分析。
实时交互:语音对话、实时翻译等对首字延迟敏感的场景。
若您的请求彼此独立、不携带历史上下文,开启会话亲和不会带来收益。
使用限制
当前支持的会话标识来源为 HTTP Header,Header 字段名可在服务配置时指定。
Header 字段名仅支持字母、数字、中划线,长度 1-64 字符。
会话亲和为优先调度策略,受单实例并发上限影响,不保证同一会话的全部请求都调度到同一实例。
未携带会话标识的请求可正常调用,平台按默认策略处理。
操作步骤
步骤一:创建服务
1. 登录 EdgeOne 控制台,页面将自动定位至边缘推理,单击创建项目或单击具体的项目名称。


2. 在服务列表页单击创建服务,按页面提示完成基础设置、镜像设置与资源设置。




步骤二:配置会话亲和
1. 页面向下滚动至高级设置区块。
2. 打开会话亲和开关。开关下方将展开 Header 字段 输入框。
3. 填写 Header 字段,即客户端请求中用于携带 sessionId 的自定义 HTTP Header 字段名。默认值为
EO-Infer-Session-Id,可按需修改。4. 单击创建。


步骤三:等待部署完成
创建后服务进入部署中状态,可在部署历史页签查看进度。服务状态变为运行中后配置即生效,无需额外重启服务,缩容排空、故障切换等场景由平台自动处理。


调用方式
开启会话亲和后,客户端在每次请求的 Header 中携带步骤二配置的 Header 字段,取值为本次会话的唯一标识(sessionId)。同一会话的所有请求使用相同取值,不同会话使用不同取值。
请求参数
参数 | 位置 | 类型 | 必填 | 说明 |
EO-Infer-Session-Id | Header | string | 否 | 会话标识,由客户端生成并保证同一会话内保持一致。字段名以服务配置中的 Header 字段为准 |
curl 示例:
curl https://YOUR_SERVICE_URL/v1/chat/completions \\-H "Authorization: Bearer YOUR_API_TOKEN" \\-H "Content-Type: application/json" \\-H "EO-Infer-Session-Id: your-session-001" \\-d '{"model": "your-model","messages": [{"role": "user", "content": "你好"}],"max_tokens": 256}'
curl https://YOUR_SERVICE_URL/v1/chat/completions \\-H "Authorization: Bearer YOUR_API_TOKEN" \\-H "Content-Type: application/json" \\-H "EO-Infer-Session-Id: your-session-001" \\-d '{"model": "your-model","messages": [{"role": "user", "content": "你好"},{"role": "assistant", "content": "(上一轮返回内容)"},{"role": "user", "content": "继续追问的内容"}],"max_tokens": 256}'
请将示例中的
YOUR_SERVICE_URL、YOUR_API_TOKEN 替换为您在服务详情页基础信息中获取的访问地址与 API Token。常见问题
问题 | 说明 |
开启后是否必须每次请求都带 Header | 不是必须的。未携带该 Header 的请求可正常调用,平台按默认策略处理 |
同一 sessionId 的请求一定会调度到同一实例吗 | 不一定。会话亲和为优先调度策略,当目标实例并发已达上限时,请求会被调度到其他实例 |
Header 字段名有什么限制 | 仅支持字母、数字、中划线,长度 1-64 字符,否则保存时校验不通过 |
sessionId 可以自己定义吗 | 可以。由客户端生成并保证同一会话内保持一致即可 |
修改会话亲和配置需要重启服务吗 | 不需要。保存后随本次部署生效,待服务状态变为运行中即可 |