2~核心概念详解
2018-03-13 16:53
183 查看
1,前言
前面说了,这个框架就是阿里巴巴开发的,它为了适应淘宝天猫的业务逻辑,RocketMQ引用JMS规范与CORRA Notification规范,参考了同类产品的设计思想,但它并不遵循任何规范
2,发展历史
Metaq 1.x
Metaq 2.x:2012年10月份上线,淘宝内部广泛使用
RcoketMQ3.x
3,专业术语
Producer:消息生产者,负责产生消息,一般由业务系统负责产生消息。
Consumer:消息消费者,负责消费消息,一般是后台系统负责异步消费
Push Consumer: 推 Consumer的一种,应用通常向Consumer对象注册一个Listener接口,一旦收到消息,Consumer对象立即回调Listener接口方法。
Pull Consumer:拉 Consumer的一种,应用通常主动调用Consumer的拉消息方法从Broker拉消息,主动权由应用控制。
Producer Group:一类Producer的集合名称,这类Producer通常发送一类消息,且发送逻辑一致。
Consumer Group:一类Consumer的集合名称,这类Consumer通常消费一类消息,且消费逻辑一致。
Broker:消息中转角色,负责存储消息,转发消息,一般也称为Server,在JMS规范中称为Provider
广播消费
一条消息被多个Consumer消费,即使这些Consumer属于同一个Consumer Group,消息也会被Consumer Group中的每个Consumer都消费一次,广播消费中的Consumer Group概念可以认为在消息划分方面无意义。
集群消费
一个Consumer Group中的Consumer实例平均分摊消费,例如某个Topic有9条消息,其中一个Consumer Group有3个实例(可能是3个进程,或者3台机器),那么每个实例只消费其中的3条消息。
顺序消息
消费消息的顺序同发送消息的顺序一致,在RocketMQ中,主要指局部顺序,即一类消息为满足顺序性,必须Producer单线程顺序发送,且发送到同一个队列,这样Consumer就可以按照Producer发送顺序去消费。
普通顺序消息
顺序消息一种,正常情况下完全可以保证完全的顺序消息,但是一旦发生通信异常,Broker重启,由于队列总数发生变化,哈希取模后定位的队列会变化,产生短暂的消息顺序不一致,如果业务能容忍在集群异常情况(如某个Broker宕机或重启)消费消息的乱序,使用普通顺序消息比较合适。
严格顺序消息
顺序消息的一种,无论正常异常情况都能保证顺序,但是牺牲了分布式Failover特性,即Broker中只要有一台机器不可用,则整个集群都不可用,服务可用性大大降低。
目前已知的应用只有数据库binlog同步强依赖严格顺序消息,其他应用绝大部分都可以容忍短暂乱序。
Message Queue
在RocketMQ中,所有消息队列都是持久化,长度无限的数据结构,所谓长度无限指队列中每个存储单元都是定长,访问其中的存储单元使用Offset来访问,offset为java long 类型,64位,理论上100年内不会溢出,所以认为长度无限,另外队列中只保存最近几天的数据,之前的数据会按照过期时间来删除。也可以认为MessageQueue是一个长度无限的数组,offset就是下标。
前面说了,这个框架就是阿里巴巴开发的,它为了适应淘宝天猫的业务逻辑,RocketMQ引用JMS规范与CORRA Notification规范,参考了同类产品的设计思想,但它并不遵循任何规范
2,发展历史
Metaq 1.x
Metaq 2.x:2012年10月份上线,淘宝内部广泛使用
RcoketMQ3.x
3,专业术语
Producer:消息生产者,负责产生消息,一般由业务系统负责产生消息。
Consumer:消息消费者,负责消费消息,一般是后台系统负责异步消费
Push Consumer: 推 Consumer的一种,应用通常向Consumer对象注册一个Listener接口,一旦收到消息,Consumer对象立即回调Listener接口方法。
Pull Consumer:拉 Consumer的一种,应用通常主动调用Consumer的拉消息方法从Broker拉消息,主动权由应用控制。
Producer Group:一类Producer的集合名称,这类Producer通常发送一类消息,且发送逻辑一致。
Consumer Group:一类Consumer的集合名称,这类Consumer通常消费一类消息,且消费逻辑一致。
Broker:消息中转角色,负责存储消息,转发消息,一般也称为Server,在JMS规范中称为Provider
广播消费
一条消息被多个Consumer消费,即使这些Consumer属于同一个Consumer Group,消息也会被Consumer Group中的每个Consumer都消费一次,广播消费中的Consumer Group概念可以认为在消息划分方面无意义。
集群消费
一个Consumer Group中的Consumer实例平均分摊消费,例如某个Topic有9条消息,其中一个Consumer Group有3个实例(可能是3个进程,或者3台机器),那么每个实例只消费其中的3条消息。
顺序消息
消费消息的顺序同发送消息的顺序一致,在RocketMQ中,主要指局部顺序,即一类消息为满足顺序性,必须Producer单线程顺序发送,且发送到同一个队列,这样Consumer就可以按照Producer发送顺序去消费。
普通顺序消息
顺序消息一种,正常情况下完全可以保证完全的顺序消息,但是一旦发生通信异常,Broker重启,由于队列总数发生变化,哈希取模后定位的队列会变化,产生短暂的消息顺序不一致,如果业务能容忍在集群异常情况(如某个Broker宕机或重启)消费消息的乱序,使用普通顺序消息比较合适。
严格顺序消息
顺序消息的一种,无论正常异常情况都能保证顺序,但是牺牲了分布式Failover特性,即Broker中只要有一台机器不可用,则整个集群都不可用,服务可用性大大降低。
目前已知的应用只有数据库binlog同步强依赖严格顺序消息,其他应用绝大部分都可以容忍短暂乱序。
Message Queue
在RocketMQ中,所有消息队列都是持久化,长度无限的数据结构,所谓长度无限指队列中每个存储单元都是定长,访问其中的存储单元使用Offset来访问,offset为java long 类型,64位,理论上100年内不会溢出,所以认为长度无限,另外队列中只保存最近几天的数据,之前的数据会按照过期时间来删除。也可以认为MessageQueue是一个长度无限的数组,offset就是下标。
相关文章推荐
- Apriori算法详解之【一、相关概念和核心步骤】
- Apriori算法详解之【一、相关概念和核心步骤】
- Apriori算法详解之【一、相关概念和核心步骤】
- Apriori算法详解之【一、相关概念和核心步骤】
- android 屏幕适配攻略(1) 核心概念与单位详解
- Maven核心概念详解
- Apriori算法详解之【一、相关概念和核心步骤】
- Spark 核心概念 RDD 详解
- Apriori算法详解之【一、相关概念和核心步骤】
- Apriori算法详解之【一、相关概念和核心步骤】
- Spring之IOC、核心容器和Bean概念详解
- Apriori算法详解之【一、相关概念和核心步骤】
- Apriori算法详解之【一、相关概念和核心步骤】
- java NIO详解(1)--概念及核心组件
- Elasticsearch基本概念及核心配置文件详解
- DBA_Oracle Startup / Shutdown启动和关闭过程详解(概念)(对数据库进行各种维护操作)
- C#核心概念--装箱和拆箱(什么是装箱和拆箱)
- lucene核心概念
- Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
- XWork核心概念