MQ(消息队列)
一共42篇文章
专题:第16期
-
RocketMQ 的消息模型
参考答案 RocketMQ 的消息模型 Message 就是要传输的消息,一个消息必须有一个主题,一条消息也可以有一个可选的Tag(标签)和额外的键值对,可以用来设置一个业务的key,便于开发中在 broker 服务端查找消息。 Topic 主题,是消息的第一级类型,每条消息都有一个主题,就像信件邮寄的地址一样。 主题就是我们具体的业务,例如: 一个电商系统可以有订单消息,商品消息,采购消息,交易…...- 宝妹儿
- 77
- 0
-
半消息是什么?RocketMQ 是怎么实现分布式事务消息的?
参考答案 半消息 是指暂时还不能被 Consumer 消费的消息,Producer 成功发送到 Broker 端的消息,但是此消息被标记为“暂不可投递”状态,只有等 Producer 端执行完本地事务,经过二次确认了之后,Consumer 才能消费此条消息。 分布式事务消息的实现过程 依赖半消息,二次确认以及消息回查机制。 Producer 向 Broker 发送半消息 Producer 端收到响…...- 宝妹儿
- 138
- 0
-
RocketMQ 的存储结构是怎样的?
参考答案 消息存储是 MQ 消息队列中最为复杂和最为重要的一部分。 消息生产者发送消息到 Broker ,会按照顺序存储在 CommitLog 文件中,每个 CommitLog 文件的大小为 1G 。 如图所示: RocketMQ 的几个主要组件说明: Commit Log:存储所有的消息元数据,包括 Topic、QueueId 以及 message CosumerQueue:消费逻辑队列,存储消…...- 宝妹儿
- 76
- 0
-
RocketMQ 的存储机制了解吗?
参考答案 RocketMQ 采用文件系统进行消息的存储,相对于 ActiveMq 采用关系型数据库进行存储的方式,更加直接、性能更高。 RocketMQ 与 Kafka 在写消息与发送消息上,继续沿用了Kafka 的这两个方面:顺序写、零拷贝。 1 顺序写 操作系统每次从磁盘读写数据时,都要找到数据在磁盘上的地址,再进行读写。如果是机械硬盘,寻址需要的时间往往会比较长。通常,把数据存储在内存…...- 宝妹儿
- 75
- 0
-
RocketMQ 的工作流程是怎样的?
参考答案 RocketMQ 的工作流程: 1 启动 NameServer NameServer启动后监听端口,等待Broker、Producer以及Consumer连上来 2 启动 Broker 启动之后,会跟所有的 NameServer 建立并保持一个长连接,定时发送心跳包。心跳包中包含当前Broker 信息(ip、port等)、Topic 信息、以及 Borker 与 Topic 的映…...- 宝妹儿
- 95
- 0
-
RocketMQ 如何保证高可用性?
参考答案 1 集群化部署 NameServer Broker 集群会将所有的 broker 基本信息、topic 信息以及两者之间的映射关系,轮询存储在每个 NameServer 中(也就是说每个NameServer 存储的信息完全一样)。 因此,NameServer 集群化,不会因为其中的一两台服务器挂掉,而影响整个架构的消息发送与接收。 2 集群化部署多 broker producer…...- 宝妹儿
- 45
- 0
-
你自己部署过 RocketMQ 吗?简单说一下你当时部署的过程
参考答案 由于我们项目中主要使用 RocketMQ 做链路跟踪功能,因此需要比较高的性能,并且偶尔丢失几条消息也关系不大,所以我们就选择多 Master 多 Slave 模式,异步复制方式进行部署。 部署过程简单说一下: 我部署的是双master和双slave模式集群,并部署了两个nameserver节点。 1 服务器分配 分配是A和B两台服务器,其中, A 服务器部署 nameserv1,…...- 宝妹儿
- 44
- 0
-
RocketMQ 有哪几种部署类型?分别有什么特点?
参考答案 RocketMQ 有4种部署类型 1 单 Master 单机模式: 即只有一个 Broker, 如果 Broker 宕机了, 会导致 RocketMQ 服务不可用, 不推荐使用。 2 多 Master 模式 组成一个集群,集群每个节点都是 Master 节点,配置简单,且性能最高, 某节点宕机重启,都不会影响 RocketMQ 服务。 其缺点是如果某个节点宕机了, …...- 宝妹儿
- 42
- 0
-
RocketMQ 的部署架构了解吗?
参考答案 这个是 RocketMQ 的集群架构图,包含了四个主要部分:NameServer 集群、Producer 集群、Cosumer 集群、Broker 集群。 NameServer 担任路由消息的提供者。 生产者或消费者能够通过 NameServer 、查找各 Topic 相应的 Broker IP 列表,分别进行发送消息和消费消息。 nameServer 由多个无状态的节点构…...- 宝妹儿
- 30
- 0
-
RocketMQ 在分布式事务支持这块机制的底层原理?
参考答案 大厂面试题: RocketMQ 的一大特点是对分布式事务的支持,说说它在分布式事务支持这块机制的底层原理吧? 参考答案: 分布式系统中的事务可以使用 TCC(Try、Confirm、Cancel)、2pc ,来解决分布式系统中的消息原子性。 RocketMQ 4.3+ 提供分布事务功能,通过 RocketMQ 事务消息能达到分布式事务的最终一致。 RocketMQ 的实现方式: Half…...- 宝妹儿
- 47
- 0
-
RocketMQ 如何做负载均衡?
参考答案 负载均衡(LB,Load Balance),是一种技术解决方案,用来在多个资源(一般是服务器)中分配负载,达到最优化资源使用,避免单台服务器过载。 RocketMQ 中的负载均衡,主要可以分为 Producer 发送消息的负载均衡、Consumer 订阅消息的负载均衡。 1 producer 发送消息的负载均衡 默认会轮询向 Topic 的所有queue 发送消息,以达到消息平均落…...- 宝妹儿
- 45
- 0
-
消费消息是 push 还是 pull ?
参考答案 RocketMQ 没有真正意义的 push ,都是 pull ,虽然有 push 类,但实际底层实现采用的是长轮询机制,即拉取方式。 Broker 端属性 longPollingEnable 标记,默认开启长轮询。 延伸问题: 为什么要主动拉取消息,而不使用事件监听方式? 事件驱动方式是建立好长连接,由事件(发送数据)的方式来实时推送。 如果 Broker 主动推送消息,有可能出现 pu…...- 宝妹儿
- 43
- 0