丁威rocketmq技术内幕电子版_RocketMQ 核心原理,这篇文章讲透了!

本文深入剖析RocketMQ的核心原理,包括路由注册与剔除机制、消息发送高可用设计、存储文件结构。通过源码分析,揭示了Topic路由、消息生产和消费流程以及主从同步的实现。作者丁威分享了学习RocketMQ的建议和心得。
摘要由CSDN通过智能技术生成

2f8513d0ffd84f386731be8c98511859.png

如何把开源项目用好,很大程度上是由学习路径决定的:

a. fork下来,起一个demo,上一个测试环境,遇到问题再去社区提问或找些实践文章;

b. 把官方文档通读一遍,理解下产品、特点和应用场景;

c. 先看一遍源代码,理解清楚其中的代码逻辑;

d. 看源代码太费劲,找本社区推荐的书系统的梳理下;

本文来自 Apache RocketMQ 的资深用户丁威,他和 MyCat 的核心开发者周继锋合著了《RocketMQ技术内幕:架构设计与实现原理》一书,目的是希望用图解的方式梳理 RocketMQ的核心原理,包括 RocketMQ Topic 的路由注册与剔除机制、消息发送高可用设计、消息存储文件设计、并发消息拉取与消息消费流程、主从同步(HA)、事务消息基本实现原理等,帮助开发者在使用 RocketMQ 的同时,还能对其核心原理了然于心。

Topic 的路由机制 


ec035031bff1f706fa79f0e6d092aeaf.png

介绍路由注册机制之前,先简单看下 RocketMQ 的整体架构:

Producer:消息生产者,用于向消息服务器发送消息;

NameServer:路由注册中心;

Broker:消息存储服务器;

Consumer:消息消费者,该流程图中未涉及;

联通性:

A.NameServer 之间互不通信,无法感知对方的存在。

B.Producer 生产者与 NameServer 集群中的一台服务器建立长连接,并持有整个 NameServer 集群的列表。

C.Broker 服务会与每台 NameServer 保持长连接。

Topic路由注册与剔除流程:

A.Broker 每30s向 NameServer 发送心跳包,心跳包中包含主题的路由信息(主题的读写队列数、操作权限等),NameServer 会通过 HashMap 更新 Topic 的路由信息,并记录最后一次收到 Broker 的时间戳。

B.NameServer 以每10s的频率清除已宕机的 Broker,NameServer 认为 Broker 宕机的依据是如果当前系统时间戳减去最后一次收到 Broker 心跳包的时间戳大于120s。

C.消息生产者以每30s的频率去拉取主题的路由信息,即消息生产者并不会立即感知 Broker 服务器的新增与删除。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值