RocketMQ(一):初探门径

RocketMQ是阿里开源的消息中间件,目前也已经孵化为Apache顶级项目,它是纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。RocketMQ思路起源于Kafka,它对消息的可靠传输及事务性做了优化,目前在阿里集团被广泛应用于交易、充值、流计算、消息推送、日志流式处理、 binglog分发等场景。

RocketMQ-整体介绍

  • RocketMQ是一款分布式、队列模型的消息中间件。
  • 支持集群模型、负载均衡、水平扩展能力
  • 亿级别的消息堆积能力
  • 采用零拷贝的原理、顺序写盘、随机读
  • 丰富的API使用
  • 代码优秀,底层通信框架采用Netty NIO框架
  • NameServer 代替 Zookeeper
  • 强调集群无单点,可扩展,任意一点高可用,水平可扩展
  • 消息失败重试机制,消息可查询

RocketMQ和其他常见消息队列对比

RocketMQ-核心概念模型

  • Producer:消息生产者,负责产生消息,一般由业务系统负责产生消息
  • Consumer:消息消费者,负责消费消息,一般是后台系统负责异步消费
  • Push Consumer:消费者的一种,需要向Consumer对象注册监听,字面意思是推送模式,实际上也是拉的模式,内部使用的是一种长轮询的机制。
  • Pull Consumer:消费者的一种,需要主动请求Broker拉取消息
  • Producer Group:生产者集合,一般用于发送一类消息,一般在做事务消息,消息回查的时候会用到,包括组内多生产者发消息的时候也会用到生产者组,必须要定义
  • Consumer Group:消费者集合,一般用于接受一类消息进行消费
  • Broker:MQ消息服务(中转角色,用于消息存储与生产消费转发)

RocketMQ-源码包下载与结构说明

  • rocketmq-broker 主要的业务逻辑,消息收发,主从同步,pagecache
  • rocketmq-client 客户端接口,比如生产者消费者
  • rocketmq-example 示例,比如生产者消费者
  • rocketmq-common 公用数据结构等
  • rocketmq-distribution 编译模块,编译输出等
  • rocketmq-filter 进行Broker过滤的不感兴趣的消息传输,减小带宽压力
  • rocketmq-logappender、rocketmq-logging日志相关
  • rocketmq-namesrv Namesrv服务,用于服务协调
  • rocketmq-openmessageing 对外提供服务
  • rocketmq-remoting 远程调用接口,封装Netty底层通信
  • rocketmq-srvutil 提供一些公用的的工具方法,比如解析命令行参数
  • rocketmq-store 消息存储
  • rocketmq-test、rocketmq-example
  • rocketmq-tools 管理工具,比如有名的mqadmin工具

RocketMQ QuickStart-生产者使用

  • 创建生产者对象DefaultMQProducer
  • 设置NamesrvAddr
  • 启动生产者服务
  • 创建消息并发送

RocketMQ QuickStart-消费者使用

  • 创建新消费者对象 DefaultMQConsumer
  • 设置NamesrvAddr及其消费位置ConsumeFromWhere
  • 进行订阅主题 subscribe
  • 注册监听并消费 registerMessageListener

RocketMQ-四种集群模式简单介绍

RocketMQ集群

单点模式

  • 一般用于测试

主从模式

  • 消息的高可用,主节点可以做到消息的读写收发,从节点不能接收消息,即不能从生产者写消息,但是从节点可以对外提供消息,就是说假如主节点接收到消息,可以同步到从节点,主节点挂了从节点可以继续提供服务。
  • RocketMQ不支持主从切换,但可以自己写一个脚本实现主从切换。

双主模式

  • Topic既可以建在节点一上,也可以建在节点二上,性能比较好,因为不需要将一个节点的数据同步到另一个节点。

双主双从模式、多主多从模式

  • 双主双从模式下的同步双写,多主多从模式下的异步复制。

猜你喜欢

转载自blog.csdn.net/qq_36221788/article/details/108811687