会话这个概念听起来虚,落到代理IP上其实很具体:同一个出口在连续请求之间要不要保持不变。答案取决于业务是否需要目标端把多次请求认成同一个来源,而不是取决于配置界面上的某个开关。先想清楚需求,再决定这一项。
状态存在于三个位置
- 本地程序:连接与访问凭证
- 转发点:本次会话的出口映射关系
- 目标端:以来源地址为依据的会话记录
三处状态各有生命周期。本地的最长,只要程序不重启就一直保留;转发点的随会话结束而释放;目标端的按自己的规则过期。代理IP的会话保持之所以复杂,就是因为这三处的时间尺度不同,任何一处先失效,表现都会异常。
三处状态必须同时成立,会话才算真的连续。
由此可以推出一条判断:如果业务只在很短的时间内需要连续,那么短周期内固定出口就够了;如果跨越很长时间,就要考虑三处状态能不能同时维持。代理IP的会话配置,本质上是给这三处对同一个时间尺度。
时间尺度对齐,会话才稳。
固定出口的代价
固定出口不是免费的:出口的使用集中度上升,单点压力变大,一旦失效影响面也更广。所以会话保持通常要配一个兜底:主体固定,异常时允许切换,并记录切换发生的时间和次数。代理IP的稳定性管理,靠的正是这类折中设计。
另一种做法是不依赖会话,把每次请求都设计成独立的。这样对出口是否固定没有要求,代理IP的方案选型空间更大,代价是业务逻辑要相应调整。两种路线各有利弊,选择依据还是业务本身的要求。
能独立就独立,不能独立再固定。
会话保持不是越久越好,够用就行。时间定得过长,出口的有效性风险会上升;定得过短,业务可能拿不到连续的结果。合适的值来自实测,而不是来自经验数字,这一点在代理IP的调参上尤其明显。
把业务对连续性的真实要求写下来,再对照三处状态的生命周期,会话相关的配置就有依据了,代理IP的会话调参也不会变成反复试错。
