当前位置:   article > 正文

2024年最新【RabbitMQ】学习笔记-p1(初识MQ&快速入门),超通俗解析CountDownLatch用法和源码

2024年最新【RabbitMQ】学习笔记-p1(初识MQ&快速入门),超通俗解析CountDownLatch用法和源码

最后

最后,强调几点:

  • 1. 一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。因为一般情况下,面试官都是会根据你的简历来问的; 能有一个上得了台面的项目也非常重要,这很可能是面试官会大量发问的地方,所以在面试之前好好回顾一下自己所做的项目;
  • 2. 和面试官聊基础知识比如设计模式的使用、多线程的使用等等,可以结合具体的项目场景或者是自己在平时是如何使用的;
  • 3. 注意自己开源的Github项目,面试官可能会挖你的Github项目提问;

我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!

以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目。

面试答案

三面头条+四面阿里+五面腾讯拿offer分享面经总结,最终入职阿里

三面头条+四面阿里+五面腾讯拿offer分享面经总结,最终入职阿里

三面头条+四面阿里+五面腾讯拿offer分享面经总结,最终入职阿里

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

=======================================================================

1.初识MQ


1.1 同步和异步通讯

微服务间通讯有同步和异步两种方式:

  • 同步通讯:就像打电话,需要实时响应

  • 异步通讯:就像发邮件,不需要马上回复

img

两种方式各有优劣,打电话可以立即得到响应,但是你却不能跟多个人同时通话。发送邮件可以同时与多个人收发邮件,但是往往响应会有延迟

同步通讯

我们之前学习的Feign调用就属于同步方式,虽然调用可以实时得到结果,但存在下面的问题:

img

同步调用的优点:

  • 时效性较强,可以立即得到结果

同步调用的缺点:

  • 耦合度高

  • 性能和吞吐能力下降

  • 有额外的资源消耗

  • 有级联失败问题

异步通讯

异步调用则可以避免上述问题

举个例子:

我们以购买商品为例,用户支付后需要调用订单服务完成订单状态修改,调用物流服务,从仓库分配响应的库存并准备发货。

在事件模式中,支付服务是事件发布者(publisher),在支付完成后只需要发布一个支付成功的事件(event),事件中带上订单id。

订单服务和物流服务是事件订阅者(Consumer),订阅支付成功的事件,监听到事件后完成自己业务即可。

异步调用常见实现就是事件驱动模式

img

为了解除事件发布者与订阅者之间的耦合,两者并不是直接通信,而是有一个中间人(Broker)。发布者发布事件到Broker,不关心谁来订阅事件。订阅者从Broker订阅事件,不关心谁发来的消息

img

Broker 是一个像数据总线一样的东西,所有的服务要接收数据和发送数据都发到这个总线上,这个总线就像协议一样,让服务间的通讯变得标准和可控

异步调用好处:

  • 吞吐量提升:无需等待订阅者处理完成,响应更快速

  • 故障隔离:服务没有直接调用,不存在级联失败问题

  • 调用间没有阻塞,不会造成无效的资源占用

  • 耦合度极低,每个服务都可以灵活插拔,可替换

  • 流量削峰:不管发布事件的流量波动多大,都由 Broker 接收,订阅者可以按照自己的速度去处理事件

异步调用缺点:

  • 架构复杂了,业务没有明显的流程线,不好管理

  • 需要依赖于 Broker 的可靠、安全、性能

1.2 技术对比

MQ:中文是消息队列(MessageQueue),字面来看就是存放消息的队列。也就是事件驱动架构中的Broker

几种常见MQ的对比:

| | RabbitMQ | ActiveMQ | RocketMQ | Kafka |

| — | — | — | — | — |

| 公司、社区 | Rabbit | Apache | 阿里 | Apache |

| 开发语言 | Erlang | Java | Java | Scala&Java |

| 协议支持 | AMQP,XMPP,SMTP,STOMP | OpenWire,STOMP,REST,XMPP,AMQP | 自定义协议 | 自定义协议 |

| 可用性 | 高 | 一般 | 高 | 高 |

| 单机吞吐量 | 一般 | 差 | 高 | 非常高 |

| 消息延迟 | 微秒级 | 毫秒级 | 毫秒级 | 毫秒以内 |

| 消息可靠性 | 高 | 一般 | 高 | 一般 |

追求可用性:Kafka、 RocketMQ 、RabbitMQ

追求可靠性:RabbitMQ、RocketMQ

追求吞吐能力:RocketMQ、Kafka

追求消息低延迟:RabbitMQ、Kafka

2.快速入门


2.1 安装RabbitMQ

在线拉取镜像:

docker pull rabbitmq:3-management

执行下面的命令来运行MQ容器:

docker run \

-e RABBITMQ_DEFAULT_USER=admin \

-e RABBITMQ_DEFAULT_PASS=123456 \

–name mq \

–hostname mq1 \

-p 15672:15672 \

-p 5672:5672 \

-d \

rabbitmq:3-management

启动成功后访问地址:192.168.75.130:15672(注意ip要为自己虚拟机的,后面端口一致)

2.2 RabbitMQ消息模型

MQ的基本结构

img

RabbitMQ中的一些角色

  • publisher:生产者

  • consumer:消费者

  • exchange:交换机,负责消息路由

  • queue:队列,存储消息

  • virtualHost:虚拟主机,隔离不同租户的 exchange、queue、消息的隔离

RabbitMQ官方提供了5个不同的Demo示例,对应了不同的消息模型:

img

2.3 入门案例

简单队列模式的模型图:

img

总结

至此,文章终于到了尾声。总结一下,我们谈论了简历制作过程中需要注意的以下三个部分,并分别给出了一些建议:

  1. 技术能力:先写岗位所需能力,再写加分能力,不要写无关能力;
  2. 项目经历:只写明星项目,描述遵循 STAR 法则;
  3. 简历印象:简历遵循三大原则:清晰,简短,必要,要有的放矢,不要海投;

以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

xOchvkk-1715231959699)]

[外链图片转存中…(img-w2fhxnaj-1715231959700)]

[外链图片转存中…(img-SnNEZWGR-1715231959700)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/559721
推荐阅读
相关标签
  

闽ICP备14008679号