概述
以往,IBM的MQ等产品解决的是在复杂的架构系统中,点到点的数据传输问题。在当前的互联网中,对消息中间件的认识与进一步定义有了进一步的发展。在互联网中,由于用户数量的基数大,所产生的数据非常庞大,为了处理用户多样化的需求,使现在的架构设计越来越复杂,对系统的水平扩展性的要求越来越高。在进一步提高用户体验,提高系统可用性的基础上,面对大数据、复杂的业务处理流程,数据处理的及时性、逻辑间的解耦变得非常重要,需要在架构设计上引入消息中间件解决以上问题。互联网的消息中间件重点考虑多样的消息订阅、推送方式,高性能的队列存储、大并发低堆积的实现等关键特性,可以根据需求层次提供高性能、有序的消息,有事物的消息等多种消息消费模式
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请求,服务器端就源源不断的向客户端输入数据
优点:消息及时到达,不发无用请求,管理起来相对方便
缺点:服务器维护一个长连接会增加开销
实例:Gmail聊天
原文:http://www.changeself.net/archives/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6.html
相关推荐
消息中间件是一种在不同应用或系统之间传递消息的软件,它位于操作系统和应用软件之间,为应用软件提供运行环境和服务。消息中间件支持分布计算,提供跨网络、硬件和操作系统平台的透明应用或服务交互,并支持标准...
消息中间件是软件架构中的重要组成部分,主要用于在分布式系统中传递数据和协调不同组件之间的通信。它作为一个独立的服务,能够解耦发送者和接收者,提高系统的灵活性、可扩展性和可靠性。下面将深入探讨消息中间件...
消息中间件(Middleware)是分布式系统架构中的关键组件之一,它是一种软件基础设施,专注于在分布式系统之间发送和接收消息。消息中间件(MOM,Message-oriented middleware)可以提供高效可靠的消息传递机制,实现...
分布式消息中间件是现代软件架构中的重要组成部分,特别是在微服务和大数据处理场景中,它们扮演着数据通信的关键角色。本书《分布式消息中间件实践_倪炜(著)》深入探讨了四种主流的消息队列(Message Queue,MQ)...
消息中间件是现代分布式系统中不可或缺的组件,它在系统之间提供可靠的数据传输服务,确保数据的高效、安全和解耦。本教程旨在帮助你从零基础开始,逐步成长为消息中间件的实战高手。我们将深入探讨消息中间件的核心...
JEECG 消息中间件使用文档 JEECG 智能开发平台消息中间件使用手册主要介绍了 JEECG 智能开发平台中的消息中间件模块的使用方法和详细配置。该中间件模块主要提供了消息提醒功能,包括短信、邮件、微信、系统消息等...
消息中间件是IT系统中的一种关键技术,主要用于在分布式系统中传递和管理消息。它作为一个抽象层,隔离了应用之间的通信细节,确保数据的可靠传输,同时提高了系统的可扩展性和灵活性。"ace消息中间件"可能是指ACE...
### 消息中间件RabbitMQ相关知识点 #### 一、消息队列(MQ)概述 **1.1 MQ的概念** MQ(Message Queue),即消息队列,是一种用于实现进程间通信的技术。它通过在消息的生产者和消费者之间提供一个先进先出(FIFO...
东方通消息中间件 TongLINK/Q V9.0 是一款专为高性能、高可用性及可扩展性的分布式应用设计的消息传递系统。该产品通过提供可靠的消息传输服务,支持多种消息模型,包括发布/订阅(Pub-Sub)模式和点对点(Point-to-...
消息中间件原理及JMS简介,是IT领域中关于企业级软件集成的重要概念。中间件作为连接不同系统和应用的桥梁,它在分布式系统中扮演着至关重要的角色。本文主要探讨了消息中间件的原理,以及Java消息服务(JMS)这一...
消息中间件和Java消息服务(JMS)是企业级应用集成中的关键组件,它们在分布式系统中起到数据传输和解耦的重要作用。本压缩包文件“消息中间件和JMS消息服务.rar”可能包含了关于这两个主题的详细资料,旨在帮助读者...
消息中间件是现代分布式系统中的重要组成部分,它在系统间提供了高效、可靠的数据通信机制,使得各个服务可以异步处理任务,从而提升系统的整体性能和可扩展性。本系列课程"从 0 开始带你成为消息中间件实战高手...
NNG(Near-Near Gateway)是一款轻量级的消息中间件,其源码具有优秀的架构设计,使得它在处理消息传递方面表现出色。消息中间件在IT行业中扮演着至关重要的角色,它作为分布式系统中的通信桥梁,负责解耦应用组件,...
分布式消息中间件是现代软件架构中的重要组成部分,它在大型分布式系统中起到连接各个服务、解耦组件、处理异步通信的关键作用。本书《分布式消息中间件实践》由倪炜撰写,旨在深入探讨这一领域的实践经验和理论知识...
从 0 开始带你成为消息中间件实战高手
【标题】:“实验三 消息中间件应用开发:ActiveMQ实现单线程多队列” 在IT领域,消息中间件是一种重要的软件架构组件,它主要用于应用程序之间的异步通信,提高系统的可扩展性和解耦性。本实验主要关注的是如何...
### TongLINK/Q 消息中间件相关知识点 #### 一、产品概述 TongLINK/Q 是由北京东方通科技发展有限责任公司开发的一款消息中间件,主要用于构建高效、可靠的分布式应用程序。该中间件提供了多种消息传递模式,包括点...
《基于JMS的消息中间件的实现》这篇论文深入探讨了如何在JMX(Java Management Extensions)分布管理框架下设计和实现一个JMS(Java Message Service)消息中间件。本文将详细解析这一主题,旨在理解其核心概念、...
阿里分布式消息中间件RocketMQ深入解析 RocketMQ是阿里巴巴自研的第三代分布式消息中间件,2012年开源,2016年捐献给Apache软件基金会,成为孵化项目。RocketMQ具有高性能、低延迟、可靠重试、分布式事务等特性,...