背景描述:
平台上有多家商户,商家有多名员工,商家和客户之间会产生很多订单,商家需要将订单平均分配给自己的员工去跟踪这些订单。
问题描述
一种情况是知道商家总订单数,商家所有员工,那么把所有订单直接平均一下,然后分配给所有员工就好了。
现在讨论的是另一种情况,每有一笔订单生成的时候,就根据平均原则分配给员工
解决方案
a. 如果知道每个人手里都有多少条单,那么只要把当前订单分配给手中单最少的人就可以了
如果表里面的数据很少,我们可以很快从订单表里面统计分配状态,一个平台的数据量会有很多如果把很多的数据量拆小,比如按照门店分表,统计出一个商户的订单分配状态还是比较容易的,但对于一个平台可能有成千上万个商户来说,订单表就生成成千上万个,这个方案是不可行的。
另一种就是根据时间分表,将数据量变小,降低状态统计所需成本。
在具体的需求中可能并不需要对所有订单进行统计,我们可以按月分表,降低所统计的数据量
b.维护分配状态表
分配后要同时更新订单表和分配状态表,能想到的状态表的设计都很重,暂无可靠的方案
c.通过算法的方式实现
在具体实现中通过redis的incr对订单总量进行维护,对每个商户的订单总量进行维护。如果需要对每个计数器加上过期时间参考:http://doc.redisfans.com/string/incr.html