初识MQ
同步通讯和异步通讯
什么是同步通讯呢?举个例子,你认识了一个小姐姐,聊的很火热,于是你们慢慢开始打电话,视频聊天,这种方式就成为同步通讯,那什么是一部通讯呢,同样的,你认识了多个小姐姐,你和他们进行文字聊天,这时候你一个人可以和多个人聊天,这就是异步通讯。我们之前进行服务间调用时使用的RestTemplaste,Feign就是同步调用。
同步调用的优缺点
优点:时效性强,可以立即得到回复,就像你打视频一样
缺点:假如你一个项目中存在很多业务,相互之间进行调用,如果你增加了新的需求,此时因为原本代码是同步调用,代码耦合度很高,于是乎修改代码变得十分繁琐,并且一个业务可能会调用很多服务,只有上一个服务调用完了,才能到下一个服务,等待的过程中就造成了资源浪费,性能下降,如果当前调用的服务失败,还可能会导致级联失败,服务雪崩。
异步调用的优缺点
优点:
1,代码耦合度低,因为异步调用是采取事件驱动来实现,当请求进来之后到达Broker之后Broker通知各自微服务去执行,服务间不在需要相互调用。
2,吞吐量提升,因为异步调用不像同步调用那样每个服务需要等待上游完成调用。
3,故障隔离,服务之间相互不进行调用,即使你挂了也跟我没关系。
4,流量削峰,假如同时又大量请求,但是你的服务处理请求能力是有限的,于是Broker会净请求先拦截,看服务又能力处理多少请求,就拿多少请求,不会一次性全部发布订阅。
缺点:
1,对Broker的依赖十分高,对他的可靠性,安全性,吞吐能力要求很高,万一他挂了......
2,服务之间相互调用关系不清晰,业务没有明显的流程线,代码出问题不容易排查。
所以,需要根据场景来选择同步还是异步,一般大多数需要同步。
什么是MQ?
MQ(MessageQueue),中文是消息队列,也就是存放消息的队列,也就是时间驱动中的Broker.
常见的MQ对比:
我们这里选择RabbitMQ
明天继续~~~~~