kafka学习笔记2

1、kafka分布式的情况下如何保证消息的顺序性

kafka并不适用对数据时序性要求严格的场景

Kafka的做法是提供消息队列,让生产者单往队列的末尾添加数据,让多个消费者从队列里面依次读取数据然后自行处理

【生产】kafka的分布式单位是partition。同一个partition内的数据可以保证时序。不同partition之间无法保证消息的顺序性。可以设置producer生产message的key值,同一个key会追加到同一个partition上,故可保证同一个producer的消息的时序性

2、一个consumer group可以消费多个topic。一个topic可以被多个consumer group消费。

一个message只能被同一个consumer group中的consumer消费一次。

消费最优是consumer group中的partition数量和consumer group中的数量相同。

3、high level api和offset是由zookeeper维护。low level api和offset是由consumer自己维护

4、kafka的消费理念是at last once。新启动的consumer group默认从partition的头位置开始读取数据。kafka consumer默认是处理完message再commit。

5、consumer blance的触发条件是:(1)consumer的增加和删除 (2)broker的增加或减少

6、kafka produce无需保存offset状态,offset保证自增就ok了。produce message时无需制定partition,kafka会把收到的message进行load balance,按照hash(message key)%partition数量的方式,将message均匀的分布在topic所有的partition

7、 Partition Replica中存在一个leader和若干follower。produce会把数据发送到leader,leader再将数据发送到各个follower

8、producer在将message发送到某个partition时,首先通过zookeeper找到该partition的leader,向leader发送消息。每个follower都从leader pull消息,follower在收到消息之后马上发送ack给leader。leader一旦收到isr中所有replica的ack后,该消息就被认为commited了,leader将会向producer发送ack确认

9、如果某个broker宕机或者落后太多,则会被移除isr。isr这种机制并非完全的同步机制(移除isr的broker则不会继续同步),也并非单纯的异步复制(如果leader和follower数据差距巨大,切换leader时会造成数据丢失)

10、producer可设置是否等待leader的确认ack

你可能感兴趣的:(kafka,大数据)