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、