集群成员关系:

  Kafka使用zookeeper维护集群成员信息,每个broker拥有唯一标识符,这个标识符可以在配置文件里指定也可以自动生成,会注册到Zookeeper的/brokers/ids路径下

控制器:

  本质就是一个broker,但是还负责分区首领选举

  Kafka使用zookeeper的临时节点来选举控制器,并在节点加入集群或退出集群时通知控制器,控制器负责在节点加入或离开集群时进行分区首领的选举。控制器使用epoch来避免脑裂

复制:

  复制功能时Kafka架构核心

  Kafka使用主题来组织数据,每个主题分为若干分区,每个分区有多个副本,保存在broker上,每个broker可以保存成千上百属于不同主题和分区的副本

  副本有以下2个类型:

    首领副本: 每个分区都有一个首领副本,所有的生产者请求和消费者请求都会经过这个副本

    跟随者副本:首领以外的副本都是跟随者副本,跟随者副本唯一任务是从首领那里复制消息,保持与首领一致的状态

        只有持续请求得到消息的副本被称为同步的副本,首领失效时才有机会成为首领

           除了当前首领之外,每个分区还有一个首选首领-------创建主题时选定的首领就是分区的首选首领

        auto.leader.rebalance.enable=true   会检查首选首领是不是当前首领,如果不是,并且该副本是同步的,就会触发首领选举,让首选首领成为首领

        分区的副本清单里第一个副本一般就是首选首领

处理请求:

  broker大部分工作就是处理客户端/分区副本/控制器发送给分区首领的请求。Kafka提供了一个基于TCP的二进制协议,指定请求消息的格式以及broker如何对请求做出响应

  客户端发起连接并发送请求,broker处理请求并做出响应,broker按照请求到达顺序处理他们----这种顺序保证让Kafka具有消息队列的特性,同时保证保存的消息也是有序的

  broker会在监听的每一个端口上运行一个Acceptor线程,这个线程会创建一个连接,并交给Processor线程处理,processor线程也称为网络线程,负责从客户端获取请求消息,放进请求队列,然后从响应队列获取响应消息,发送给客户端

  

  

索引:

  索引把偏移量映射到片段文件和偏移量在文件里的位置

  索引若出现损坏,Kafka会自动重新生成索引

每个日志片段可以分为2个部分:

  干净的部分    未清理过,每个键只有一个对应的值

  污浊的部分   这些消息是上一次清理之后写入的

  log.clear.enabled=true  kafka启用清理功能

Kafka笔记5(内部工作原理)的更多相关文章

  1. 8. 理解ZooKeeper的内部工作原理

    到目前为止,我们已经讨论了ZooKeeper服务的基础知识,并详细了解了数据模型及其属性. 我们也熟悉了ZooKeeper 监视(watch)的概念,监视就是在ZooKeeper命名空间中的znode ...

  2. Apache Lucene评分机制的内部工作原理

    Apache Lucene评分机制的内部工作原理' 第5章

  3. 4000余字为你讲透Codis内部工作原理

    一.引言 Codis是一个分布式 Redis 解决方案,可以管理数量巨大的Redis节点.个推作为专业的第三方推送服务商,多年来专注于为开发者提供高效稳定的消息推送服务.每天通过个推平台下发的消息数量 ...

  4. 一篇笔记整理JVM工作原理

    首先要了解的 >>数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型. 基本类型的变量保存原始值,即:他代表的值就是数值本身:而引用类型的变量保存引用值.“引用值”代表了 ...

  5. 浏览器内部工作原理--作者:Tali Garsiel

    本篇内容为转载,主要用于个人学习使用,作者:Tali Garsiel 一.介绍 浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工作原理,我们将看到,从你在地址栏输入google.com到你看到 ...

  6. 详解HashMap的内部工作原理

    本文将用一个简单的例子来解释下HashMap内部的工作原理.首先我们从一个例子开始,而不仅仅是从理论上,这样,有助于更好地理解,然后,我们来看下get和put到底是怎样工作的. 我们来看个非常简单的例 ...

  7. Android学习笔记View的工作原理

    自定义View,也可以称为自定义控件,通过自定义View可以使得控件实现各种定制的效果. 实现自定义View,需要掌握View的底层工作原理,比如View的测量过程.布局流程以及绘制流程,除此之外,还 ...

  8. javascript总结20: 前端必读,浏览器内部工作原理(转)

    目录 一.介绍 二.渲染引擎 三.解析与DOM树构建 四.渲染树构建 五.布局 六.绘制 七.动态变化 八.渲染引擎的线程 九.CSS2可视模型 英文原文:How Browsers Work: Beh ...

  9. Docker(二):理解容器编排工具Kubernetes内部工作原理

    一.Kubernetes是什么 要说到Docker就不得不说说Kubernetes.当Docker容器在微服务的环境下数量一多,那么统一的,自动化的管理自然少不了.而Kubernetes就是一个这样的 ...

随机推荐

  1. 4337: BJOI2015 树的同构

    题解: 树的同构的判定 有根树从根开始进行树hash 先把儿子的f进行排序 $f[i]=\sum_{j=1}^{k} { f[j]*prime[j]} +num[i]$(我没有仔细想这样是不是树是唯一 ...

  2. 模拟select,隐藏下拉列表的几种实现

    前言 平时开发过程中,出于各种原因模拟原生slect的要求并不算少见. 在实现的过程中,点击其他区域隐藏下拉列表,又是一个必备的功能, 最近在一次开发的过程中引发了点思考,做下总结. 现象 实际中的实 ...

  3. [MNIST数据集]输入图像的预处理

    因为MNIST数据是28*28的黑底白字图像,而且输入时要将其拉直,也就是可以看成1*784的二维张量(张量的值在0~1之间),所以我们要对图片进行预处理操作,是图片能被网络识别. 以下是代码部分 i ...

  4. 【Linux】使用Nginx发布dotnet的网站

    1.安装Nginx[自行百度] 2.安装dotnet运行时[自行百度] 3.配置Nginx——  /etc/nginx/conf.d/default.conf server { listen ; se ...

  5. c#堆与栈

    一.在讲堆栈之前,我们先看看值类型和引用类型: 1,我们看看值类型与引用类型的存储方式: 引用类型:引用类型存储在堆中.类型实例化的时候,会在堆中开辟一部分空间存储类的实例.类对象的引用还是存储在栈中 ...

  6. Material Design 常用控件

    Material Design Material Design (原质化/材料化设计) 是在2014年Google I/O大会上推出的一套全新的界面设计语言. 意在解决Android平台界面风格不统一 ...

  7. yii2 部分很实用的代码

    检查执行的sql $query->createCommand()->getRawSql()     写日志 // 记录日志 \Yii::error('生成失败.' . $index, $t ...

  8. Hibernate 映射一对一关联关系

    基于外键的方式: 附上代码: public class Manager { private Integer mgrId; private String mgrName; private Departm ...

  9. Nested Dolls 贪心 + dp

    G: Nested Dolls Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 99     Solved: 19 Descript ...

  10. snmp简单测试

    一.环境搭建 搜索windows Server2003安装配置snmp 服务,按照提示来就行 二.利用 1.找出Coummunity Strings 利用于 auxiliary/scanner/snm ...