1.kafka架构
kafka一般包含多个生产者(producer),多个Broker(kafka支持水平扩展,一般Broker越多,吞吐量越高),多个消费者(Consumer),以及一个zookeeper集群,kafka通过zookeeper来管理集群配置,选举机制以及消费者发生变化时进行Rebalance。
生产者使用push模式将消息发布到Broker,消费者使用pull模式从Broker订阅消息。
push模式很难适应消费速率不同的消费者,如果push的速度太快,容易造成消费者拒绝服务或网络拥塞;如果push的速度太慢,容易造成消费者性能浪费。但是采用pull的方式也有一个缺点,就是当Broker没有消息时,消费者会陷入不断地轮询中,为了避免这点,kafka有个参数可以让消费者阻塞知道是否有新消息到达。
2.kafka与传统消息系统之间的三大关键区别
(1)kafka持久化日志,这些日志可以被重复读取和无限期保留
(2)分布式系统:可灵活伸缩,在内部通过复制数据提高容错能力和高可用性
(3)支持实时流式处理(不明白)
3.kafka的消费者如何消费数据
消费者每次消费数据时,消费者都会记录消费的物理偏移量(offset),等下次消费时,会接着上次位置继续消费。