生产者部分

ISR?

leader维护的动态健康follower集合(我简称他们为太子)

leader发生故障之后从ISR中选举新的leader

HW、LEO?

HW高水位:consumer可见的数据

LEO每个副本最后的offset值:leader发生故障之后,会将offset同步到HW,高于部分数据截掉(只能够保证数据的一致性,并不保证数据的丢失和重复问题)

Exactly Once?

At Least Once语义,ack=-1(enable.idompotence=true,<PID,Partition,SeqNumber>)

At Most Once语义,ack=0

At Least Once + 幂等性 = Exactly Once(0.11版本),无法做到跨会话一致性

事务?

生产者:TransactionID,客户端生成保证幂等一致性,跨分区,跨会话

消费者部分

roundRobin、Range?

轮训/范围(默认)

 

发布订阅模式的优缺点?

优点:consumer的速率由消费者来进行控制

缺点:当队列没有数据时,consumer还需要进行空轮训

 

Kafka的性能和数据大小无关?

读取就是根据文件的位置查找的

写入是写入到硬盘的

 

日志中的 partition(分区)是怎么保证无限扩展的?

通过zookeeper做的HA

 

每个分区都有一台 server 作为 “leader”,零台或者多台server作为 follwers ?

 

消费者实例在不同的消费组中,每条消息记录会广播到所有的消费者进程?

 

维护消费组中的消费关系由Kafka协议动态处理?

group+topic+partion

 

即使写入失败Kafka也会确保继续写入Kafka使用磁盘结构?

顺序写磁盘,减少了寻址时间

 

关于Kafka提交日志存储和备份设计的更多细节?

 

Stream API 允许应用做一些复杂的处理,比如将流数据聚合或者join?

这一功能有助于解决以下这种应用程序所面临的问题:处理无序数据,当消费端代码变更后重新处理输入,执行有状态计算等。

 

Kafka Streams把客户端能够轻便地编写部署标准Java和Scala应用程序的优势与Kafka服务器端集群技术相结合?