一、概述
在默认的无状态路由下,同一会话的多次请求可能被分发到不同的 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 可以自己定义吗 | 可以。由客户端生成并保证同一会话内保持一致即可 |
| 修改会话亲和配置需要重启服务吗 | 不需要。保存后随本次部署生效,待服务状态变为运行中即可 |