1.kafka 主要有哪些角色
每一个kafka节点称为一个broker,多个broker节点组成kafka集群。每个broker 上可以存储多个topic的分区partition,
每个分区可以有n备份,其中n可以扩展。
kafka的消费者consumer,多个consumer可以组成一个consumer grop。但是一条消息只会被同一个consumer group的一个consumer消费一次,可以被不同的consumer group 重复消费。
在kafka集群中,有三种类似leader的角色:
broker 的leader 其选举有zk 控制,选举出来的东西称为controllerpartition 的learder 其选举由controller 根据zk 中的ISR 进行选举(leader 负载 partition的读写)coordinator ,其选举方式,默认由保存offset的broker 担任,宕机后,可由任一broker 进行选举(coordinator 负责 消费者消费partition的负载均衡)
2.kafka的容灾备份
kafka的容灾备份是以topic为单位的,每一个topic 可以有n个分区,每个区分可以有m个备份,这些备份分布在各个broker中。
生产者再插入队列的时候,可以指定策略来保证该消息是否要同步到各个备份才算成功。
当某个partition leader 挂了时候,这时候会在ISR中重新选择一个leader,保证可用性。
当某个kafka 因异常宕机重启的时候,它上面的数据会重新同步一份。如果采用的是kafka的优雅停机,则可以进行增量的更新。
3.kafka的存储机制
4.kafka的消费机制
一个消费者可以同时消费多个分区,但是一个分区只能被一个消费者消费。消费者在消费的时候,可以自动设置提交(poll 的时候就会自动提交),也可以主动进行异步或者同步的提交。消费者可以指定消费的分区及offerset,这种情况下则不受负载均衡的控制。消费者的提交,其实是提交到了一个特定的topic。由该topic记录某一分区消费的offetset具体情况。