Kafka笔记5(内部工作原理)
集群成员关系:
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(内部工作原理)的更多相关文章
- 8. 理解ZooKeeper的内部工作原理
到目前为止,我们已经讨论了ZooKeeper服务的基础知识,并详细了解了数据模型及其属性. 我们也熟悉了ZooKeeper 监视(watch)的概念,监视就是在ZooKeeper命名空间中的znode ...
- Apache Lucene评分机制的内部工作原理
Apache Lucene评分机制的内部工作原理' 第5章
- 4000余字为你讲透Codis内部工作原理
一.引言 Codis是一个分布式 Redis 解决方案,可以管理数量巨大的Redis节点.个推作为专业的第三方推送服务商,多年来专注于为开发者提供高效稳定的消息推送服务.每天通过个推平台下发的消息数量 ...
- 一篇笔记整理JVM工作原理
首先要了解的 >>数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型. 基本类型的变量保存原始值,即:他代表的值就是数值本身:而引用类型的变量保存引用值.“引用值”代表了 ...
- 浏览器内部工作原理--作者:Tali Garsiel
本篇内容为转载,主要用于个人学习使用,作者:Tali Garsiel 一.介绍 浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工作原理,我们将看到,从你在地址栏输入google.com到你看到 ...
- 详解HashMap的内部工作原理
本文将用一个简单的例子来解释下HashMap内部的工作原理.首先我们从一个例子开始,而不仅仅是从理论上,这样,有助于更好地理解,然后,我们来看下get和put到底是怎样工作的. 我们来看个非常简单的例 ...
- Android学习笔记View的工作原理
自定义View,也可以称为自定义控件,通过自定义View可以使得控件实现各种定制的效果. 实现自定义View,需要掌握View的底层工作原理,比如View的测量过程.布局流程以及绘制流程,除此之外,还 ...
- javascript总结20: 前端必读,浏览器内部工作原理(转)
目录 一.介绍 二.渲染引擎 三.解析与DOM树构建 四.渲染树构建 五.布局 六.绘制 七.动态变化 八.渲染引擎的线程 九.CSS2可视模型 英文原文:How Browsers Work: Beh ...
- Docker(二):理解容器编排工具Kubernetes内部工作原理
一.Kubernetes是什么 要说到Docker就不得不说说Kubernetes.当Docker容器在微服务的环境下数量一多,那么统一的,自动化的管理自然少不了.而Kubernetes就是一个这样的 ...
随机推荐
- asp+SqlServer2008开发【第三集:win2winSSH远程连接—像连接Linux一样操作】
1,参考:https://blog.csdn.net/flyingshuai/article/details/72897692 和https://blog.csdn.net/nijiayy/artic ...
- Intervals 差分约束
题意:给定n个区间[Li,Ri]以及n个整数vi. 现在要有一个集合,使得这个集合和任意[Li,Ri]都有 至少 vi个元素相同. 问这个集合最少要几个元素. 定义S(x) 表示[1,x]中选择的元素 ...
- ListView 上拉加载更多
ListView 上拉加载更多 首先来个效果图 界面布局 <?xml version="1.0" encoding="utf-8"?> <Re ...
- 面试题总结(PS:只是我遇到的那些面试题,并不是经典面试题)
一.类和结构的区别,分别有什么应用.(参考:https://blog.csdn.net/yikeshu19900128/article/details/40400479) 1)类是引用类型,数据存放在 ...
- Urozero Autumn 2016. NCPC 2016
A. Artwork 倒过来并查集维护即可. #include<cstdio> #include<algorithm> using namespace std; const i ...
- 13、vue.js简单入门
本篇导航: 介绍与安装 vue常用指令 一.介绍与安装 vue是一套构建用户界面的JAVASCRIPT框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层, ...
- ECMA Script 6_RegExp 正则表达式
在 ES5 中 RegExp 构造函数的参数有两种情况 RegExp(字符串, 正则表达式的修饰符) RegExp(正则表达式); var regex = new RegExp('xyz', 'i') ...
- [LeetCode] Short Encoding of Words 单词集的短编码
Given a list of words, we may encode it by writing a reference string S and a list of indexes A. For ...
- servlet数据库验证登录
servlet数据库验证登录 一.将数据库连接和验证封装为一个单独的类 import java.sql.*; public class SQLtest { // JDBC 驱动名及数据库 URL st ...
- C语言企业级的需要学习的知识
建立正确程序运行内存的布局图(印象图) 内存四区模型图: 函数调用模型图: 数据类型的本质:固定大小内存块的别名 对于数组变量b[10]; b+1,与&b+1结果不一样: b代表的是数组首元素 ...