kafka 是一个分布式消息队列。具有高性能、持久化、多副本备份、横向扩展能
力。生产者往队列里写消息,消费者从队列里取消息进行业务逻辑。一般在架构
设计中起到解耦、削峰、异步处理的作用。
kafka 对外使用 topic 的概念,生产者往 topic 里写消息,消费者从读消息。为
了做到水平扩展,一个 topic 实际是由多个 partition 组成的,遇到瓶颈时,可
以通过增加 partition 的数量来进行横向扩容。单个 parition 内是保证消息有序。
每新写一条消息,kafka 就是在对应的文件 append 写,所以性能非常高。
kafka 的总体数据流
编辑
大概用法就是,Producers 往 Brokers 里面的指定 Topic 中写消息,Consumers
从 Brokers 里面拉去指定 Topic 的消息,然后进行业务处理。图中有两个 topic,
topic 0 有两个 partition,topic 1 有一个 partition,三副本备份。可以看到 consumer
gourp 1 中的 consumer 2 没有分到 partition 处理,这是有可能出现的,下面会
讲到。
关于 broker、topics、partitions 的一些元信息用 zk 来存,监控和路由啥的也都
会用到 zk。