`
wbj0110
  • 浏览: 1586124 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

消息中间件

阅读更多

概述

以往,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)...

    从 0 开始带你成为消息中间件实战高手.rar

    消息中间件是现代分布式系统中不可或缺的组件,它在系统之间提供可靠的数据传输服务,确保数据的高效、安全和解耦。本教程旨在帮助你从零基础开始,逐步成长为消息中间件的实战高手。我们将深入探讨消息中间件的核心...

    JEECG 消息中间件使用文档

    JEECG 消息中间件使用文档 JEECG 智能开发平台消息中间件使用手册主要介绍了 JEECG 智能开发平台中的消息中间件模块的使用方法和详细配置。该中间件模块主要提供了消息提醒功能,包括短信、邮件、微信、系统消息等...

    有关消息中间件论文 pdf版本

    消息中间件是IT系统中的一种关键技术,主要用于在分布式系统中传递和管理消息。它作为一个抽象层,隔离了应用之间的通信细节,确保数据的可靠传输,同时提高了系统的可扩展性和灵活性。"ace消息中间件"可能是指ACE...

    尚硅谷_消息中间件RabbitMQ_课件.docx

    ### 消息中间件RabbitMQ相关知识点 #### 一、消息队列(MQ)概述 **1.1 MQ的概念** MQ(Message Queue),即消息队列,是一种用于实现进程间通信的技术。它通过在消息的生产者和消费者之间提供一个先进先出(FIFO...

    东方通消息中间件TongLINKQ V9.0快速使用手册

    东方通消息中间件 TongLINK/Q V9.0 是一款专为高性能、高可用性及可扩展性的分布式应用设计的消息传递系统。该产品通过提供可靠的消息传输服务,支持多种消息模型,包括发布/订阅(Pub-Sub)模式和点对点(Point-to-...

    消息中间件原理及JMS简介

    消息中间件原理及JMS简介,是IT领域中关于企业级软件集成的重要概念。中间件作为连接不同系统和应用的桥梁,它在分布式系统中扮演着至关重要的角色。本文主要探讨了消息中间件的原理,以及Java消息服务(JMS)这一...

    消息中间件和JMS消息服务.rar

    消息中间件和Java消息服务(JMS)是企业级应用集成中的关键组件,它们在分布式系统中起到数据传输和解耦的重要作用。本压缩包文件“消息中间件和JMS消息服务.rar”可能包含了关于这两个主题的详细资料,旨在帮助读者...

    从 0 开始带你成为消息中间件实战高手.zip

    消息中间件是现代分布式系统中的重要组成部分,它在系统间提供了高效、可靠的数据通信机制,使得各个服务可以异步处理任务,从而提升系统的整体性能和可扩展性。本系列课程"从 0 开始带你成为消息中间件实战高手...

    NNG 消息中间件源码,架构性非常好

    NNG(Near-Near Gateway)是一款轻量级的消息中间件,其源码具有优秀的架构设计,使得它在处理消息传递方面表现出色。消息中间件在IT行业中扮演着至关重要的角色,它作为分布式系统中的通信桥梁,负责解耦应用组件,...

    《分布式消息中间件实践 》_倪炜.zip

    分布式消息中间件是现代软件架构中的重要组成部分,它在大型分布式系统中起到连接各个服务、解耦组件、处理异步通信的关键作用。本书《分布式消息中间件实践》由倪炜撰写,旨在深入探讨这一领域的实践经验和理论知识...

    从 0 开始带你成为消息中间件实战高手.txt

    从 0 开始带你成为消息中间件实战高手

    实验三 消息中间件应用开发:ActiveMQ实现单线程多队列

    【标题】:“实验三 消息中间件应用开发:ActiveMQ实现单线程多队列” 在IT领域,消息中间件是一种重要的软件架构组件,它主要用于应用程序之间的异步通信,提高系统的可扩展性和解耦性。本实验主要关注的是如何...

    基于JMS的消息中间件的实现-论文.zip

    《基于JMS的消息中间件的实现》这篇论文深入探讨了如何在JMX(Java Management Extensions)分布管理框架下设计和实现一个JMS(Java Message Service)消息中间件。本文将详细解析这一主题,旨在理解其核心概念、...

    阿里分布式消息中间件RocketMQ-深入解析.docx

    阿里分布式消息中间件RocketMQ深入解析 RocketMQ是阿里巴巴自研的第三代分布式消息中间件,2012年开源,2016年捐献给Apache软件基金会,成为孵化项目。RocketMQ具有高性能、低延迟、可靠重试、分布式事务等特性,...

Global site tag (gtag.js) - Google Analytics