《RocketMq》一、网络传输篇

本文深入探讨RocketMQ的网络传输原理,重点解析RocketMQ-remoting的编码解码过程、通信层与业务层处理,以及如何实现高效网络传输。通过学习,可以了解如何构建分布式系统的网络传输解决方案。
摘要由CSDN通过智能技术生成

你是否想知道一个分布式系统的网络传输解决方案,那你可以学习下RocketMQ的网络传输原理,从RocketMQ的Remoting网络处理部分,可以学习到如何进行高效的网络传输,这些思想可以应用到不同的业务中。

 

一、要解决的问题

         其实大部分应用的网络处理都要解决如下图所示的问题:



那么就以RocketMQ的源码入手,看看它是如何架构如上的结构的。

 

二、RocketMQ-remoting详解

2.1首先给出其整体的结构图


2.2 编码解码

在RocketMQ中,所有的通讯都是使用RemotingCommand这个结构,这个结构的内容如下:

private static final int RPC_TYPE = 0; // 0, REQUEST_COMMAND
// 1, RESPONSE_COMMAND

private static final int RPC_ONEWAY = 1; // 0, RPC
// 1, Oneway

/**
 * Header 部分
 */
private int code; // 用于标示请求类型,参见RequestCode,ResponseCode
private LanguageCode language = LanguageCode.JAVA;
private int version = 0;
private int opaque = RequestId.getAndIncrement(); // 每个消息的唯一标志,request和response通过该字段匹配
private int flag = 0;
private String remark;
private HashMap<String, String> extFields; // 传输时使用,CommandCustomHeader转为该结构<key,value>后,再统一转为json传输。因此
CommandCustomHeader只能是String,Int,Long等基础数据结构,不能是复合数据结构
private transient CommandCustomHeader customHeader; // 业务逻辑中使用该结构,传输时,使用 extFields
/** * Body 部分 */private transient byte[] body;


2.2.1 RemotingCommand转为网络传输数据

在MQ中,所有数据传输都使用该数据结构进行数据传输,当把数据转为网络传输时,会将customHeader转为HashMap的extFields,再转为json串

 

2.2.2 传输格式:

学习RocketMQ的文章可以从多个来源获取。一个很好的起点是官方文档,该文档提供了快速入门指南和详细的文档说明,可以让你了解RocketMQ的基本概念和使用方法。你可以在https://rocketmq.apache.org/docs/quick-start/找到这些文档。 如果你对RocketMQ的底层原理和实现感兴趣,你可以参考Paxos论文和zab协议。这些是分布式一致性算法的经典论文,它们提供了理论基础和实现细节,可以帮助你更深入地了解RocketMQ的设计思想和实现方式。你可以在学术论文数据库或互联网上搜索这些论文的原文。 此外,你还可以找到一些基于RocketMQ的教程和实践指南。这些资源可以帮助你了解如何在实际项目中使用RocketMQ,并提供一些最佳实践和经验分享。你可以搜索在线技术博客、GitHub仓库和社区论坛,寻找这些教程和指南。 总之,学习RocketMQ的最佳途径是结合官方文档、学术论文和实践指南。通过深入研究RocketMQ的设计原理和实现细节,你将能够更好地了解这个消息队列系统,并在实际应用中进行自己的实践和尝试。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [《The Part-Time Parliament》分布式一致性协议Paxos论文翻译](https://download.csdn.net/download/m631521383/10686177)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.268^v1^control"}}] [.reference_item style="max-width: 50%"] - *2* *3* [学会RocketMQ这一就够了](https://blog.csdn.net/yiqiu1959/article/details/124703488)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.268^v1^control"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值