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分布式存储的主要内容,如果未能解决你的问题,请参考以下文章

Kafka消息生成,消费,存储机制

Kafka深入理解-1:Kafka高效的文件存储设计

Kafka文件存储机制详解

转 Kafka文件存储机制那些事

go实现高并发高可用分布式系统:设计类似kafka的高并发海量数据存储机制2

Kafka零拷贝