RabbitMQ学习-One
同步调用和异步调用
1.假设我们现在又两个服务,分别是修改商品服务和查询商品服务,每个服务都有自己的数据库;
2.左侧的流程假设我们总共需要耗时40ms;
3.因为不同服务数据库不一样,所以我们就要考虑修改了左边服务的商品表,那么右侧的服务中的商品表也应该更新,那么使用那种方式呢?
第一种方式:同步
这里的同步说的就是当左侧修改完数据后,先通知右侧服务,然后等待右侧服务也更新完商品表,然后再通知左侧服务,然后响应浏览器;
这种存在一个问题:就是明显耗时会增加;那么应该如何解决呢?这时候就引出异步;
第二种方式:异步
异步就是当左侧的修改完成商品表之后,通知右侧服务,无需等待响应,然后返回浏览器;明显耗时要比同步的方式少很多;
消息队列概念
概念:消息被发送到队列中。“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。
我们所说的同步就相当于打电话,需要等待别人接通才可以进行通话沟通,但是异步的话就相当于发短信,通知别人即可;
这里上面的框就相当于消息队列,将消息发送给服务;