如何在Nodejs中只选择10%的请求?

时间:2016-03-18 21:54:52

标签: javascript node.js

我有一项新功能,我不想一次性减少损失。我们希望选择10%的请求来实现此功能。我想知道我是否可以在JavaScript中轻松完成这项工作?

在我的脑海中,我正在考虑使用Array来存储请求并选择一部分。有一个更好的方法吗?

我有来自Express

的这段代码
doSomething: function(request, response) {

   // new functionality  << how can I control how many requests hitting this block of code? Like 10 percent of the requests

   // old functionality
}

我不在乎其余的请求是否被删除。我们现在有2500个请求,我担心如果我一次性使用这个功能,事情就会崩溃。这是一个非常密集的计算代码。

2 个答案:

答案 0 :(得分:1)

这不是很简单吗?或者我不理解你的问题......

var numRequests=0;
//snip
doSomething: function(request, response) {
    if (numRequests++ %10 === 0){
       //new functionality
    }
    else{
       //old
    }        
}

答案 1 :(得分:0)

当然没有州......

doSomething: function(request, response) {
   if (Math.random() < 0.1) {
     // new functionality  
   } else {
     // old functionality
   }
}

请不要将其用于某种A / B测试或金丝雀部署。为此,您需要N个实例并慢慢路由到新实例。

我使用上面的例子进行数据库调用,每次路由被击中时我都不需要这样做。