• RabbitMQ与Redis队列对比【concept】


    RabbitMQ

    RabbitMQ是AMQP(高级消息队列协议)的消息中间件一种,用于在分布式系统中存储转发消息,在易用性,扩展性,高可用性等方面有很大的优势,主要是为了实现系统之间的双向解耦而实现的。

    当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。

    Redis队列

    redis队列是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用

    区别

    1) 可靠消费

    Redis:没有相应的机制保证消息的消费,当消费者消费失败的时候,消息体丢失,需要手动处理。

    RabbitMQ: 具有消息消费确认,即使消费者消费者失败,也会自动使消息体返回原队列,同时可全程持久化,保证消息体被正确消费

    2) 高可用

    Redis:采用主从模式,读写分离,但是故障转移还没有非常完善的官方解决方案

    RabbitMQ:集群采用磁盘、内存节点,任意单点故障都不会影响整个队列的操作

    3) 持久化

    Redis:将整个Redis实例持久化到磁盘

    RabbitMQ:队列,消息,都可以选择是否持久化

    4) 消费者负载均衡

    Redis:不提供,需自行实现

    RabbitMQ:根据消费者情况,进行消息的均衡分发

    5) 可靠发布

    Reids:不提供,需自行实现

    RabbitMQ:具有发布确认功能,保证消息被发布到服务器

    6) 队列监控

    Redis:不提供,需自行实现

    RabbitMQ:后台可以监控某个队列的所有信息,(内存,磁盘,消费者,生产者,速率等)

    应用场景分析

    Redis:轻量级,高并发,延迟敏感

    即时数据分析、秒杀计数器、缓存等

    RabbitMQ:重量级,高并发,异步

    批量数据异步处理、并行任务串行化,高负载任务的负载均衡等

  • 相关阅读:
    SQL学习(六)select into:复制表信息
    SQL学习(五)多表关联-join
    SQL学习(四)Where语句中的各种匹配方式
    SQL学习(三)Select语句:返回前多少行数据
    SQL学习(二)SQL基础的增删改查
    SQL学习(一)相关基础知识
    Python学习笔记:Unittest框架了解
    Python学习笔记:读取Excel的xlrd模块
    Python语言上机题实现方法(持续更新...)
    beego的安装以及bee的安装和使用
  • 原文地址:https://www.cnblogs.com/xinzaiyuan/p/12195844.html
Copyright © 2020-2023  润新知