| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Kafka工作流程和文件储存 -> 正文阅读 |
|
[大数据]Kafka工作流程和文件储存 |
工作流程常用命令:先启动zookeeper和kfka
? ?
????????Kafka 中消息是以
topic
进行分类的,生产者生产消息,消费者消费消息,都是面向
topic ?
的。
????????分区命名规则为:topic 名称+分区序号。例如,first 这个 topic 有三个分区,则其对应的文件夹为 first-0,first-1,first-2
????????topic 是逻辑上的概念,而
partition
是物理上的概念,每个
partition
对应于一个
log
文
件,该
log
文件中存储的就是
producer
生产的数据。
Producer
生产的数据会被不断追加到该
log
文件末端,且每条数据都有自己的
offset
。消费者组中的每个消费者,都会实时记录自己
消费到了哪个
offset
,以便出错恢复时,从上次的位置继续消费
理解
:1:kafka按照topic进行分类,每个类别又进行了分区partition ,在实际存储中,以分区进行存储。每个分区又会有副本机制,即相同的分区,kafka可能会存储多分且分布在不同机器上面,防止某一个机器坏掉,数据丢失了。例如:我们将收藏和点赞分别放在topic1和topic2,然后今天的topic1作为一个分区,明天的topic1又作为一个分区,topic2同理,这样每个topic都有两个分区,然后但是我们数据只有一份。为了防止某台服务器突然坏了,里面数据都丢失了,我们就把这些分区数据备份一个,把备份的和原本的相同数据分开存在不同服务器,这就是副本了。
? ? ? ? ????2:kafka每个分区都会记录该分区的偏移量了,相同分区偏移量一样,这样我们就知到这个分区那些数据是被读取过的,下次会从这个地方接着读取。同一个组的消费者,例如张三上次从topic1的一个分区读取了10条数据,那么下次同一个消费组的李四,第一次读取topic1的这个分区
也会接着从第11条数据开始读取
? ? ? ? ? ? 3:kafka只能保证分区内有序,并不能保证全局有序,即topic1有三个分区,生产者按顺序依次向topic1发送,123456789三个数据,其中分区1存储了135,分区2存储了28,分区三存储了467(这里为随机存储,可以设定分区规则),这里每个分区内先存储的数据在前面有序,读取数据时,只能保证每个分区内的数据按顺序取出,从哪个分区开始读不确定,即读取顺序并不一定为123456789,可能先读完分区1,然后读取分区3,最后分区2,综述,
生产顺序和消费顺序并保证一致。
文件储存?命名:当前偏移量+1 ? ? ? ? ? ? ?1:由于生产者生产的消息会不断追加到 log 文件末尾,为防止 log 文件过大导致数据定位效率低下,Kafka 采取了分片和索引机制(分片:当log文件超过设定存储量时会产生新的log和index文件),将每个 partition 分为多个 segment。每个 segment对应两个文件——“.index”文件和“.log”文件,“.index”文件存储大量的索引信息,“.log”文件存储大量的数据,索引文件中的元数据指向对应数据文件中 message 的物理偏移地址。
???????
下图为
index
文件和
log 文件的结构示意图。
? ? ? ? ?消费说明:当该分区有多个index文件时,比较index名字大小(二分查找法),定位index索引文件,index里面索引数据大小一样3为索引,756为偏移量大小,index还能记录该条消息大小,例如,message3大小为1000,那么会快速读取756——1756的数据,即message3 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 3:59:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |