一张图进阶 RocketMQ - 通信机制

本文深入剖析 RocketMQ 的通信机制,从 Netty 的基本流程出发,解释了 RocketMQ 如何利用 Netty 实现服务端和客户端的通信。文章通过示例展示了 Netty 的服务端和客户端初始化,以及 RocketMQ 的异步发送过程。文中还总结了 Netty 的 BossGroup 和 WorkerGroup 角色,以及同步和异步消息的区别。
摘要由CSDN通过智能技术生成

前 言

「三此君看了好几本书,看了很多遍源码整理的 一张图进阶 RocketMQ 图片,关于 RocketMQ 你只需要记住这张图!觉得不错的话,记得点赞关注哦。」

【重要】视频在 B 站同步更新,欢迎围观,轻轻松松涨姿势。一张图进阶 RocketMQ-通信机制(视频版) 点击查看【bilibili】

本文是“一张图进阶 RocketMQ”第 4 篇,对 RocketMQ 不了解的同学可以先看看前面三期:

[一张图进阶 RocketMQ-整体架构](https://www.bilibili.com/video/BV1534y157RF)
[一张图进阶 RocketMQ - NameServer](https://www.bilibili.com/video/BV1tY4y1g795)
[一张图进阶 RocketMQ - 消息发送](https://www.bilibili.com/video/BV1bf4y1Z7ui)

上一期分享了 RocketMQ 生产者启动流程及同步消息发送流程,我们知道了在通信层是基于 Netty 将消息传递给 Broker 进行存储的。如果对 Netty 完全不了解我们就很难真正理解 RocketMQ,所以今天我们简单的聊一聊 Netty 基本流程,然后分析 RocketMQ 的通信机制,最后通过异步消息发送来串联 RocketMQ 通信机制。

Netty 介绍

Netty 有很多概念,等介绍完概念大家都困了,我们就不过多介绍了,直接结合示例来看看 Netty 的基础流程,能够帮助我们更好的理解 RocketMQ 即可。

  1. Netty 服务端启动初始化两个线程组 「BossGroup & WorkerGroup」,分别用于处理「客户端连接及网络读写」

  2. Netty 客户端启动初始化一个线程组, 用于处理请求及返回结果。

  3. 客户端 「connect」 到 Netty 服务端,创建用于 「传输数据的 Channel」

  4. Netty 服务端的 BossGroup 处理客户端的连接请求,然后把剩下的工作交给 WorkerGroup。

  5. 连接建立好了,客户端就可以利用这个连接发送数据给 Netty 服务端。

  6. Netty WorkerGroup 中的线程使用 「Pipeline(包含多个处理器 Handler)」 对数据进行处理。

  7. Netty 服务端的处理完请求后,返回结果也经过 Pipeline 处理。

  8. Netty 服务端通过 Channel 将数据返回给客户端。

  9. 客户端通过 Channel 接收到数据,也经过 Pipeline 进行处理。

Netty 示例

我们先用 Netty 实现一个简单的 服务端/客户端 通信示例,我们是这样使用的,那 RocketMQ 基于 Netty 的通信也应该是这样使用的,不过是在这个基础上封装了一层。主要关注以下几个点:服务端什么时候初始化的,服务端实现的 Handler 做了什么事?客户端什么时候初始化的,客户端实现的 Handler 做了什么事? 「Ne

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值