异步对性能的影响
异步的好处是操作不会立刻完成,而是提交后继续执行其他任务,等结果准备好再处理。
异步处理设计
我们需要一个任务派发器,一个push模型,一个pull模型。push做任务调度,比如可以像物流一样把相同的商品订单合并起来,打成一个包,交给下游系统让其一次处理掉;也可以把同一个用户的订单中的不同商品给拆成多个订单。pull订阅push发出来的异步消息,处理相应的任务。
事件溯源
比如我们的银行存折,里面详细记录了我们的收支情况,可以看到每一笔记录后的余额。 我们的系统只追加不可修改的数据操作事件,而不是保存最终状态。有一个好处就是当我们代码中有bug,修改bug后做数据修正,只需把记录的事件再重新播放一遍。
异步处理设计要点
异步处理在处理任务时,并不知道是否处理成功,一步一步处理,如果到最后一步处理失败,就需要我们之前提到的补偿事务。