这两个都可以做消息队列,消息队列可以做什么?
解耦 ,将消息写到消息队列中,需要的系统来订阅
异步,加快速度
消峰,防止同时间大并发请求数据库,造成数据库连接异常,而通过消息队列的话,消费者可以根据数据库处理能力的并发量来拉去消息
系统可用性降低;系统复杂性增加
kafka是分布式系统,通过zookeeper管理集群配置,选举leader,在consumer group发生变化时reblance,生产者使用push推送消息到broker,消费者使用pull(offset)消费信息
三个方面:
producer发布消息到某个topic的partition时,先通过zk找到这个partition的leader,将消息发布给leader,leader写入本地的log,这个leader的follower从leader处拉取数据
redis是一个内存数据库:纯内存操作,单线程,非阻塞I/O多路复用机制(单个线程追踪每个I/O流的状态来管理)
RDB: 间隔数据将内存中的数据集快照写入磁盘
AOF: 把每一个数据变化以文本的方式记录:每秒同步,每修改同步,不同步
参考:
【原创】分布式之redis复习精讲