RocketMQ的核心功能包括消息发送、消息存储(Broker)、消息消费,NameServer实现了各类元数据的管理。
主题:Topic ,消息主题,一级消费类型,生产者向其发送消息,消费者负责从topic接收消息并消费
生产者:消息发布者,负责生产并发送消息到Topic
消费者:也称为消息订阅者,负责从Topic接收并消费消息
消息:生产者或者消费者进行消息发送或者消费的主题,对于RocketMq来讲,消息就是字节数组。
NameServer的选择
运行流程:RocketMq需要先启动NameServer再启动Rocket中的Broker,Broker在启动的时候向全部的NameServer注册,生产者在发送消息以前从NameServer中获取Broker服务器地址列表,而后根据负载均衡算法从列表中选择一台服务器进行消息发送。NameServer与每台Broker服务保持长连接,并间隔30s检查Broker是否存活,若是检查到Broker宕机(使用心跳机制,若是检测超过120s),则从路由注册表中将其剔除,保证其高可用。
用处:
(1)顺序消息:RocketMQ可以保证消息有序
(2)消息过滤:消费者能够对同一主题下的消息按照规则只消费本身感兴趣的消息,能够支持在服务端与消费端的消息过滤机制
(3)消息存储:RocketMQ核心就是消息的存储,对存储通常讲有两个维度:消息堆积能力和消息存储性能。RocketMQ最求消息的高性能,引入内存映射机制,全部的主题消息顺序存储在同一个文件中。同时防止无限堆积,引入消息文件过时机制和文件存储空间报警机制。
消息的高可用:断电、关机的情况下,RocketMq可以保证消息的不丢失(同步刷盘机制不丢失,异步刷盘少许丢失)