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术语[转]的更多相关文章

  1. Spring Cloud Alibaba学习笔记(8) - RocketMQ术语与概念

    Topic 一类消息的集合,RocketMQ的基本订阅单位 部署结构 Name Server Name Server 为 producer 和 consumer 提供路由信息. 相对来说,namese ...

  2. 转 消息中间件:RocketMQ 介绍(特性、术语、原理、优缺点、消息顺序、消息重复)

    https://blog.csdn.net/jiangyu1013/article/details/81668671 消息中间件的作用 1. 应用解耦 2. 异步处理 比如用户注册场景,注册主流程完成 ...

  3. RocketMQ——角色与术语详解

    原文地址:http://jaskey.github.io/blog/2016/12/15/rocketmq-concept/ RocketMQ——角色与术语详解 2016-12-15 THU 15:4 ...

  4. 分布式开放消息系统(RocketMQ)的原理与实践

    分布式消息系统作为实现分布式系统可扩展.可伸缩性的关键组件,需要具有高吞吐量.高可用等特点.而谈到消息系统的设计,就回避不了两个问题: 消息的顺序问题 消息的重复问题 RocketMQ作为阿里开源的一 ...

  5. RocketMQ最佳实践

    1.RocketMQ中的专业术语 Topic topic表示消息的第一级类型,比如一个电商系统的消息可以分为:交易消息.物流消息...... 一条消息必须有一个Topic. Tag Tag表示消息的第 ...

  6. rocketmq(1)

    参考: 开源社区:https://github.com/alibaba/RocketMQ rocketmq入门: http://www.cnblogs.com/LifeOnCode/p/4805953 ...

  7. 消息队列比较-rabbitmq/kafka/rocketmq/ONS

    主要是比较这几种队列中间件: rabbitmq kafka rocketmq ONS 分以下几个维度来比较 高并发 毫无疑问KAFKA发消息的速度是最快的 ROCKETMQ/ONS次之 rabbitm ...

  8. RocketMQ实战快速入门

    转自:https://www.jianshu.com/p/824066d70da8 一.RocketMQ 是什么      Github 上关于 RocketMQ 的介绍:RcoketMQ 是一款低延 ...

  9. rocketMQ安装部署详细解析

    近来研究了Apache开源项目rocketMQ(原为阿里项目),并在两台linux服务器上完成了部署,现在整理下,供大家参考学习. 一.简介rocketMQRocektMQ是阿里巴巴在2012年开源的 ...

随机推荐

  1. HTML 5 参考手册

    HTML5是用于取代1999年所制定的 HTML 4.01 和 XHTML 1.0 标准的 HTML (标准通用标记语言下的一个应用)标准版本:现在仍处于发展阶段,但大部分浏览器已经支持某些 HTML ...

  2. sed详解

    1. Sed简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后 ...

  3. lua堆栈操作常用函数学习二

    /* ** basic stack manipulation */ LUA_API int  <strong> (lua_gettop) (lua_State *L);  </str ...

  4. 对象的引用和clone

    $a=new s(); $b=$a; 这是引用,两者为同一个实例 $a=new s(); $b=$a; $b=clone $a; 这是clone,两者不是同一个实例,但拥有相同的属性 如果需要不相同的 ...

  5. Measuring PostgreSQL Checkpoint Statistics

    Checkpoints can be a major drag on write-heavy PostgreSQL installations. The first step toward ident ...

  6. postgreSQL 时间线

    “时间线”(Timeline)是PG一个很有特色的概念,在备份恢复方面的文档里面时有出现.但针对这个概念的详细解释却很少,也让人不太好理解,我们在此仔细解析一下. 时间线的引入 为了理解引入时间线的背 ...

  7. IE下必须点击一下页面空白的地方才可以激活onchange事件

    checkbox在IE下必须点击一下页面空白的地方才可以激活onchange事件. 解决办法把onchange换成onclick

  8. 006. C#使用WMI操作远程计算机

    1. 使用WMI CIM studio 查看\root\CIMV2 所有可使用的表/字段(类/属性) , 点击下载 WMI CIM studio 2. 安装完成后打开VMI CIM studio

  9. gitignore 忽略文件夹

    上面问题,按理说只要在.gitignore文件中加上 /dockAni/Library/ 即可实现. 但是我这样做了以后却发现sourceTree中仍然会列出Library中的文件. 最后在这个帖子中 ...

  10. 华东师大OJ:IP Address【IP地址转换】

    /*===================================== IP Address Time Limit:1000MS Memory Limit:30000KB Total Subm ...