Kafka的消息存储

编程

Kafka消息存储

结构

Broker 服务 ->topic->partiotion ->segement -> index+log ->message

一般kafka+zookeeper做高可用,多个broker, 如果设置partation为2,则每个topic有两个分区(topic_0,topic_1),按照HASH分散到每个broker服务存储,每个partition分为多个segment【等分分割】,segement=【index(索引文件)+log(日志文件)】。

分区分为多个segment 便于磁盘的清理

根据offset定位消息

kafka对index索引文件进行二分法查找,找到对应的index+log,然后在指定的index中顺序查找找到具体的指向。

Kafka分布式分区存储

这是一个topic包含4个Partition,2 Replication(拷贝),也就是说全部的消息被放在了4个分区存储,为了高可用,将4个分区做了2份冗余,然后根据分配算法.将总共8份数据,分配到broker集群上.

结果就是每个broker上存储的数据比全量数据要少,但每份数据都有冗余,这样,一旦一台机器宕机,并不影响使用.比如图中的Broker1,宕机了.那么剩下的三台broker依然保留了全量的分区数据.所以还能使用,如果再宕机一台,那么数据不完整了.当然你可以设置更多的冗余,比如设置了冗余是4,那么每台机器就有了0123完整的数据,宕机几台都行.需要在存储占用和高可用之间做衡量

以上是 Kafka的消息存储 的全部内容, 来源链接: utcz.com/z/512760.html

回到顶部