kafka session.timeout.ms 是指消费一条数据的时间?_干货 | Kafka 内核知识梳理,附思维导图...
前面我们已经分享过几篇Kafka的文章,最近简单梳理了下Kafka内核相关的知识,涵盖了Kafka架构总结,副本机制,控制器,高水位机制,日志或消息存储,消息发送与消费机制等方面知识。文末含对应的Kafka内核思维导图,供参考。
1、 架构总结
1)Kafka实际上也是一个主从架构,有一个Controller角色即控制器,协调管理整个集群;
2)有几个Kafka术语肯定是不陌生的:broker,topic,partition,segment,生产者producer,消费者consumer;
2、消息发送机制
1)序列化器:序列化消息对象转成字节数组,然后通过网络传输。2)分区器:计算消息发往的具体分区;如果显示指定了partition,便不会走分区器。
3)消息缓冲池:客户端的消息缓冲池,默认大小32M,见参数buffer.memory。
4)批量发送:缓冲池中消息会按batch分批次发送,默认批次大小16KB,见参数batch.size。
3、副本机制
1)分区副本默认1,见参数default.replication.factor。
2)副本作用(并不提供读写分离)
- 实现冗余,提高消息可靠性;
- 实现高可用,参与leader选举,在leader不可用时提高可用性。
3)leader副本选举
- 由控制器负责;
- 选举机制或策略:首先要弄明白AR,ISR的概念,基本策略是从AR中找第一个存活的副本,且该副本在ISR中。
4)Unclean leader选举
参数unclean.leader.election.enable,用于控制是否允许非同步副本参与leader 选举,默认false。如果开启,则当ISR为空时就会从这些副本中选举新的leader,这个过程就称为Unclean leader选举。
4、控制器概述
1)作用:协调与管理整个集群,5个主要职责:
- 主题增删改
- 分区重分配
- leader选举
- 元数据管理
- broker成员管理,宕机或加入
2)控制器选举:基于zookeeper实现,利用了zookeeper的znode模型与监听机制。
3)控制器故障转移
- 存在单点故障,但是每个broker节点都可以成为controller;
- 故障转移即failover也是基于zookeeper实现的,znode模型与监听机制,/controller节点。
5、高水位机制
1)概念
HW即高水位,是Kafka副本对象的重要属性,分区的高水位由leader副本的高水位表示,含义是被follower副本同步之后的位置。
2)作用
- 定义消息可见性,只有分区高水位以下的消息才能被消费;
- 帮助kafka完成副本同步,kafka是基于高水位实现的异步的副本同步机制。
3)LEO的概念
含义是日志末端位移(Log End Offset),下一条消息写入的位移。
6、消息消费机制
1)拉取机制
Kafka生产端是推的机制即Push,消费端是拉的机制即Pull。
2)Pull的优缺点
- 优点是消费端可以自己控制消息的读取速度和数量;
- 缺点是不知道服务端有没有数据,所以要一直pull或隔一定时间pull,可能要pull多次并等待。
3)消息投递语义:
Kafka默认保证at-least-once delivery,容许用户实现at-most-once语义,exactly-once的实现取决于目的存储系统。
4)分区分配策略
- RangeAssignor:按照分区范围分配,当前默认策略;
- RoundRobinAssignor:轮询的方式分配;
- StickyAssignor:Kafka 0.11版本引入,根据更多指标比如负载,尽可能均匀。
7、日志存储机制
1)原理
- 分段存储,这里的段segment指的是日志段文件,Kafka中的日志含义即是消息或数据,日志回滚受log.segment.bytes控制,默认1G;
- 索引文件,一个稀疏格式的索引,受参数log.index.interval.bytes控制,默认4KB。即不是每条数据都会写索引,默认每写4KB数据才会写一条索引。
$ ll
-rw-r--r-- 1 kafka kafka 1002496 Apr 25 17:08 00000000000051402174.index
-rw-r--r-- 1 kafka kafka 1073741338 Apr 25 17:08 00000000000051402174.log
-rw-r--r-- 1 kafka kafka 10485760 Apr 26 15:03 00000000000051638285.index
-rw-r--r-- 1 kafka kafka 219984088 Apr 26 15:04 00000000000051638285.log
2)日志留存策略Kafka 会定期检查是否要删除旧消息,见参数 log.retention.check.interval.ms,默认5分钟。当前有三种日志留存策略:
- 基于空间:log.retention.bytes,默认未开启;
- 基于时间:log.retention.hours(mintues/ms),默认7天;
- 基于起始位移:Kafka 0.11.0.0版本引入,解决流处理场景中已处理的中间消息删除问题。
目前基于时间的日志留存策略最常使用。
根据这篇文章,笔者整理了一张Kafka内核思维导图:
关注下方公众号,回复 kafka2020 下载Kafka内核的PDF高清版。
往期推荐
1、如何快速全面掌握Kafka?5000字吐血整理
2、HBase原理 | HBase Compaction介绍与参数调优
3、MapReduce Shuffle 和 Spark Shuffle 结业篇
4、实时数仓 | 你想要的数仓分层设计与技术选型
kafka session.timeout.ms 是指消费一条数据的时间?_干货 | Kafka 内核知识梳理,附思维导图...相关推荐
- kafka session.timeout.ms 是指消费一条数据的时间?_阿里工程师分享:浅谈分布式发布订阅消息系统Kafka...
Kafka的基本介绍 Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/ngi ...
- kafka 中参数:session.timeout.ms 和 heartbeat.interval.ms的区别
文章目录 1.heartbeat.interval.ms 2.heartbeat.interval.ms 与 session.timeout.ms 的对比 3.session.timeout.ms 和 ...
- kafka基础-文末思维导图
文末思维导图 kafka基础-思维导图 Kafka进阶思维导图 Kafka监控调优思维导图 kafka基础 核心术语 Topic 主题 Partition 分区,一个主题多个分区 Record消息 副 ...
- 【一图流思维导图】Redis设计与实现 包括( 数据类型-数据结构) 及应用场景(登录次数校验,在线人数统计,分布式session,redis分页,判断重复注册,社交领域共同喜好,排行榜 ,topN)
参照 Redis详解(一)------ redis的简介与安装 Redis详解(二)------ redis的配置文件介绍 Redis详解(三)------ redis的六大数据类型详细用法 Redi ...
- kafka 思维导图
最近在培训沟通力过程中,一句话说的特别好,有输入就要有输出,最近又学习了一遍kafka 给大家分享一下
- java技术路线思维导图_开题报告中的研究方法及技术路线指的啥?
研究方法,就是你研究这个论文所使用的方法,比如你引用了一个案例,那这就叫做个案法,比如说你调查了一个问卷,这就用了调查法,比如说你去实际勘察,然后询问了别人,这就叫做访谈法,比如说你很多数据都是计算出 ...
- kafka核心技术与实战 思维导图
https://www.zhixi.com/view/7d57c093
- kafka Java客户端之 consumer API 消费消息
背景:我使用docker-compose 搭建的kafka服务 kafka的简单介绍以及docker-compose部署单主机Kafka集群 使用consumer API消费指定Topic里面的消息 ...
- Apache Kafka:使用java方式操作消费组和重置分区偏移量(admin api)
当前版本:kafka_2.12-2.8.0 1. 声明 当前内容主要为本人学习和测试使用java方式操作消费组和重置分区偏移量,主要参考:Apache Kafka官方文档 主要为: 使用java方式实 ...
最新文章
- android 虚拟设备的用法
- 【Linux】一步一步学Linux——help命令(16)
- windows运行linux脚本命令大全,查看和运行 Windows PowerShell 脚本
- 使用export/import导出和导入docker容器
- C语言scanf函数奇遇记
- 基于JAVA+SpringMVC+MYSQL的记账管理系统
- 方法用于ThinkPHP3.1快速入门连贯操作
- 曹讯 计算机摄像学,计算摄像学: 全光视觉信息的计算采集
- DX中材质不能正确显示的问题(要么黑色,要么白色)
- 享20个Android游戏源码
- 菜刀之中国蚁剑-安装使用及下载地址
- 如何把播放器转换成HTML5,Chrome把普通flash播放器转变成HTML5播放器插件:HTML5ify...
- 股票经典书籍推荐(豪华版)
- 【言简意赅】聊聊DAS、NAS、SAN三种存储方式
- matlab 中画箭头
- (闪存)存储基础知识
- 2023年全国最新二级建造师精选真题及答案13
- Android Smart Image View
- android webview无法显示H5中的图片
- pythonl list 的修改元素