核心机制

Broker是RocketMq的核心,完成了大部分的工作:消息的接收,消费者消费消息的请求,消息的存储,消息的HA机制等等。以下是列举出来一些在broker进行的核心的机制。

消息的存储和发送

机制1,顺序写入

在写入磁盘时,不同的写入方式,在速度上差别巨大。目前的高性能磁盘,顺序写速度可以达到 600MB/s,超过了一般网卡的传输速度。磁盘随机写的速度只有大概 lOOKB/s,和顺序写的性能相差 6000倍。

机制2,使用零拷贝

一台服务器把本机磁 盘文件的内容发送到客户端 一般分为两个步骤:

  1. read(file, tmp buf, len);,读取本地文件内容;

  2. write(socket, tmp_buf, len);,,将读取的内容通过网络发送出去。

从磁盘复制数据到内核态内存,从内核态内存复制到用户 态内存(完成了 read(file, tmp_b叫 len));

然后从用户态内存复制到网络驱动 的内核态内存,最后是从网络驱动的内核态内存复制到网卡中进行传输(完成 write(socket, tmp_buf, len))。

数据进行了4次拷贝。使用零拷贝则减少了数据复制的次数。

高可用机制

机制3,消费者读取消息,自动切换

默认情况下,消费者从mastar读取消息。当master出现故障,会自动切换从其salver读取消息。

机制4,发生者发送消息,自动切换

在创建 Topic 的时候,把Topic的多个Message Queue创建在多个 Broker组上。当一个broker组的master不可用时,则会发送消息到其他broker组的master。

刷盘方式

机制5,支持同步刷盘和异步刷盘

发送者发送消息的时候,支持选择持久化方式。

复制方式

机制6,同步复制和异步复制

同步复制是master和salver都返回成功,才认为消息写入成功。异步复制则只有master写入成功,就会返回成功。

Last updated

Was this helpful?