集群成员关系:

  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. 多台CentOS服务器下实现SSH免密码登录

    ROOT用户下实现SSH免密码登录 第一步:进入目录/root/.ssh $ cd  /root/.ssh/ 执行以下命令,会在当前目录下生成公钥(id_rsa.pub)/私钥(id_rsa)对 第二 ...

  2. python 爬虫与数据可视化--数据提取与存储

    一.爬虫的定义.爬虫的分类(通用爬虫.聚焦爬虫).爬虫应用场景.爬虫工作原理(最后会发一个完整爬虫代码) 二.http.https的介绍.url的形式.请求方法.响应状态码 url的形式: 请求头: ...

  3. Node.js_文件系统 FS

    文件系统 FS——File System 所谓的文件系统,就是对计算机中的文件进行增.删.查.改等操作 是一个服务器的基础 node 通过核心 FS 模块来操作文件系统 简单写 // 1. 导入 fs ...

  4. Java读取文本文件中文乱码问题

    最近遇到一个问题,Java读取文本文件(例如csv文件.txt文件等),遇到中文就变成乱码.读取代码如下: List<String> lines=new ArrayList<Stri ...

  5. 解析数学表达式 代码解析AST语法树

    2019年2月20日09:18:22 AST语法树自己写代码解析的话就比较麻烦,有现成的库可以解析PHP,就像webpack就是自己解析js的语法代码,编译成各种版本的可用代码 github http ...

  6. table表格设置边框线为单实线

    设置table表格边框为单实线的方法有两种 第一种方法就是利用table标签cellspacing=0属性来实现,cellspacing是内边框和外边框的距离,这种方法实现的看起来是单实线,其实是内边 ...

  7. css动画-animation各个属性详解(转)

    CSS3的animation很容易就能实现各种酷炫的动画,虽然看到别人的成果图会觉得很难,但是如果掌握好各种动画属性,做好酷炫吊炸天的动画都不在话下,好,切入正题. 一.动画属性: 动画属性包括:①a ...

  8. mysql技巧

    SELECT id,is_deleted,position,1/position as p,status FROM application.view_entry order by p desc;.// ...

  9. ARE 212 - Problem Set 5

    ARE 212 - Problem Set 5Due May 1stPart I: Theory (Optional)1. Show that the parameter estimates for ...

  10. scrapy_redis实现爬虫

    1.scrapy_redis的流程 在scrapy_redis中,所有的带抓取的对象和去重的指纹都存在所有的服务器公用的redis中 所有的服务器公用一个redis中的request对象 所有的req ...