轮询调度算法 Round Robin

最近重温了下nginx,看到负载均衡调度算法默认是round robin,也就是轮询调度算法。
算法本身很简单,轮着一个一个来,非常简单高效公平的调度算法。

简单的算法实现:

int datas = [1, 2, 3, 4, 5];
int size = 5;
...
...
...
int GetNextData()
{
    
    
	static int curIdx = 0;
	int nextData = datas[curIdx];
	curIdx = (curIdx + 1) % size;
	return nextData;
}

突然发现了一直被忽视的问题,为啥叫 round robin

robin 明明是旅鸫,亦称美洲知更鸟,与轮询一点关系都没有。在查询资料后发现这个单词来源挺有意思的,这里分享给大家。
round robin来源于法语ruban rond(round ribbon),意思是环形丝带。

在17、18世纪时法国农民希望以请愿的方式抗议国王时,通常君主的反应是将请愿书中最前面的两至三人逮捕并处决,所以很自然地没有人希望自己的名字被列在前面。为了对付这种专制的报复,人们在请愿书底部把名字签成一个圈(如同一条环状的带子),这样就找不出带头大哥,于是只能对所有参与者进行同样的惩罚。1731年,英国皇家海军最初使用了这个名词,以循环顺序签署请愿书,这样就没法找到带头大哥了。

非常贴切有木有,后端服务器轮着来处理请求,一个个都不要抢,都要出来接受处决。

猜你喜欢

转载自blog.csdn.net/xp178171640/article/details/106007818