1.kafka工作流程

如图topicA有3个分区,每个分区有两个副本(包含一个leader,一个follower),发送消息可以一个一个的发送,也可以批量发送,0,1,2这种是offset偏移量,每一个分区里面都维护者一个从0开始的偏移量。作为follower,应该主动的从leader中备份过来。当然中间也可能丢失数据。消费者会找到leader拉取数据。
Kafka 中消息是以 topic 进行分类的,生产者生产消息,消费者消费消息,都是面向 topic的
topic 是逻辑上的概念,而 partition 是物理上的概念(如文件夹是以主题名+分区),每个 partition 对应于一个 log 文件,该 log 文件中存储的就是 producer 生产的数据。Producer 生产的数据会被不断追加到该log 文件末端,且每条数据都有自己的 offset。消费者组中的每个消费者,都会实时记录自己消费到了哪个 offset,以便出错恢复时,从上次的位置继续消费
kafka无法保证全局有序性,而能够保持区内有序。比如123分区,但是读取的时候不能保证1分区最先被读取。

Kafka文件存储机制


由于生产者生产的消息会不断追加到 log 文件末尾,为防止 log 文件过大导致数据定位效率低下,Kafka 采取了分片和索引机制,将每个 partition 分为多个 segment。每个 segment对应两个文件——“.index”文件和“.log”文件。这些文件位于一个文件夹下,该文件夹的命名规则为:topic 名称+分区序号。例如,first 这个 topic 有三个分区,则其对应的文件夹为 first0,first-1,first-2
.log里面只存数据,而当挂了之后,我们想知道下次消费哪个offset,那就依赖index。分片规则,按照1个G来分片。index即当前log最小的偏移量。

00000000000000000000.index
00000000000000000000.log
00000000000000170410.index
00000000000000170410.log
00000000000000239430.index
00000000000000239430.log

index 和 log 文件以当前 segment 的第一条消息的 offset 命名。下图为 index 文件和 log 文件的结构示意图

index文件和log文件详解

“.index”文件存储大量的索引信息,“.log”文件存储大量的数据,索引文件中的元 数据指向对应数据文件中 message 的物理偏移地址。 定位文件内容采用二分查找法。index文件存储的内容大小都一样,我们要找到一条消息,我们就可以快速的找到。而log文件中每条数据的大小不一样,如果文件大小过大,那么扫描的代价就会过大。

kafka工作流程及文件存储机制相关推荐

  1. kafka 不同分区文件存储_Kafka 系列(二)文件存储机制与Producer架构原理怎样保证数据可靠性??...

    文章目录 Kafka工作流程及文件存储机制 工作流程: topic底层存储: Producer生产者架构: 一:分区存储策略: 1.分区的原因: 2.分区的原则: ProducerRecord构造器: ...

  2. Kafka整体结构图、Consumer与topic关系、Kafka消息分发、Consumer的负载均衡、Kafka文件存储机制、Kafka partition segment等(来自学习资料)

    ##1. Kafka整体结构图 Kafka名词解释和工作方式  Producer : 消息生产者,就是向kafka broker发消息的客户端.  Consumer : 消息消费者,向kafka ...

  3. Kafka文件存储机制及offset存取

    Kafka是什么 Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx ...

  4. Kafka文件存储机制那些事

    Kafka是什么 Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx ...

  5. kafka 不同分区文件存储_Kafka文件存储机制思考及答案:为什么要分区呢?分区存了哪些内容?...

    问题导读:1.kafka存储文件结构有哪些? 2.如何理解Partition 分区存在? 3.Segment 存储是什么? 4.消费者如何通过 offset 查找 message? 一.存储文件结构 ...

  6. kafka学习(二)kafka工作流程分析

    本文借鉴:再过半小时,你就能明白kafka的工作原理了(特此感谢!) 一.发送数据 PS:Producer在写入数据的时候永远的找leader,不会直接将数据写入follower 1.follower ...

  7. Kafka(消息队列原理,kafka定义,Kafka架构原理,kafka架构的工作流程)秒懂的kafka

    目录 什么是Kafka? 消息队列原理: 为什么要用Kafka? kafka的架构 kafka工作流程详解: 什么是Kafka? kafka是一个分布式消息队列 这个定义意味深长,记住容易,理解不易. ...

  8. kafka 不同分区文件存储_Kafka深入理解-1:Kafka高效的文件存储设计

    Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志.访问日志,消 ...

  9. 基于区块链的去中心化存储(区块链存储)的工作流程

    引入 个人电脑上存储有限,而且如果硬盘损坏数据丢失的话,也不容易恢复.因此很多人愿意把数据上传到云盘里,也就是云存储.但是云存储是服务提供商控制的,比如阿里云,百度云等,我们称为中心化的存储 ,人们对 ...

最新文章

  1. 基于深度学习的可疑活动视频分析
  2. 成为数据专家,你只差一个Quick Insights的距离
  3. 二叉树的前中后序遍历之迭代法(统一风格迭代方式)
  4. fixture.detectChange开始单步调试,如何执行到Directive的ngAfterViewInit钩子
  5. RabbitMQ(mall学习)
  6. qt中combox怎么使其下拉菜单的长度变长
  7. Java实现XSS防御
  8. 2019年北航OO第二单元(多线程电梯任务)总结
  9. 2021全国大学生计算机系统能力大赛操作系统设计赛第一场研讨会隆重举行
  10. 生成springboot banner网站
  11. qt 开发新问题QList使用小记
  12. EWF在win7_x86_x64系统中配置
  13. 友达光电(昆山)第六代LTPS液晶面板厂 成功点亮首片5.5吋Full HD面板 缔造最快速量产记录 展现领先LTPS技术实力...
  14. iOS基础-小Demo--刮开涂层(刮刮乐效果)
  15. 网络三定律:摩尔定律、吉尔德定律和迈特卡夫定律
  16. C语言计算数字乘积根,C 乘积根
  17. 商品属性的选择功能的实现
  18. STM32 CM0+系列芯片的NRST模式之坑
  19. 前端跨域请求get_前端接收 get 请求,用jsonp 解决跨域问题, 需要服务端的response 也要jsonp 类型...
  20. 利息计算器V3.0感悟

热门文章

  1. adduser useradd userdel /etc/password【原创】
  2. 128x64液晶驱动(添加详细)
  3. php socket_create卡顿,phpsocket_createundefined的异常解决方法
  4. mysql publishedtime_MySQL数据库中的Date,DateTime,TimeStamp和Time类型
  5. 【Android自定义View】Bitmap的绘制和颜色滤镜
  6. 条件变量、pthread_cond_init
  7. python 去掉tab_如何截掉空格(包括tab)
  8. 我的docker随笔21:web 服务器部署
  9. [学习备忘录]Linux平台静态库、动态库的一些笔记
  10. extjs 提交表单给php,Extjs表单常见验证小结_extjs