kafka分布式存储
Posted yangyang12138
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kafka分布式存储相关的知识,希望对你有一定的参考价值。
1.概述
之前提到过分布式存储,重点是要保持一致性,raft方案和paxos方案都是自己来完成这一切的,而kafka则主要依赖于zookeeper。
2.分布式存储的协调者
Controller,这个类的对象运行在一台机器上,首先通过zookeeper选出一台机器,
每一个broker都会在Controller path(/controller)上注册一个watch。当前controller失败时,对应的Controller path会自动消失(临时节点)。此时该watch被触发,所有活着的broker都会去竞选成为新的Controller(创建新的controller path),但是只有一个会竞选成功。竞选成功者成为新的leader。竞选失败则重新在新的Controller path上注册watch,因为zk的watch是一次性的,被触发一次之后即失效,所以需要重新注册。
Controller的管理方式
a、从zk中读取当前分区的所有ISR(in-sync-replicas)集合
b、调用配置的分区算法选择分区的leader
kafka选择分区算法:
1)、NoOpLeaderSelector–偏爱分区(SR中的第一个),并将leader发送给为此做出改变的broker,
2)、offlinePartitionLeader–也是选择偏爱分区作为leader
3)、reassignedPartitionLeader
4)、preferredReplicaPartitionLeader
5)、ControlledShutdownLeader
上面五中算法都使用偏爱分区作为leader,区别是选择leader之后所做的操作不同。
以上是关于kafka分布式存储的主要内容,如果未能解决你的问题,请参考以下文章