核心机制
Broker是RocketMq的核心,完成了大部分的工作:消息的接收,消费者消费消息的请求,消息的存储,消息的HA机制等等。以下是列举出来一些在broker进行的核心的机制。
消息的存储和发送
机制1,顺序写入
在写入磁盘时,不同的写入方式,在速度上差别巨大。目前的高性能磁盘,顺序写速度可以达到 600MB/s,超过了一般网卡的传输速度。磁盘随机写的速度只有大概 lOOKB/s,和顺序写的性能相差 6000倍。
机制2,使用零拷贝
一台服务器把本机磁 盘文件的内容发送到客户端 一般分为两个步骤:
read(file, tmp buf, len);,读取本地文件内容;
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?