数据缓存

redis&rabbitMq&kafka

1、消息订阅模式比较
  • Redis
    • redis是内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件,消息都存放在内存中,写入读取速度快,但是受内存容量的限制,容易造成内存充爆。
  • Kakfa
    • kafka是一个分布式的流式处理平台,它的设计初衷就是一个日志系统,消息内容是可以持久化一段时间的,消息的订阅消费位置的确定是通过消费者offset来定位的,也可以定位到之前消息再次消费。
  • Rabbitmq
    • rabbitmq的一个特殊之处是,生产者并不是直接将消息发送到队列中,而是通过exchange中继,exchange转发到队列。所以rabbitmq在消息的路由方面比之前两者都好很多。
2、队列机制比较
  • Redis
    • redis的消息数据就存放在内存中,因为redis数据的原子性,数据只能被消费一次,不能重复。
  • Kafka
    • kafka通过consumer group的方式实现了work queue。·同一个组的消费者能够协调完成任务。另外它是一个分布式的文件系统,他的队列可以理解为topic,我们都知道topic是可以划分为多个partition的,多个partiton是可以分布在不同的node节点上的。这样当一个consumer来消费的时候,就可以到不同的节点上去获取消息,也就达到了负载均衡的作用,避免单点压力。于此同时,就会产生另外的一个问题,当有消费者在进行消费的时候,如何保证这个队列同时不背其他的消费者消费,这就需要zookeeper的分布式锁来解决了。
  • Rabbitmq
    • rabbitmq也是有自己的一个机制来实现队列的负载均衡,通过轮询机制给worker发布消息,以此来实现。当有大量的消费者去消费同一个队列的时候,这个队列的性能就会成为一个瓶颈 
各自特点
  • Rabbitmq
    • 因为它的一个核心exchanger。它可以将消息路由到不同的队列去,比如我既要打印输出,还要持久化,那我就可以直接路由到两个queue中去。
    • 持久化
  • redis
    • redis的多种类型的数据结构,方便我们对队列的插队,删除,置顶的操作 
    • 是一个高性能的key-value数据库,它的出现很大程度补偿了memcached这类key-value存储的不足。虽然它是一个数据库系统,但本身支持MQ功能,完全可以当做一个轻量级的队列服务器使用。
  • Kafka
    • 以时间复杂度为O(1)的方式提供消息持久化能力
    • 高吞吐率
    • 支持Kafka Server间的消息分区,及分布式消费,同时保证消息顺序传输
    • 支持离线数据处理和实时数据处理
    • 支持在线水平扩展
可用性,
  • rabbitMQ支持miror的queue,主queue失效,miror queue接管。
  • kafka的broker支持主备模式。 
集群负载均衡方面,
  • Kafka
    • Kafka:天然的‘Leader-Slave’无状态集群,每台服务器既是Master也是Slave
    • kafka的集群依赖于zookeeper,zookeeper支持热扩展
  • rabbitmq
  • rabbitmq:支持简单集群,'复制'模式,对高级集群模式支持不好。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值