Apache Kafka集群架构
上图即是Kafka集群架构概览图,以下将介绍图中的术语:
Broker:为了维持负载均衡,Kafka集群一般是由多个broker组成。Kafka broker是无状态的,所以他们使用zookeeper维系集群的状态。一个broker单位时间(1秒)内可以处理成百上千的读写操作,并且可以hold住TB级的数据量。brokers的leader选举由zookeeper消化。
Zookeeper:zookeeper在kafka集群中用来管理和协调多个broker的运作。zookeeper服务主要负责通知producer和consumer当前所有broker的状态(以及某个broker挂掉了这种情况)。一旦有某个broker挂掉了,zookeeper将会通知与此有关系的producer和consumer,将发布、拉取消息等任务分配到其余正常的broker。
Producer:producer负责发布消息给broker。当一个新的broker被启动,所有producer将自动发送一条消息到该broker。producer不需要等待broker回复确认信息即可发送消息到该broker。
Consumer:由于broker是无状态的,这意味着consumer必须通过partition的offset知道自己已经消化了多少消息。如果consumer确认了message的offset,意味着其已经消化了offset前面的message。consumer会通过异步拉取的形式从broker获取未消化的信息。consumer只需提供一个offset,就可以回退或跳过partition里的任何一个point。consumer的offset由zookeeper通知。