Kafka介绍及RabbitMQ比较

01 Mar 2020

服务架构

装逼之问, Kafka性能为什么如此优秀?

概念

写入

消费

消费组offset管理

消费延迟计算:

Thoughts: 数据读写接口设计

面向单条消息设计接口, 内部实现通过批量提交优化性能

type Worker interface {
    func Handle(...) error
    func Flush() error
}

Kafka vs RabbitMQ

Kafka基于磁盘日志的消息代理, pull模式消费数据; RabbitMQ主要基于内存, push模式消费.

生产者/消费者分离, 写入者不用管消费者. 慢消费者不会严重影响Kafka自身服务稳定性. 可随时重放历史数据.

Kafka按消息顺序处理, RabbitMQ单个消息处理确认:

恰好一次处理 vs 至少处理一次语义.

Kafka可以利用日志压缩功能做数据去重, 当作数据存储, 对于数据堆积且只需要处理最近一次消息的场景有用.

RabbitMQ (AMQP协议) - 本质是异步的RPC.

Reference

HOME