RocketMq小解

notify是淘宝的一个消息中间件,它用创新地方式解决了分布式事务的问题,用相对较低的成本,实现了跨微服务的最终一致性

消息系统的核心作用就是三点:解耦,异步和并行

假设我们有这么一个应用场景,为了完成一个用户注册淘宝的操作,可能需要将用户信息写入到用户库中,然后通知给红包中心给用户发新手红包,然后还需要通知支付宝给用户准备对应的支付宝账号,进行合法性验证,告知sns系统给用户导入新的用户等10步操作。

串行设计

串行设计

这种方式的最大问题是,随着后端流程越来越多,每步流程都需要额外的耗费很多时间,从而会导致用户更长的等待延迟。自然的,我们可以采用并行的方式来完成业务,能够极大的减少延迟

串行设计

但是其实这样也是有问题的,在用户注册这一步,系统并行请求发起4个请求,如果说通知SNS这一步需要时间比较长,即使其他步骤再快,用户任然需要等待10秒才能注册,假如说发红包服务器宕机了,那就不能注册了。

通过业务分析我们能够得知,用户的实际的核心流程其实只有一个,就是用户注册。而后续的准备支付宝,通知sns等操作虽然必须要完成,但却是不需要让用户等待的。

这种模式有个专业的名词,就叫最终一致。为了达到最终一致,我们引入了MQ系统

主流程

异步流程如下:

异步流程

Share