mq消息中间件以及rocketmq初识

接触了网络程序编程,服务端/客户端这个理念大家都明白

生产者和消费者

mq消息中间总会出现的名词,很好理解,生成就是提供服务的服务端,消费者就是请求服务的客户端;

中间件

就是生产者( Producer )和消费者( Consumer ),咱不需要mq日常也是经常这么做,这个mq的核心概念就是中间件,如rocketmq的一些概念;

生产者( Producer )创建消息,发布消息,放入 Broker 中;

producer:消息生产者,生产者的作用就是将消息发送到 MQ,生产者本身既可以产生消息,如读取文本信息等。也可以对外提供接口,由外部应用来调用接口,再由生产者将收到的消息发送到 MQ

producer group: 生产者组,简单来说就是多个发送同一类消息的生产者称之为一个生产者组。在这里可以不用关心,只要知道有这么一个概念即可,Producer实例可以是多机器、单机器多进程、单进程中的多对象。Producer可以发送多个Topic。处理分布式事务时,也需要Producer集群提高可靠性

Broker : Broker 是 RocketMQ 系统的主要角色,其实就是前面一直说的 MQ。Broker 接收来自生产者的消息,储存以及为消费者拉取消息的请求做好准备

Topic : Topic 是一种消息的逻辑分类,比如说你有订单类的消息,也有库存类的消息,那么就需要进行分类,一个是订单 Topic 存放订单相关的消息,一个是库存 Topic 存储库存相关的消息

Message : Message 是消息的载体。一个 Message 必须指定 topic,相当于寄信的地址。Message 还有一个可选的 tag 设置,以便消费端可以基于 tag 进行过滤消息。也可以添加额外的键值对,例如你需要一个业务 key 来查找 broker 上的消息,方便在开发过程中诊断问题

Tag : 标签可以被认为是对 Topic 进一步细化。一般在相同业务模块中通过引入标签来标记不同用途的消息

消费者( Consumer )向 Broker 指定Topic分类并提供tag分类获得消息,进行消费;

rocketmq的一些介绍

2012年,阿里巴巴开源其自研的第三代分布式消息中间件——RocketMQ。经过几年的技术打磨,阿里称基于RocketMQ技术,目前双十一当天消息容量可达到万亿级。

2016年11月,阿里将RocketMQ捐献给Apache软件基金会,正式成为孵化项目。阿里称会将其打造成顶级项目。这是阿里迈出的一大步,因为加入到开源软件基金会需要经过评审方的考核与观察。坦率而言,业界还对国人的代码开源参与度仍保持着刻板印象;而Apache基金会中的342个项目中,暂时还只有Kylin、CarbonData、Eagle 和 RocketMQ 共计四个中国技术人主导的项目。

2017年2月20日,RocketMQ正式发布4.0版本,专家称新版本适用于电商领域,金融领域,大数据领域,兼有物联网领域的编程模型。

rocketmq的俩种模式

Topic 模式:

主题,发布订阅模式下的消息统一汇集地,不同生产者向topic发送消息,由MQ服务器分发到不同的订阅者,实现消息的 广播

Queue 模式

队列,PTP模式下,特定生产者向特定queue发送消息,消费者订阅特定的queue完成指定消息的接收

rocketmq的俩种消费方式 Push与Pull

push推送 主动将消息推送给消费者(consumer)

pull 拉取 消费者(consumer)主动向broker请求消息

分布式消息中间件rocketmq的优势和特性

  1. 历经多次天猫双十一海量消息考验
  2. 亿级消息堆积能力
  3. 纯java编写,基于通信框架netty
  4. 能够保证严格的消息顺序
  5. 支持Topic与Queue两种模式
  6. 同时支持Push与Pull方式消费消息

和其他的mq对比

1574582331309

rocket官方给的对比图

http://rocketmq.apache.org/docs/motivation/