一个Topic中的所有数据分布式的存储在kafka集群的所有机器(broker)上,以分区(partition)的的形式进行数据存储;每个分区允许存在备份数据/备份分区(存储在同一kafka集群的其它broker上的分区)

每个数据分区在Kafka集群中存在一个broker节点上的分区叫做leader,存储在其它broker上的备份分区叫做followers;只有leader节点负责该分区的数据读写操作followers节点作为leader节点的热备节点,从leader节点备份数据;当leader节点挂掉的时候,followers节点中会有一个节点变成leader节点,重新提供服务

Kafka集群的Partitionleaderfollowers切换依赖Zookeeper

Kafka分布式保证的第一个特性就是:Kafka的Replication

Kafka的Replication指的是Partition的复制,一个Partition的所有分区中只有一个分区是leader节点,其它分区是follower节点。

Replication对Kafka的吞吐率有一定的影响,但是极大的增强了可用性

Follower节点会定时的从leader节点上获取增量数据,一个活跃的follower节点必须满足一下两个条件:

1. 所有的节点必须维护和zookeeper的连接(通过zk的heartbeat实现)

2. follower必须能够及时的将leader上的writing复制过来,不能“落后太多”; “落后太多”由参数{replica.lag.time.max.ms}和{replica.lag.max.messages}决定

Kafka分布式保证的第二个特性就是:Kafka Leader Election

Kafka提供了一个in-sync replicas(ISR)来确保Kafka的Leader选举,ISR是一个保存分区node的集合,如果一个node宕机了或数据“落后太多”,leader会将该node节点从ISR中移除,只有ISR中的follower节点才有可能成为leader节点

Leader节点的切换基于Zookeeper的Watcher机制,当leader节点宕机的时候,其他ISR中的follower节点会竞争的在zk中创建一个文件目录(只会有一个follower节点创建成功),创建成功的follower节点成为leader节点

[Kafka] - Kafka内核理解:分布式机制的更多相关文章

  1. Kafka内核中的分布式机制实现

    Kafka内核中的分布式机制实现 一个Topic中的所有数据分布式的存储在kafka集群的所有机器(broker)上,以分区(partition)的的形式进行数据存储:每个分区允许存在备份数据/备份分 ...

  2. Kafka与RocketMq文件存储机制对比

    一个商业化消息队列的性能好坏,其文件存储机制设计是衡量一个消息队列服务技术水平和最关键指标之一. 开头问题 kafka文件结构和rocketMQ文件结构是什么样子?特点是什么? 一.目录结构 Kafk ...

  3. Apche Kafka 的生与死 – failover 机制详解

    Kafka 作为 high throughput 的消息中间件,以其性能,简单和稳定性,成为当前实时流处理框架中的主流的基础组件. 当然在使用 Kafka 中也碰到不少问题,尤其是 failover ...

  4. Apche Kafka 的生与死 – failover 机制详解

    转自:http://www.cnblogs.com/fxjwind/p/4972244.html Kafka 作为 high throughput 的消息中间件,以其性能,简单和稳定性,成为当前实时流 ...

  5. 【大数据】关于Kafka的进一步理解

    前置: 文件host 192.168.11.13 192.168.11.14 192.168.11.30 脚本init_kafka.sh #!/bin/bash source /etc/profile ...

  6. [Big Data - Kafka] Kafka剖析(一):Kafka背景及架构介绍

    Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cloudera.Apache Storm.Spa ...

  7. (白话理解)CAS机制

    (白话理解)CAS机制 通过一段对话我们来了解cas用意 示例程序:启动两个线程,每个线程中让静态变量count循环累加100次. 最终输出的count结果是什么呢?一定会是200吗? 加了同步锁之后 ...

  8. Linux内核中锁机制之RCU、大内核锁

    在上篇博文中笔者分析了关于完成量和互斥量的使用以及一些经典的问题,下面笔者将在本篇博文中重点分析有关RCU机制的相关内容以及介绍目前已被淘汰出内核的大内核锁(BKL).文章的最后对<大话Linu ...

  9. Linux内核中锁机制之内存屏障、读写自旋锁及顺序锁

    在上一篇博文中笔者讨论了关于原子操作和自旋锁的相关内容,本篇博文将继续锁机制的讨论,包括内存屏障.读写自旋锁以及顺序锁的相关内容.下面首先讨论内存屏障的相关内容. 三.内存屏障 不知读者是是否记得在笔 ...

  10. Linux内核中锁机制之信号量、读写信号量

    在上一篇博文中笔者分析了关于内存屏障.读写自旋锁以及顺序锁的相关内容,本篇博文将着重讨论有关信号量.读写信号量的内容. 六.信号量 关于信号量的内容,实际上它是与自旋锁类似的概念,只有得到信号量的进程 ...

随机推荐

  1. JSTL 标签库

    1. JSTL 概述 JSTL 是 apache 对 EL 表达式的扩展, JSTL 是标签语言! 需要导入 jstl-1.2.jar 包 2. JSTL 标签库 core: 核心标签库; fmt: ...

  2. element-UI ,Table组件实现拖拽效果

    拖拽效果,先放效果图,步骤放在后面~~ 一.引入三方插件 1.引入sortable.js的包: npm install sortable.js --save 2.或者npm i -S vuedragg ...

  3. 修改impala表location

    两种方式: 一.通过修改表DDL: alter table t_m_cc set location 'hdfs://heracles/user/video-mvc/hive/warehouse/t_m ...

  4. recyclerView布局

    http://blog.csdn.net/lmj623565791/article/details/45059587

  5. 使用Kotlin开发Android应用(II):创建新工程

    在基本了解什么是Kotlin以及Kotlin可以做什么之后,接下来就到了配置Android Studio并使用Kotlin开发Android apps的时候了.首次配置Android Studio需要 ...

  6. 玩转pandas

    一.pandas概述 pandas :pannel data analysis(面板数据分析).pandas是基于numpy构建的,为时间序列分析提供了很好的支持.pandas中有两个主要的数据结构, ...

  7. SpringMVC:学习笔记(4)——处理模型数据

    SpringMVC—处理模型数据 说明 SpringMVC 提供了以下几种途径输出模型数据: – ModelAndView: 处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添 ...

  8. 04 Spring框架 依赖注入(一)

    整理了一下之前学习spring框架时候的一点笔记.如有错误欢迎指正,不喜勿喷. 上一节我们讲了几个bean的一些属性,用来限制我们实例创建过后的状态. 但是细心的我们会发现其实上面demo创建的实例并 ...

  9. Django 进阶篇之 CSRF,COOIKE,SESSION

    1.CSRF(Cross Site Request Forgery, 跨站域请求伪造) CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网 ...

  10. 值得关注的10个Python语言学习博客

    大家好,还记得我当时学习python的时候,我一直努力地寻找关于python的博客,但我发现它们的数量很少.这也是我建立这个博客的原因,向大家分享我自己学到的新知识.今天我向大家推荐10个值得我们关注 ...