0

当我不想全面推出新功能时,有一个有趣的任务。我只想将流量百分比(基于路径参数)路由到新端点。

我想根据“specialPathParam”计算百分比:ourservice.com/one/'specialPathParam'/something。

因此,如果我们想将 50% 路由到新端点:

如果有 2 个请求 ourservice.com/one/'specialPathParamOne'/something ourservice.com/one/'specialPathParamTwo'/something ,

一个带有“specialPathParamOne”的请求应该发送到新端点,另一个带有“specialPathParamTwo”的请求应该发送到旧端点。

试图找到一种在 VCL 中以某种方式实现它的方法......

这里有什么提示和技巧吗?非常感谢!

4

1 回答 1

1

实际上,我在 Fastly 支持论坛上收到了答案:https: //support.fastly.com/hc/en-us/community/posts/360045757132-Route-n-of-traffic-based-on-a-path-param

在这里写我的解决方案:

我只需要计算'${specialPathParam}'的百分比,这个'${specialPathParam}'可以是任何东西......所以我必须随机化我的'${specialPathParams}'周围的请求,这实际上看起来像带有种子的randombool参数:

另一个函数 randombool_seed() 接受一个额外的种子参数。给定种子的结果将始终相同。 https://docs.fastly.com/vcl/randomness/

所以看起来我需要类似的东西:

if (randombool_seed(X, 100, std.atoi('${specialPathParam}')) ) {
set req.backend = F_origin_0; } 其他 { 设置 req.backend = F_origin_1; }

并且不需要标题。

因此,X% 的流量将流向后端 1,具有相同 '${specialPathParam}' 值的请求将流向相同的后端。

于 2019-07-22T19:20:56.053 回答