KAFKA CONSUMER
说明
摘自官方文档,自己按照大概意思翻译的
http://kafka.apache.org/documentation/#theconsumer
正文
“推数据”还是“拉数据”
推数据的话,推什么数据和推的频率都要由broker控制,最终我们要达到的目的其实是在最短的时间内消费最多的数据,当推数据的频率很大时,很容易压垮consumer,例如收到攻击的时候。
拉数据的话还可以更积极地处理更多的数据,如果是推数据的话,需要了解下游consumer的状态,同步这些状态信息会造成浪费。
拉数据的缺点如果broker都没有数据了,可是consumer还是需要频繁地去查看broker是否有数据。为了避免这个,可以用参数控制允许consumer请求的频率减小,知道有数据到了broker(或者到broker的数据达到一定量时才处理)
producer会本地存一份,broker再去拉取,就类似是一个“store-and-forward”的角色。当有成千上万个producer时,这种模式推展性就很好,运维起来也不会很难。
消费者的位置
大多数的消息系统都是给了消费者信息后,本地保存一份,然后等到消费者有通知了,更新信息的元数据。这样做很实用,broker一知道消费者的处理状态后马上删除,保持了信息队列的大小。当消息发送出去后&#x