本文介绍如何通过函数计算控制台实现实例隔离效果。
使用限制
仅实例规格中vCPU大于等于2的函数支持配置请求隔离和会话隔离。
开启请求隔离的同时无法开启会话隔离。
开启请求隔离后,系统将自动设置单实例并发度为1,确保当前函数内的每一个实例始终只能处理一个请求,此时,您之前配置的单实例并发度大于1的操作会失效。
异步任务请求不支持会话隔离。
操作步骤
登录函数计算控制台,在左侧导航栏,选择函数,然后在上方菜单栏,选择地域。
在函数页面,单击创建函数,在创建函数页面,选择函数类型,找到隔离性、亲和性区域,参考以下指导配置完成后单击创建。
- 请求隔离
实例隔离选择请求隔离。
- 会话隔离
实例隔离选择会话隔离。
开启会话隔离的同时,系统自动开启会话亲和,您需要进一步配置会话亲和相关参数。
说明与会话亲和不同的是,开启会话隔离后,单实例并发Session数系统自动置为1,且不可更改。
会话隔离功能生效的同时,会话亲和功能也生效。
如果开启会话隔离功能,同一客户端的请求都被路由到同一个函数实例上,同时,一个函数实例只能服务来自同一个客户端的请求,因此会话隔离功能即能满足会话亲和要求也能满足会话隔离要求。
MCP SSE亲和
配置项
说明
示例
会话亲和类型
选择MCP SSE亲和,基于MCP SSE协议规格,系统确保客户端携带相同SessionId的客户端请求始终路由到同一个实例实现亲和行为。
MCP SSE亲和
SSE 路径
发起SSE连接请求的路径。
/sse
单实例并发 Session 数
开启会话隔离后,单实例并发Session数系统自动置为1,且不可更改。
1
HeaderField亲和
配置项
说明
示例
会话亲和
选择HeaderField亲和,基于HTTP请求头中的指定字段值实现会话亲和。
HeaderField亲和
Header Name
用于传递亲和值客户端标识的头部名称。例如,您想传递的亲和标识为mySessionId,Header Name为x-custom-affinity-header,使用HTTP协议发起调用时,需要传递如下Header和值:
x-custom-affinity-header: mySessionId
。x-custom-affinity-header
单实例并发 Session 数
开启会话隔离后,单实例并发Session数系统自动置为1,且不可更改。
1
单个 Session 生命周期
从Session创建、使用到最终销毁的全过程。超过单个Session生命周期后,服务端将自动销毁Session,不再保证亲和性。
21600秒
Session Idle时长
用户在一段时间内没有进行任何操作,导致会话进入空闲状态。超过设置的Session Idle时长后,服务端将自动销毁Session,不再保证亲和性。
1800秒
Cookie亲和
配置项
说明
示例
会话亲和
选择Cookie亲和,基于HTTP Cookie中的特性值实现会话亲和。
Cookie亲和
Cookie 处理方式
目前仅支持植入Cookie方式,即客户端第一次访问时,函数计算将在返回请求中自动植入Cookie,即在 HTTP/HTTPS响应报文中插入
Set-Cookie:x-fc-cookie-session-id={CookieID}
,后续客户端携带Cookie:x-fc-cookie-session-id={CookieID}
访问时,函数计算会将请求定向转发给第一次请求所在的函数实例上。植入 Cookie
单实例并发 Session 数
开启会话隔离后,单实例并发Session数系统自动置为1,且不可更改。
1
单个 Session 生命周期
从Session创建、使用到最终销毁的全过程。超过单个Session生命周期后,服务端将自动销毁Session,不再保证亲和性。
21600秒
Session Idle时长
用户在一段时间内没有进行任何操作,导致会话进入空闲状态。超过设置的Session Idle时长后,服务端将自动销毁Session,不再保证亲和性。
1800秒
结果验证
请求隔离
以Curl命令为例,多次调用已配置请求隔离的目标函数。 示例如下,请根据您的函数URL替换example和regionID。您可以在目标函数详情页面,选择触发器页签,然后在HTTP触发器的配置信息列获取函数URL。
curl https://example.{regionID}.fcapp.run
在目标函数详情页面,选择日志页签,您可以看到每一次请求都调度到不同的函数实例。
会话隔离
以配置HeaderField亲和为例,指定不同HTTP请求头的值调用函数进行测试。 Session1:
curl -H "x-custom-affinity-header:Session1" https://example.{regionID}.fcapp.run
Session2:
curl -H "x-custom-affinity-header:Session2" https://example.{regionID}.fcapp.run
在目标函数详情页面,选择日志页签,您可以看到相同SessionId的请求都调度到同一函数实例执行,不同SessionId的请求调度到不同的函数实例执行。