即时性
既然是预警功能,时间应当越是即时越好。
进多出少
需要分析的数据量很大,但是实际上分析出的结果却很少,分析数十万个库存数据,可能输出的就不到十条,甚至没有。
计算规则复杂
计算某个货品是否缺货,需要根据最近一周的销量,甚至参考去年,前年同时间段的数据来判断,或者调用更为复杂的算法。
最容易想到的
做一个定时任务来跑这些库存数据,那么定时任务的时间间隔是多少?
基于事件来处理
未了保证及时性,那么基于事件来处理,每个导致库存变得的地方,都注入一个事件,触发预警分析计算。
定时任务+ 事件
想想触发预警的情况,肯定是库存数量少于或者高于某个值,才预警。这个值虽然很难确定,且随着季节等原因在变化,但是这个值在几个小时,甚至几天内应该变化不大。对于这个值的计算,我们用定时任务计算出来。那么定时任务的频率一天一次应该足够。
预警功能则采用事件来触发,每次触发需要运算的量就只是当前库存与上面值之间的大小比较。运算量基本可以忽略掉。
如果事件使用消息队列来处理,对于同一种商品的库存处理,消息队列里同时存在几万条,那么处理一次即可,想想都很激动。