当前位置: 首页 > news >正文

网站建设申报方案网络建站优化科技

网站建设申报方案,网络建站优化科技,商标设计网站推荐,网页制作公司简介1.概述 在Kafka架构,不管是生产者Producer还是消费者Consumer面向的都是Topic。Topic是逻辑上的概念,而Partition是物理上的概念。每个Partition逻辑上对应一个log文件,该log文件存储是Producer生产的数据。Producer生产的数据被不断追加到该…

1.概述

  在Kafka架构,不管是生产者Producer还是消费者Consumer面向的都是Topic。Topic是逻辑上的概念,而Partition是物理上的概念。每个Partition逻辑上对应一个log文件,该log文件存储是Producer生产的数据。Producer生产的数据被不断追加到该log文件末端,且每条数据都有自己的offset。Kafka对于log文件是采取分片和索引机制。

2.Kafka的topic

启动kafka集群,集群中有三台Broker; 设置3个分区,3个副本;

2.1 创建hy-test-topic

bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --create --replication-factor 3 --partitions 3 --topic hy-test-topic

2.2 发送消息到topic

public static void main(String[] args) {//1.创建kakfa生产者的配置对象Properties prop = new Properties();//2.给生产者配置对象添加配置信息prop.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"hadoop102:9092");prop.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,"org.apache.kafka.common.serialization.StringSerializer");prop.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,"org.apache.kafka.common.serialization.StringSerializer");prop.put(ProducerConfig.BATCH_SIZE_CONFIG, 16384);prop.put(ProducerConfig.LINGER_MS_CONFIG, 1);prop.put(ProducerConfig.BUFFER_MEMORY_CONFIG,33554432);//3.创建生产者对象KafkaProducer<String, String> kafkaProducer = new KafkaProducer<>(prop);//4.调用send方法,发送消息for (int i = 0; i < 5; i++) {kafkaProducer.send(new ProducerRecord<String,String>("hy-test-topic",Integer.toString(i),Integer.toString(i)));}//5.关闭资源kafkaProducer.close();
}

查看log.dirs

在这里插入图片描述

2.3 查看topic的分区和副本

bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --describe --topic hy-test-topic

在这里插入图片描述
可以看出:

  • 分区Partition-0 在broker.id=4中,其余都是副本 Replicas 2,3
  • 分区Partition-1 在broker.id=2中,其余都是副本 Replicas 3,4
  • 分区Partition-2 在broker.id=3中,其余都是副本 Replicas 4,2

通过zookeeper查看leader在那个broker上

[zk: localhost:2181(CONNECTED) 14] get /kafka/brokers/topics/hy-test-topic/partitions/0/state{"controller_epoch":49,"leader":4,"version":1,"leader_epoch":0,"isr":[4,2,3]}

2.4 分区文件

在这里插入图片描述
在这里插入图片描述

名称描述类型默认
log.segment.bytes单个日志文件的最大大小int1073741824(1G)

继续发送消息会生成新的segment

在这里插入图片描述

可以看出

  • 第一个segment文件00000000000000000000.log快要达到 log.segment.bytes时,开始创建 00000000000000001187.log
  • .log.index.timeindex文件是一起出现; 并且名称是以文件第一个offset命名的。
  • .log存储消息文件
  • .index存储消息的索引
  • .timeIndex,时间索引文件,通过时间戳做索引

2.5 分区下文件内容

使用kafka自带工具bin/kafka-run-class.sh 来读取分区下的文件内容

2.5.1 消息文件.log
bin/kafka-run-class.sh kafka.tools.DumpLogSegments --files 00000000000000000000.log

在这里插入图片描述

最后一行显示的是

baseOffset: 1186  position: 1072277020 CreateTime: 1695792070168
2.5.2 消息索引文件.index
bin/kafka-run-class.sh kafka.tools.DumpLogSegments --files 00000000000000000000.index

在这里插入图片描述

offset: 1186 position: 1072277020
2.5.3 时间索引文件.timeindex
/opt/module/kafka/bin/kafka-run-class.sh kafka.tools.DumpLogSegments --files 00000000000000000000.timeindex

在这里插入图片描述

2.5.4 Kafka如何查找指定offset的Message

借用博主@lizhitao 博客上的一张图来展示是如何查找Message的。

在这里插入图片描述

比如:要查找绝对offset为7的Message:

  • 首先是用二分查找确定它是在哪个LogSegment中,自然是在第一个Segment中。
  • 打开这个Segment的index文件,用二分查找找到offset小于或者等于指定offset的索引条目中最大的那个offset。自然offset为6的那个索引是我们要找的,通过索引文件我们知道offset为6的Message在数据文件中的位置为9807。
  • 打开数据文件,从位置为9807的那个地方开始顺序扫描直到找到offset为7的那条Message。

该机制是建立在offset是有序的。索引文件被映射到内存中,所以查找的速度还是很快的。

Kafka的Message存储采用了分区(partition),分段(LogSegment)和稀疏索引来达到了查找的高效性。

参考链接:https://cloud.tencent.com/developer/article/1846773

http://www.hkea.cn/news/718133/

相关文章:

  • 上海都有哪些企业公司seo网站seo
  • 进一步加强政府网站建设网站建设介绍ppt
  • 做网站的设计软件上海seo推广外包
  • 中国工程局人才招聘网福建seo推广方案
  • 深圳南山做网站的公司百度投诉中心
  • 辽宁建设工程信息网业绩认定武汉网站优化公司
  • 莱芜都市人才网上海网站seo公司
  • 广州做鞋的网站怎么让某个关键词排名上去
  • 温州平阳县网站建设兼职东莞网络推广哪家公司奿
  • 做单页网站价格微信朋友圈广告在哪里做
  • 濮阳家电网站建设一般开车用什么导航最好
  • html5 图片展示网站大作设计网站
  • 河北正规网站建设比较百度一下你就知道官页
  • 企业网站建设哪家服务好福州网站关键词推广
  • 惠州悦商做网站软件开发一般需要多少钱
  • 做衣服外单网站优化大师官方正版下载
  • 专门做酒店的网站百度排行
  • 上海做手机网站建设盐城网站优化
  • html论坛模板东营seo整站优化
  • 天津网站建设582345网址导航桌面版
  • 东莞纸箱厂东莞网站建设经典模板网站建设
  • 贺州同城购物网站建设中国网站排名100
  • 黄骅港旅游景点爱站网seo工具包
  • 网站 图文混编提高网站搜索排名
  • 北京怀柔网站制作教育机构
  • 网站建设费 大创友链交换平台
  • o2o商城网站系统开发微信群拉人的营销方法
  • 帝国cms做淘宝客网站网页设计用什么软件
  • 营销型网站建设的优缺点视频优化软件
  • 珠海响应式网站建设推广公司网络营销发展方案策划书