Redis与RabbitMQ作为消息队列的比较
2018-03-06 14:04
549 查看
本文仅针对RabbitMQ与Redis做队列应用时的情况进行对比
具体采用什么方式实现,还需要取决于系统的实际需求
RabbitMQ:具有消息消费确认,即使消费者消费失败,也会自动使消息体返回原队列,同时可全程持久化,保证消息体被正确消费
RabbitMQ:具有发布确认功能,保证消息被发布到服务器
RabbitMQ:集群采用磁盘、内存节点,任意单点故障都不会影响整个队列的操作
RabbitMQ:队列,消息,都可以选择是否持久化
RabbitMQ:根据消费者情况,进行消息的均衡分发
RabbitMQ:后台可以监控某个队列的所有信息,(内存,磁盘,消费者,生产者,速率等)
RabbitMQ:服务器过载的情况,对生产者速率会进行限制,保证服务可靠性
测试数据分为128Bytes、512Bytes、1K和10K四个不同大小的数据。
注:此数据来源于互联网,部分数据有误,已修正
即时数据分析、秒杀计数器、缓存等RabbitMQ:重量级,高并发,异步
批量数据异步处理、并行任务串行化,高负载任务的负载均衡等
来源:http://blog.csdn.net/jordandandan/article/details/68946839
具体采用什么方式实现,还需要取决于系统的实际需求
简要介绍
RabbitMQ
RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。Redis
是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用。具体对比
可靠消费
Redis:没有相应的机制保证消息的消费,当消费者消费失败的时候,消息体丢失,需要手动处理RabbitMQ:具有消息消费确认,即使消费者消费失败,也会自动使消息体返回原队列,同时可全程持久化,保证消息体被正确消费
可靠发布
Reids:不提供,需自行实现RabbitMQ:具有发布确认功能,保证消息被发布到服务器
高可用
Redis:采用主从模式,读写分离,但是故障转移还没有非常完善的官方解决方案RabbitMQ:集群采用磁盘、内存节点,任意单点故障都不会影响整个队列的操作
持久化
Redis:将整个Redis实例持久化到磁盘RabbitMQ:队列,消息,都可以选择是否持久化
消费者负载均衡
Redis:不提供,需自行实现RabbitMQ:根据消费者情况,进行消息的均衡分发
队列监控
Redis:不提供,需自行实现RabbitMQ:后台可以监控某个队列的所有信息,(内存,磁盘,消费者,生产者,速率等)
流量控制
Redis:不提供,需自行实现RabbitMQ:服务器过载的情况,对生产者速率会进行限制,保证服务可靠性
出入队性能
对于RabbitMQ和Redis的入队和出队操作,各执行100万次,每10万次记录一次执行时间。测试数据分为128Bytes、512Bytes、1K和10K四个不同大小的数据。
注:此数据来源于互联网,部分数据有误,已修正
应用场景分析
Redis:轻量级,高并发,延迟敏感即时数据分析、秒杀计数器、缓存等RabbitMQ:重量级,高并发,异步
批量数据异步处理、并行任务串行化,高负载任务的负载均衡等
参考文章:
1、Redis应用场景2、RabbitMQ工作队列实现高性能任务的负载分发3、redis持久化4、【消息队列MQ】各类MQ比较来源:http://blog.csdn.net/jordandandan/article/details/68946839
相关文章推荐
- Redis作为消息队列与RabbitMQ的比较
- Redis与RabbitMQ作为消息队列的比较
- Redis作为消息队列与RabbitMQ的性能对比
- [转]Redis作为消息队列与RabbitMQ的性能对比
- [转]Redis作为消息队列与RabbitMQ的性能对比
- Redis作为消息队列与RabbitMQ的性能对比
- 使用redis list作为消息队列
- 使用 Kafka 和 Redis 作为消息队列的差异
- php使用redis作为消息队列
- NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例
- redis作为消息队列的使用
- NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例
- 【中间件】消息队列(一):RabbitMQ、ActiveMQ、Kafka和Redis
- Kafka,Mq,Redis作为消息队列使用时的差异?
- RabbitMQ与Redis做队列比较
- Redis作为消息队列服务场景应用案例
- NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例
- 【转】NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例
- ELK之消息队列选择redis_kafka_rabbitmq
- NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例