我想遍历一个csv文件的所有项目,对于每个项目,我想统一分发请求,以便所有SearchProduct(SearchProduct1,SearchProduct2和SearchProduct3)函数都被调用相同的时间。
val products= csv("products.csv").records
val start= exec(repeat(products.size, "n"){
feed(products.queue)
.uniformRandomSwitch(
exec(searchProduct1),
exec(searchProduct2),
exec(searchProduct3)
)
})
我希望如果我有9种产品,则将SearchProduct1函数调用3次,将SearchProduct2函数调用3次,将SearchProduct3函数也称为3次。
但是统计数据多次显示,函数SearchProduct3被调用5次,而SearchProduct2和SearchProduct1被调用2次。我做错了吗?我应该在uniformRandomSwitch
内重复吗?
所以我了解uniformRandomSwitch
,执行这三个功能之一的概率是相同的。有可能在9次迭代中,执行8次SearchProduct1和1次SearchProduct2(而SearchProduct3从不执行)。但是使用uniformRandomSwitch
并不会迫使每个函数执行相同的时间。对吧?
答案 0 :(得分:1)
我认为您想要的是roundRobinSwitch
指令。这将遍历每个链,直到下一个新链,然后在新请求开始时在开头重复。
在uniformRandomSwitch
中,每个链都有1/N
的几率被调用。给定您的示例,只有经过多次迭代,调用数量才会收敛到3/3/3。