版权声明:本文为博主原创文章,未经允许也可以任意转载。http://huyouxiao.com https://blog.csdn.net/fudaxing/article/details/88955234
工作当中遇到一个问题,自己没有想清楚。写点文字记录下来。
场景:
- 有一个签约中心,负责全国各地的人签约。
- 每一个要签约的人,需求提前预约,确定签约的时间点。
- 在预约的时候,虽然客户预约的是签约时间点。但服务端已经随机分配到具体的人上了。
- 确认到具体的人头上,是因为签约中心的客服需要提前查看要签约人的资料,准备相关的问题。
带来的问题点:
- 由于是随机分配到具体的人, 在任务量不饱和的情况下,导致任务分配不均。每个人接收到的工作量不同。
尝试解决的方法:
- RoundRobin 分发
需要满足的点:
- 在未来40天之内,每个人分配的任务量是相对平均的。
- 在每一天之内,每个人分配的任务量是相对平均的。
其实只要做到第 2 点,自然做到第 1 点吗?
不一定: 举个例子,你每天的工资比我多200块钱。一个月下来,你的工资就比我6000块了。这个差距就有点大了。但是世界上不存在绝对的事情,只要保证每天平均,也就相对平均了,采用此策略。
策略A是:
- 先统计未来40天,每个人的工作量。按由少到多排序。
- 再统计当天,每个人的工作梁,安装由少到多排序。
- 根据上面两个值算一个权重,决定到底该分配给谁。
策略B(感觉不能用) 是:
RoundRobin分配: 将所有要参与分配的人的ID组成一个环。每一次分配后,指针指向下一个待分配元素。
优点:
- 能够保证在长时间内平均分配
缺点: - 不能保证每一天是平均分配的。很可能出现轮休的情况