文档章节

Kafak 简单介绍

momisabuilder
 momisabuilder
发布于 2017/07/05 11:31
字数 561
阅读 56
收藏 0

Topic

Kafka中的Message,是以topic为基本单位存储信息的。每个topic可以分成不同的分区(partition),每个partition存储一部分message。请看官方图:

partition,是以文件的形式存储在集群中的文件系统中的,比如,创建一个名为connector-topic,有2个分区,那么在Kafka的数据目录中,log.dirs中就有2个这样的目录:connector-topic-0,connector-topic-1,命名规则为:<topicName>-<partitionId>,里面存储的就是这2个partition的数据。

来,看看具体的分区信息:

[hadoop@Ip kafka]$ ./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic connector-topic
Topic:connector-topic   PartitionCount:2        ReplicationFactor:2     Configs:


Topic: connector-topic  Partition: 0                 Leader: 1       Replicas: 2,1   Isr: 1,2
Topic: connector-topic  Partition: 1                 Leader: 3       Replicas: 3,2   Isr: 3,2

Partition的数据文件

Partition中的每个Message由Offset来表示他在这个partition中的偏移量,这个Offset不是该Message在partition数据文件的实际存储位置,而是逻辑上的一个数值,但就是逻辑上的数值,对我们来说,就足够了。每个Message包含三个属性,offset,messageSize,data,其中offset为Long型,MessageSize为int32,表示data有多大,data为message的具体内容

数据文件的分段

Kafka解决查询效率的手段之一是将数据文件分段,比如有100个Message,他们offset是从0到99。假设数据文件分成5段,第一段为0-19,第二段20-39,依次类推,每段放在一个单独的数据文件里面,数据文件一该段中最小的offset命名。这样再查找制定的offset的Message的时候,用二分查找就可以定位到该Message在哪个段中

为数据文件建索引

数据文件分段使得可以在一个较小的数据文件中查找对应的offset的Message了,但是这依然需要顺序扫描才能找到对应的offset的message,为了进一步提高查找的效率,Kafak为每个分段的数据文件建立索引文件,文件名与数据的名字是一样的,只是文件扩展名为.index

索引包含两个部分,分别为相对offset和position

相对offset,

position,表示该条Message在数据文件的绝对位置

 

 

 

 

© 著作权归作者所有

momisabuilder

momisabuilder

粉丝 15
博文 67
码字总数 31440
作品 0
西安
后端工程师
私信 提问
kafka 中间件,新公司总会学很多东西,来小结下

一个Topic 下可以有好多Group, 每个Group分别可以开多个消费者,每个组的消费者不会重复收到消息,这个组是个整体,一起消费消息。 如果想同时收到消息,就开Group就行了。 消费kafak的时候...

uaisunshine
2016/03/22
204
3
kafka设置外网消费者

kafka 的默认配置比较简单,但想把其端口暴露给外网(指定端口),则有一些额外的注意情况 kafka 的版本,0.8和0.10 的配置不同,这里以0.10.0.0 为主, 没有用集群,一台机做测试 zookeeper安...

mingover
2017/06/22
0
0
kafak主节点cpu 内存持续飙高,不回收,最后服务挂掉问题?

kafak主节点cpu 内存持续飙高,不回收,最后服务挂掉问题? XmlIpcRegSvc->172.18.58.184:60686 (CLOSE_WAIT) 有很多这个样的端口关闭等待,这是应用连接端。为什么一直等待呢?内存也没有回...

rui1988221
2018/08/23
545
4
storm 读取不到对应的kafka数据

坑一:pom文件主要内容:注意里面 需要 使用 “exclusion”排除相关的依赖 坑二: input.getBinaryByField(“bytes”); 里面一定要写成bytes,这是上游kafkaSpout 传递过来,源码中也可以看到...

bymain
2018/05/03
0
0
Flink消费kafka消息实战

版权声明:欢迎转载,请注明出处,谢谢。 https://blog.csdn.net/boling_cavalry/article/details/85549434 本次实战的内容是开发Flink应用,消费来自kafka的消息,进行实时计算; 环境情况 ...

博陵精骑
01/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
54分钟前
15
0
java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
今天
8
0
太全了|万字详解Docker架构原理、功能及使用

一、简介 1、了解Docker的前生LXC LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpa...

Java技术剑
今天
21
0
Wifiphisher —— 非常非常非常流氓的 WIFI 网络钓鱼框架

编者注:这是一个非常流氓的 WIFI 网络钓鱼工具,甚至可能是非法的工具(取决于你的使用场景)。在没有事先获得许可的情况下使用 Wifiphisher 攻击基础网络设施将被视为非法活动。使用时请遵...

红薯
今天
87
1
MongoDB 4 on CentOS 7安装指南

本教程为CentOS x86_64 7.x操作系统下,MongoDB Community x86_64 4.2(GA)安装指南。 安装方式一:yum repo在线安装 [此方式较为简单,官方推荐] Step1:新建MongDB社区版Yum镜像源。 # vim ...

王焱君
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部