horizonzy opened this issue 6 years ago · 2 comments
按照文中的操作,同一个订单最终落到同一条数据,然后把请求丢到内存队列,这样还是会有问题,如果请求2和请求3先于请求1到达服务器,还是会先执行2,3请求,再执行1请求。这种情况下可以基于业务来定义,将同一个订单的请求基于业务的先后顺序丢到不同队列中,要求业务优先的执行完才能执行下一个请求,如果下一个请求还没过来,可以阻塞等待,不过这样做的话会导致吞吐量下降。还是按照题主的建议,将这种业务合在一个请求之中处理比较好。
我觉得这种情况(尤其是订单)都应该跑在一个fsm下的,1没过来23来了都不应该执行……
@Delostik 这样做的话会有问题吧,如果2,3提前过来,相当于异常请求直接丢弃,后续1过来了,状态就卡在1那里没有动了,只有重新来2,3请求。本次操作才算结束