免费做电子书的网站,可以做淘宝推广的网站有哪些内容,网站建设培训赚钱吗,网站备案查询平台最近很多同学问我有没有java学习资料#xff0c;我根据我从小白到架构师多年的学习经验整理出来了一份50W字面试解析文档、简历模板、学习路线图、java必看学习书籍 、 需要的小伙伴 可以关注我公众号#xff1a;“ Tom聊架构 ”#xff0c; 回复暗号#xff1a;“ 578”即… 最近很多同学问我有没有java学习资料我根据我从小白到架构师多年的学习经验整理出来了一份50W字面试解析文档、简历模板、学习路线图、java必看学习书籍 、 需要的小伙伴 可以关注我公众号“ Tom聊架构 ” 回复暗号“ 578”即可获取 一、MQ 简介
MQ全称为Message Queue消息队列MQ是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息针对应用程序的数据来通信而无需专用连接来链接它们。
消息传递指的是程序之间通过在消息中发送数据进行通信而不是通过直接调用彼此来通信直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。 二、面试常见问题
问题一为什么使用消息队列 面试官对于这个问题的期望回答可能是“你们公司有什么业务场景这个业务场景有什么技术挑战如果不用MQ可能会很麻烦但是再用了之后带来了很多好处。”
消息队列的常见使用场景有很多但是核心的有三个解耦、异步、削峰
1、解耦
1场景描述
A系统发送一个数据到BCD三个系统接口调用发送这时候如果E系统也要这个数据C系统现在不需要了A系统又要发送第二种数据而且A系统还要时时刻刻考虑BCDE四个系统如果挂了怎么办要不要重发要不要把消息存起来 2使用了MQ之后的解耦场景 3面试技巧
你需要考虑你负责的系统中是否有类似的场景就是一个系统或者一个模块调用了多个系统或者模块相互之间的调用很复杂维护起来很麻烦。但是其实这个调用是不需要直接同步调用接口的如果想要通过MQ给它异步化解耦你就需要去考虑在你的项目里是不是可以运用这个MQ去进行系统解耦 。
2、异步
1场景描述
系统A接受一个请求需要在自己本地写库还需要在系统BCD三个系统写库自己本地写库需要3ms。BCD分别需要300ms、450ms、200ms。最终总耗时长953ms接近1s。给用户的体验感觉一点也不好。
2不用MQ的同步高延时请求场景 3使用MQ异步化之后的接口性能优化 3、削峰
1场景描述
每天0点到11点系统A风平浪静每秒并发请求数量100个。结果每到11点至13点每秒并发请求数量就会暴增大1万条 。但是系统最大的处理能力就只能每秒钟处理1000个请求。
2没有用MQ的时候高峰期系统被打死的场景 3使用MQ来进行削峰的场景 问题二消息队列的优点和缺点 1、优点
特殊场景下解耦、异步、削峰。
2、缺点
1系统可用性降低
系统引入的外部依赖越多越容易挂掉。本来你就是A系统调用BCD三个系统的接口就好了ABCD四个系统运行起来没什么问题但你偏加个MQ进来万一MQ挂了整套系统也就崩溃了。
2系统复杂性提高
硬生生加个MQ进来无法保证消息没有重复消费、无法保证消息传递的顺序性也很难处理消息丢失的情况。
3一致性问题
系统A处理完了直接返回成功了人家都认为你这个请求成功了但问题是要是BCD三个系统中BD系统成功了结果C系统写库失败了那数据就不一致了。 所以消息队列是一种非常复杂的架构引入它有很多好处但是也得针对他带来的坏处做各种额外的技术方案和架构来规避掉。做好之后你会发现系统复杂度提升了一个数量积但是关键时刻还是要用的。
问题三kafka、activemq、rabbitmq、rocketmq都有什么优缺点 三、2024最新Java高频面试题 金三银四面试必备
视频链接如下点击即可观看
https://gupaoedu-tom.blog.csdn.net/article/details/135596985?ydrefereraHR0cHM6Ly9tcC5jc2RuLm5ldC9tcF9ibG9nL21hbmFnZS9hcnRpY2xlP3NwbT0xMDExLjIxMjQuMzAwMS41Mjk4