项目描述: 针对业务系统间耦合度高、异步通信瓶颈问题,从零设计并实现了一款轻量级分布式消息中间件,旨在替代部分场景下对Kafka/RabbitMQ的依赖,降低运维复杂度。
点击空白处退出提示
项目描述: 针对业务系统间耦合度高、异步通信瓶颈问题,从零设计并实现了一款轻量级分布式消息中间件,旨在替代部分场景下对Kafka/RabbitMQ的依赖,降低运维复杂度。
通信协议模块: 基于Netty自定义二进制通信协议,设计了消息头(魔数、版本号、序列化方式)与消息体结构。支持同步/异步发送,通过 LengthFieldBasedFrameDecoder 解决TCP粘包/拆包问题,保障数据传输的完整性。
消息存储模块: 采用“顺序写+索引”的设计。消息主体写入CommitLog文件以保证磁盘顺序写性能;构建ConsumerQueue索引文件,加速消息消费拉取。集成RocksDB存储Offset,支持消息回溯。
集群治理模块: 基于Zookeeper实现Broker集群的注册与发现。实现了Master-Slave架构下的主从同步机制,当Master宕机时,Slave能自动切换为可读状态,确保服务高可用(HA)。
消费管控模块: 实现了消费者组(Consumer Group)管理,支持集群消费(负载均衡)与广播消费模式。内置消息确认(ACK)机制,支持消费失败后的重试与死信队列(DLQ)投递。
为解决业务解耦与流量削峰问题,基于Netty重构了网络通信层,采用Reactor主从线程模型处理I/O,单机吞吐量达10w+ TPS。数据存储层借鉴“顺序写+索引”思想,利用RocksDB作为持久化引擎,通过零拷贝技术减少内存开销。集群管理依托Zookeeper实现Master选举与节点探活,配合改进版的Raft共识算法保证元数据一致性。消费端实现了基于长轮询(Long Polling)的拉取机制,并支持消费进度(Offset)持久化,确保在Broker重启后消息不丢失、不重复消费。
技术
netty
java
grpc
socket
vue



评论