
消息发送流程主要包括如下三个方面:
1、Topic路由寻址
2、选择消息队列 3、消息发送、重试、Broker规避
RocketMQ 使用拉模式来实现 Topic 路由有什么缺点呢?
1、Topic 路由中心(Nameserver) topic 是基于最终一致性,极端情况下会出现数据不一致。
2、客户端无法实时感知路由信息的变化,例如某台Broker 自身进程未关闭,但停止向Nameserver
发送心跳包,但生产者无法立即感知该Broker服务器的异常,会对消息发送造成一定的可用性?
RocketMQ 并不打算解决上述问题,因为基于上述的设计,RocketMQ
NameServer 的实现非常简单、高效,至于消息发送的高可用性,则由消息发送客户端自己来保证。
RocketMQ的设计者遵循的一个设计理念:崇尚“缺陷美”,简单、高性能。
IndexFile 文件格式

** IndexFile文件基于物理磁盘文件实现Hash索引。其文件由40字节的文件头、500W个hash槽,每个hash槽为4个字节,最后由2000万个Index条目,每个条目由20个字节构成,分别为4字节的索引key的hashcode、8字节消息物理偏移量、4字节时间戳、4字节的前一个Index条目(hash冲突的链表结构)。**
网友评论