当我不想全面推出一项新功能时,要做一个有趣的任务。 我只想将流量百分比(基于路径参数)路由到新端点。
我想基于“ specialPathParam”来计算百分比: ourservice.com/one/'specialPathParam'/something。
因此,如果我们要将50%路由到新端点:
如果有2个请求 ourservice.com/one/'specialPathParamOne'/something ourservice.com/one/'specialPathParamTwo'/something,
一个带有“ specialPathParamOne”的请求应转到新端点 另一个带有“ specialPathParamTwo”的标记应转到旧的标记。
试图找到一种以某种方式在VCL中实现它的方法...
这里有任何提示和技巧吗? 非常感谢!
答案 0 :(得分: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_seeded()需要一个附加的seed参数。 给定种子的结果将始终相同。 https://docs.fastly.com/vcl/randomness/
所以看起来我需要以下东西:
if(randombool_seeded(X,100,std.atoi('$ {specialPathParam}')))){
设置req.backend = F_origin_0; } else {set req.backend = F_origin_1; }
并且不需要标题。
因此,X%的流量将流向后端1,而具有相同“ $ {specialPathParam}”值的请求将流向相同的后端。