赞
踩
消息队列中间件(简称消息中间件)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下提供应用解耦、弹性伸缩、冗余存储、流量削峰、异步通信、数据同步等等功能,其作为分布式系统架构中的一个重要组件,有着举足轻重的地位。本文将介绍一下
介绍
RabbitMQ 是采用 Erlang 语言实现的 AMQP 协议的消息中间件,最初起源于金融系统,用于在分布式系统中存储转发消息。RabbitMQ 发展到今天,被越来越多的人认可,这和它在可靠性、可用性、扩展性、功能丰富等方面的卓越表现是分不开的。
特点
架构
基本概念
整体架构
消息生产者并没有直接将消息发送给消息队列,而是通过建立与Exchange的Channel,将消息发送给Exchange,Exchange根据规则,将消息转发给指定的消息队列。消费者通过建立与消息队列相连的Channel,从消息队列中获取消息。
运行流程
首先生产者将业务方数据进行可能的包装,之后封装成消息,发送到 Broker 中。消费者订阅并接收消息,经过可能的解包处理得到原始的数据,之后再进行业务处理逻辑。这个业务处理逻辑并不一定需要和接收消息的逻辑使用同一个线程。消费者可以使用一个线程去接收消息,存入到内存中,比如使用 Java 中的 BlockingQueue。业务处理逻辑使用另一个线程从内存中读取数据,这样可以将应用进一步解耦,提高整个应用的处理效率。
交换机类型
介绍
RocketMQ 是阿里巴巴是基于JMS的开源的分布式消息中间件,2016年底贡献给Apache,成为了Apache的一个顶级项目,基于高可用分布式集群技术,提供消息订阅和发布、消息轨迹查询以及定时(延时)消息、资源统计、监控报警等一系列消息云服务,是企业级互联网架构的核心产品。消息队列RocktMQ历史超过9年,为分布式应用系统提供异步解耦、削峰填谷的能力,同时具备海量消息堆积,高吞吐、可靠重试等互联网应用所需的特性,是阿里巴巴双11使用的核心产品。
特点
架构
基本概念
存储模型
RocketMQ中的消息数据存储,采用了零拷贝技术,RocketMQ的消息的存储是由ConsumeQueue和CommitLog 配合来完成的,ConsumeQueue中只存储很少的数据,消息主体都是通过CommitLog来进行读写。
RocketMQ 为了提高性能,会尽可能地保证 磁盘的顺序写。消息在通过 Producer 写入 RocketMQ 的时候,有两种写磁盘方式,分别是同步刷盘与异步刷盘。
RabbitMQ是基于AMQP 协议的 具有跨语言的特性,支持多种开发语言,基于erlang语言编写,天生具有高并发,RocketMQ是基于JMS的 是阿里巴巴旗下开发的mq,只能用java语言,声称可用性极高,消息从来不会丢失。数据可靠性RabbitMQ具备多副本机制,数据可靠性较高,RocketMQ支持异步实时刷盘,同步刷盘,同步Replication,异步Replication,可用性方面。RabbitMQ支持集群部署,集群节点数量有多种规格。RocketMQ是分布式架构,可用性高。RabbitMQ不支持延迟队列(定时消息)、消息过滤、消息回溯、消息保留。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。