当前位置: 首页 > 工具软件 > koa-redis > 使用案例 >

redis与kafka初步比较

苏鸿波
2023-12-01

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

消息队列

优点

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

缺点

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

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复习精讲

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

 类似资料: