【ZooKeeper】
服务注册、服务发现、客户端负载均衡、Offset偏移量分布式存储。
kafka使用zookeeper来实现动态的集群扩展,不需要更改客户端(producer和consumer)的配置。
broker会在zookeeper注册并保持相关的元数据(topic,partition信息等)更新。
Broker和Consumer都在ZooKeeper中注册,ZooKeeper保存它们的元数据。
而客户端会在zookeeper上注册相关的watcher。一旦zookeeper发生变化,客户端能及时感知并作出相应调整。有Broker和Consumer发生变化时,其他Broker和Consumer都会得到通知。这样就保证了添加或去除broker时,各broker间仍能自动实现负载均衡。
kafka是显式分布式架构,producer、broker(Kafka)和consumer都可以有多个。Kafka的作用类似于缓存,即活跃的数据和离线处理系统之间的缓存。几个基本概念:
(1)message(消息)是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息。如果consumer订阅了这个主题,那么新发布的消息就会广播给这些consumer。
(2)Kafka是显式分布式的,多个producer、consumer和broker可以运行在一个大的集群上,作为一个逻辑整体对外提供服务。对于consumer,多个consumer可以组成一个group,这个message只能传输给某个group中的某一个consumer.