中间件(2)消息队列

  消息队列也是构建大型网站架构过程中非常重要的一个中间件。

消息队列

使用过消息队列的同学都知道,消息队列最常用的两个场景是:

1,解耦,一般用在大的网站进行业务拆分的时候,用于各应用之间进行消息通讯。

2,异步,针对那些不需要同步执行,可以晚点执行的操作都可以使用异步,比如发送邮件和短信,实际上使用消息队列来处理异步还能提升性能,因为消息队列服务器的处理速度远高于数据库服务器。

最常用的消息队列组件有两个:RabbitMQ和Kafka,下面就来总结下它们之间有什么区别。

RabbitMQ vs Kafka

基本信息

先看下面这个表格:

可以得出以下结论:Kafka更受欢迎,rabbitMQ版本更新更快。

架构模型

RabbitMQ:

Kafka:

从上图可以看到:RabbitMQ和Kafka都有消息生产者和消费者,但是两者在broker的处理是不一样的,RabbitMQ有exchange交换机的概念,而Kafka没有。

性能对比

没有可比性,因为两者应用场景不一样。

测试条件:普通pc,双核cpu

Kafka:100k msg/s

RabbitMQ:40k msg/s

应用场景

既然说到应用场景,来看下两者在应用场景方面有什么不同:

RabbitMQ:内置支持高并发(erLang语言特性),支持事务和消息确认可靠性更高,一般用在应用间通讯方面。

Kafka:流式数据,大数据的处理,不支持事务和消息确认,一般用在日志的收集方面,因为允许偶尔的消息丢失。

时间: 2024-09-29 00:46:55

中间件(2)消息队列的相关文章

初识中间件之消息队列

初识中间件之消息队列 测试那点事儿 测试那点事儿 初识中间件之消息队列 1 消息队列概述 消息队列是分布式系统中的重要组件,主要解决应用耦合,异步消息,流量削锋等问题,以实现高性能,高可用,可伸缩和最终一致性架构,是大型分布式系统中不可缺少的中间件. 目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等,比如我之前用过的RabbitMQ以及kafka. 2 消息队列应用场景 在实际应用中,消息队列常用于异步处理.应用解耦.流量削锋

中间件 | mq消息队列解说

消息队列 1.1 什么是消息队列 我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用.消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰.降低系统耦合性.目前使用较多的消息队列有ActiveMQ,RabbitMQ,Kafka,RocketMQ. 1.2 为什么要用消息队列 使用消息队列主要有两点好处: 1.通过异步处理提高系统性能(削峰.减少响应所需时间; 2.降低系统耦合性.[结合你自己的项目来回答] 1.2.1 通过

常用消息队列对比

作为中间件,消息队列是分布式应用间交换信息的重要组件.消息队列可驻留在内存或磁盘上, 队列可以存储消息直到它们被应用程序读走.通过消息队列,应用程序可以在不知道彼此位置的情况下独立处理消息,或者在处理消息前不需要等待接收此消息.所以消息队列可以解决应用解耦.异步消息.流量削锋等问题,是实现高性能.高可用.可伸缩和最终一致性架构中不可以或缺的一环.下面对消息队列就直接使用MQ表示. 现在比较常见的MQ产品主要是ActiveMQ.RabbitMQ.ZeroMQ.Kafka.MetaMQ.Rocket

消息队列中间件的技术选型分析

[http://cloudate.net/?p=1165]2015/04/25  |  消息队列 |  罗伯特 消息队列中间件是互联网行业不可或缺的一项基本技术,在高并发消峰,非关键业务异步化,通知系统,监控数据推送等场景下是必不可少的,下文为转载文章,具体出处不详. 个人很喜欢ZeroMQ,非企业级的消息中间件,具有及低延迟-微秒级,使用简单灵活可嵌入等特性,性能报告请参考官网:http://zeromq.org/results:more-precise-0mq-tests 消息中间件是一种由

关于消息总线使用哪种消息队列中间件的调查

几种MQ产品说明: ZeroMQ :  扩展性好,开发比较灵活,采用C语言实现,实际上他只是一个socket库的重新封装,如果我们做为消息队列使用,需要开发大量的代码 RabbitMQ :结合erlang语言本身的并发优势,性能较好,但是不利于做二次开发和维护 ActiveMQ: 历史悠久的开源项目,已经在很多产品中得到应用,实现了JMS1.1规范,可以和spring-jms轻松融合,实现了多种协议,不够轻巧(源代码比RocketMQ多).,支持持久化到数据库,对队列数较多的情况支持不好,不过我

7月目标 socket , 一致性哈希算法 ; mongodb分片; 分布式消息队列; 中间件的使用场景

  分布式的基础:一致性哈希  路由算法的一致性hash http://www.jiacheo.org/blog/174 http://www.tuicool.com/articles/vQVbmai http://www.cnblogs.com/huangxincheng/p/3708316.html   redis 和 mongodb的使用,要能自己写 helper帮助类,和多台机器上的使用   socket http://www.cnblogs.com/JimmyZhang/archive

初试kafka消息队列中间件一 (只适合初学者哈)

初试kafka消息队列中间件一 今天闲来有点无聊,然后就看了一下关于消息中间件的资料, 简单一点的理解哈,网上都说的太高大上档次了,字面意思都想半天: 也就是用作消息通知,比如你想告诉某某你喜欢他,或者要开会了,通知给哪些人: 可以分不同的主题,不同的接受方式. 我这也是第一次动手哈,以前都只是看理论知识: 理论大家www.baidu.com一番都了解的七七八八了哈 ,我就直接上动手的过程了. 需要先进行下载: 这里是下载地址http://kafka.apache.org/downloads:

消息队列中间件(二)使用 ActiveMQ

ActiveMQ 介绍 Active MQ 是由 Apache 出品的一款流行的功能强大的开源消息中间件,它速度快,支持跨语言的客户端,具有易于使用的企业集成模式和许多的高级功能,同时完全支持 JSM1.1 和 J2EE1.4 . 官方下载地址: http://activemq.apache.org/download.html 官方安装教程: http://activemq.apache.org/getting-started.html 默认管理页面:http://127.0.0.1:8161/

【系统架构】读《大型网站架构系列:分布式消息队列》整理

文章地址 拓展阅读: RabbitMQ + PHP (一)入门与安装 RabbitMQ + PHP (二)AMQP拓展安装 RabbitMQ + PHP (三)案例演示 1. 一些词汇和技术 1)Zookeeper注册中心 Storm集群 2. 核心思想 1)[概述] 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题.实现高性能,高可用,可伸缩和最终一致性架构.是大型分布式系统不可缺少的中间件. 目前在生产环境,使用较多的消息队列有ActiveMQ,Rabbit