Skip to content

Adwin2/ryanMQ

Repository files navigation

To-DO

存储设计

  • 分段文件 + 内存映射(mmap)减少磁盘IO
  • 索引文件 跳表结构 (offset --> 物理地址)
  • 多副本同步写入 (ISR)

顺序写入: 避免随机IO 分段存储(segment 对应一个 offset 快速定位 清理过期数据) 稀疏索引 直接利用操作系统页缓存 磁盘文件映射到内存

零拷贝传输 : sendfile系统调用,直接将磁盘数据通过DMA传输到网卡

作batch单位传输 将数据写到页缓存,操作系统异步刷盘 flush.internal.ms 控制刷盘频率

:ELK日志系统:

按时间和bytes大小删除过期segment 故障容错和恢复 ​Checksum 校验:每条消息包含 CRC32 校验码,防止数据损坏。 ​恢复日志(Recovery Log)​:Broker 重启时通过读取 Segment 文件和索引重建状态,而非依赖外部数据库。 ​可借鉴点 ​自包含存储:将元数据与数据统一存储(如将索引与数据文件绑定),避免外部依赖。 ​数据完整性:在关键路径添加校验机制(如网络传输、持久化存储)。 内存池化 减少GC垃圾回收压力 事件驱动模型 : FileChannel.mmap 频繁读写时 将文件映射到内存

About

Junior MQ project inspired by NSQ and Kafka

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages