一、举一个生活中的例子来帮助理解(快递小哥送快递):
引入蜂巢柜之后,原来同步的状态变为了异步,快递小哥无需等待了。
二、对应到我们的程序中
三、下面结合具体功能来看
同步状态下,必须每步都执行完,才能给用户返回响应。
对接消息队列之后,整个流程变为异步模式,只需把订单的编号存入消息队列当中,就可以给用户返回响应了,其余后续操作交给RabbitMQ来做。
问题1:
耦合度高
同步:其中有一个步骤失败,就给用户返回失败。
如果是异步下,订单号存入消息队列后,后续操作如果有失败的可以进行多次重试,实在不行人工干预处理。所以说引入消息队列,可以实现一个功能上的解耦。
问题2:
响应时间长
同步是串行执行,响应时间是整个链路时间之和。
异步很快
问题3:
并发压力传递
同步模式每一步都要承担相同的并发量
异步模式 可以调整一些参数,进行削峰限流
问题4:
系统结构弹性不足
完全符合开闭原则
小结