kafka架构: 生产者,消费者,Broker(接收生产者消息,给消费者订阅,),ZooKeeper(不是kafka的一部分,只是要使用ZooKeeper)。 Broker和ZooKeeper作为后台服务,生产者,消费者作为sdk,可以通过生产者的sdk发送数据给Broker,通过消费者的sdk从Broker中拿数据。 生产者push数据推给Broker,消费者通过pull拉从Broker拿数据。为了防止消费者不能处理过多的数据,因此是消费者去取而不是Broker推过去。 生产者如何知道将一条消息发送给那个Broker,消费者如何感知有哪些Broker,从哪个Broker取数据。 生产者会如何获取整个kafka的元信息:在0.8以前生产者需要通过Zookeeper来获取整个Broker集群的信息,0.8以后在实例化一个生产者的时候可以指定多个Broker的url,比如集群有300个Broker,可以只指定3个Broker的IP和端口给消费者,生产者就可以通过这3个Broker获知整个集群的Broker信息列表,生产者会将这些元信息存在内存当中,如果有某个Broker挂了,生产者需要重新更新Broker的信息。 消费者如何获取整个kafka的元信息: