RocketMQ术语[转]
RocketMQ
RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点:能够保证严格的消息顺序
- 能够保证严格的消息顺序
- 提供丰富的消息拉取模式
- 高效的订阅者水平扩展能力
- 实时的消息订阅机制
- 亿级消息堆积能力
专业术语
1.Producer:消息生产者,负责产生消息,一般有业务系统负责产生消息
2.Consumer:消息消费者,负责消费消息,一般是后台系统负责异步消费
3.PushConsumer:Consumer的一种,应用通常向Consumer注册一个Listener监听器,Consumer收到消息立刻回调Listener监听器
4.PullConsumer:Consumer的一种,应用通常主动调用Consumer的拉取消息方法从Broker拉消息,主动权由应用控制
5.Producer Group:一类Producer集合的名称,这类Producer通常发送一类消息,且发送逻辑一致
6.Consumer Group:一类Consumer集合的名称,这类Consumer通常消费一类消息,且消费逻辑一致
7.Broker:消息中转角色,负责储存消息,转发消息,一般也称为Server。在JMS规范中称为Provider
8.广播消费:一条消息被多个Consumer消费,即使这些Consumer属于同一个ConsumerGroup,消息也会被Consumer Group中的每个ConSumer都消费一次,广播消费中的Consumer Group概念可以认为在消息划分方面无意义。在CORBA Notification 规范中,消费方式都属于广播消费
9.集群消费:一个Consumer Group中的Consumer实例平均分摊消费消息。例如某个Topic有9条消息,其中一个Consumer Group有3个实例(可能是3个进程或者3台服务器),那么每个消息实例只消费其中的3条消息
10.顺序消息:消费消息的顺序要与发送消息的顺序一致,在RocketMQ中,主要指的是局部顺序,即一类消息为满足顺序性,必须Producer单线程顺序发送,且发送到同一队列,这样Consumer就可以按照Producer发送顺序去消费消息
11.普通顺序消息:顺序消息的一种,正常情况下可以保证完全的顺序消息,但是一旦发生通信异常,Broker重启,由于队列总数发生变化,哈希取模后定位的队列会变化,产生短暂的消息不一致。如果业务能容忍在集群异常情况(如某个Broker重启或者宕机)下,消息短暂的乱序,使用普通顺序消息比较合适
12.严格顺序消息:顺序消息的一种,无论正常还是异常情况下都能保证顺序,但是牺牲了分布式Failover特性,即Broker集群中只要有一台机器不可用,则整个集群不可用,服务可用性大大降低。如果服务器部署为同步双写模式,此缺陷可通过备机自动切换为主避免,不过仍然会存在几分钟的服务不可用
13.Message Queue:在RocketMQ中,所有消息队列都是持久化,长度无限的数据结构,所谓长度无限是指队列中的每个存储单元都是定长,访问其中的存储单元使用Offset来访问,Offset为Java Long类型,64位,理论上在100年内不会溢出,所有认为是无限长,另外队列中只保存最近几天的数据,之前的数据会按照过期时间来删除。也可以认为Message Queue是一个长度无限的数组,offset是下标
14.长轮询:客户端向服务器发送请求,服务端接到请求后Hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息之后,再次向服务器发送请求
优点:在无消息的情况下不会频繁的请求,耗费资源小
缺点:服务器Hold住连接会消耗资源,返回数据顺序无保证,难于维护管理
实例:WebQQ、Facebook IM
15.长连接:在页面嵌入一个隐藏的Iframe,将这个隐藏Iframe的src属性设置为对一个长连接的请求或是采用xhr请求,服务器端就源源不断的向客户端输入数据
优点:消息及时到达,不发无用请求,管理起来相对方便
缺点:服务器维护一个长连接会增加开销
RocketMQ术语[转]的更多相关文章
- Spring Cloud Alibaba学习笔记(8) - RocketMQ术语与概念
Topic 一类消息的集合,RocketMQ的基本订阅单位 部署结构 Name Server Name Server 为 producer 和 consumer 提供路由信息. 相对来说,namese ...
- 转 消息中间件:RocketMQ 介绍(特性、术语、原理、优缺点、消息顺序、消息重复)
https://blog.csdn.net/jiangyu1013/article/details/81668671 消息中间件的作用 1. 应用解耦 2. 异步处理 比如用户注册场景,注册主流程完成 ...
- RocketMQ——角色与术语详解
原文地址:http://jaskey.github.io/blog/2016/12/15/rocketmq-concept/ RocketMQ——角色与术语详解 2016-12-15 THU 15:4 ...
- 分布式开放消息系统(RocketMQ)的原理与实践
分布式消息系统作为实现分布式系统可扩展.可伸缩性的关键组件,需要具有高吞吐量.高可用等特点.而谈到消息系统的设计,就回避不了两个问题: 消息的顺序问题 消息的重复问题 RocketMQ作为阿里开源的一 ...
- RocketMQ最佳实践
1.RocketMQ中的专业术语 Topic topic表示消息的第一级类型,比如一个电商系统的消息可以分为:交易消息.物流消息...... 一条消息必须有一个Topic. Tag Tag表示消息的第 ...
- rocketmq(1)
参考: 开源社区:https://github.com/alibaba/RocketMQ rocketmq入门: http://www.cnblogs.com/LifeOnCode/p/4805953 ...
- 消息队列比较-rabbitmq/kafka/rocketmq/ONS
主要是比较这几种队列中间件: rabbitmq kafka rocketmq ONS 分以下几个维度来比较 高并发 毫无疑问KAFKA发消息的速度是最快的 ROCKETMQ/ONS次之 rabbitm ...
- RocketMQ实战快速入门
转自:https://www.jianshu.com/p/824066d70da8 一.RocketMQ 是什么 Github 上关于 RocketMQ 的介绍:RcoketMQ 是一款低延 ...
- rocketMQ安装部署详细解析
近来研究了Apache开源项目rocketMQ(原为阿里项目),并在两台linux服务器上完成了部署,现在整理下,供大家参考学习. 一.简介rocketMQRocektMQ是阿里巴巴在2012年开源的 ...
随机推荐
- kuangbin_ShortPath J (POJ 1511)
其实虽然一开始有被这个题的8000MS 和 256MB限制又被吓到 但是严格来说跟之前的POJ 3268是一样的做法只是数据大了点 但是问题就出在数据大了点上 其实严格来说也不大 1e6 数组加起来大 ...
- [hdu 3605]Escape
这题的做法非常直观,却又非常不直观 先容许我吐一下槽吧~作者你的英语是读到火星上去了喵? 题目大体是说人类要移民,然后有 n 个人, m 个星球 每个人都有 m 个 0 . 1 数码表示他能否移民到该 ...
- java的nio之:java的nio系列教程之概述
一:java的nio的核心组件?Java NIO 由以下几个核心部分组成: ==>Channels ==>Buffers ==>Selectors 虽然Java NIO 中除此之外还 ...
- CENTOS GUI
http://unix.stackexchange.com/questions/181503/how-to-install-desktop-environments-on-centos-7 How t ...
- javascript对时间的校验操作
function check() { var startTime=$("#sTime").val(); var endTime=$("#eTime").val( ...
- C#实现通过模板自动创建Word文档的方法
原文地址:http://www.jb51.net/article/55332.htm 本文实例讲述了C#实现通过模板自动创建Word文档的方法,是非常实用的技巧.分享给大家供大家参考.具体实现方法 ...
- 016. asp.net的验证控件
RequiredFileldValidator: 检查某个字段是否输入; 空值检查 主要属性: ControlToValidate:要验证的控件 ErrorMessage:错误提示信息 Compare ...
- 【转】Android Drawable Resource学习(十一)、RotateDrawable
对另一个drawable资源,基于当前的level,进行旋转的drawable. 文件位置: res/drawable/filename.xml文件名即资源名 编译数据类型: 指向 RotateDra ...
- python简单粗暴多进程之concurrent.futures
python在前面写过多线程的库threading: python3多线程趣味详解 但是今天发现一个封装得更加简单暴力的多进程库concurrent.futures: # !/usr/bin/pyth ...
- mapreduce精简概括--转
mapreduce精简概括 We want to count all the books in the library. You count up shelf #1, I count up shelf ...