生产者部分
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服务器端集群技术相结合?