问题:
任务处理中会出现没有正确分组的问题。
如下图:第三级处理的结果有误。
分析原因:
修改前上图任务可以看到第一级处理之后,有keyby操作,而2到3级之间没有keyby,所以是rebalance操作。
解决办法:
方法一:如果第三级需要和上级一样根据用户id 分到同一个现成的话会出现问题,所以需要对第二级操作之后也keyby。
修改后
方法二:如果二级和三级处理可以转为operator-chain,那么可以不用2到3级中间可以不用keyby操作。因为operatorchain会将任务在同一个task里执行。
mongo问题
mongo中使用updateOne方法,如果同一个key,两个线程同时写会报错
E11000 duplicate key error collection
原因:
update操作是先查询是否存在,不存在会插入。当两个任务同时都查询到不存在时,都会执行insert操作,所以会报错重复key。
解决办法:
加锁,或者任务顺序执行。
网友评论