redis与kafka初步比较

本文对比了Redis和Kafka在消息队列中的应用。Redis提供数据持久化,而Kafka作为分布式系统,具备高可用性和可靠传输特性。消息队列能够实现系统解耦、异步处理和消峰,但也可能带来系统复杂性和可用性降低的问题。Kafka通过Zookeeper管理集群,确保消息传输的可靠性,而Redis利用RDB和AOF进行数据备份。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两个都可以做消息队列,消息队列可以做什么?

消息队列

优点

解耦 ,将消息写到消息队列中,需要的系统来订阅
异步,加快速度
消峰,防止同时间大并发请求数据库,造成数据库连接异常,而通过消息队列的话,消费者可以根据数据库处理能力的并发量来拉去消息

缺点

系统可用性降低;系统复杂性增加

kafka可用性

kafka是分布式系统,通过zookeeper管理集群配置,选举leader,在consumer group发生变化时reblance,生产者使用push推送消息到broker,消费者使用pull(offset)消费信息

kafka传输可靠

三个方面:

producer发布消息到某个topic的partition时,先通过zk找到这个partition的leader,将消息发布给leader,leader写入本地的log,这个leader的follower从leader处拉取数据

  1. 生产者弄丢数据:kafka在follower同步完成之后,才认为消息发送成功(设置acks=all,retries=MAX,producer端的设置)
  2. 消息队列弄丢数据:要求每个partition必须有副本,设置replication.factor大于1,min.insync.replicas大于1,一个leader必须感知到至少有一个follower和自己有联系
  3. 消费者弄丢数据:一条数据一个offset,消费几条就请求第几个offset,改成手动提交

redis

redis是一个内存数据库:纯内存操作,单线程,非阻塞I/O多路复用机制(单个线程追踪每个I/O流的状态来管理)

数据持久化

RDB: 间隔数据将内存中的数据集快照写入磁盘

AOF: 把每一个数据变化以文本的方式记录:每秒同步,每修改同步,不同步

参考:
【原创】分布式之redis复习精讲

【原创】分布式之消息队列复习精讲

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值