IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> kafka-5.观察验证ISR弹性,时间戳索引自定义offset偏移 -> 正文阅读

[大数据]kafka-5.观察验证ISR弹性,时间戳索引自定义offset偏移

kafka

观察验证ISR弹性

下面是kafka 自己维护得offset

在这里插入图片描述

创建分区

 kafka-topics.sh  --zookeeper  server1:2181,server2:2181/kafka --create  --topic zjj-items --partitions 2 --replication-factor 3

查看分区

[root@localhost vmuser]#  kafka-topics.sh  --zookeeper  server1:2181,server2:2181/kafka --describe  --topic zjj-items
Topic: zjj-items        PartitionCount: 2       ReplicationFactor: 3    Configs: 
        Topic: zjj-items        Partition: 0    Leader: 1       Replicas: 1,2,0 Isr: 1,2,0
        Topic: zjj-items        Partition: 1    Leader: 2       Replicas: 2,0,1 Isr: 2,0,1

在这里插入图片描述

创建完成之后,可以在目录下查看到创建改分区结构

在这里插入图片描述

  • index 是他得偏移量、
  • log 是存入数据
  • timeiindex 时间偏移量索引

在这里插入图片描述
从上面看出来 index 与timeindex 都是10M,是因为用了mmap得预分配

jps
lsof -Pnp 25647

格式话文件内容展示

[root@localhost zjj-items-0]# kafka-dump-log.sh --files 00000000000000000000.log
Dumping 00000000000000000000.log
Starting offset: 0

我们从里面打点数据

在这里插入图片描述

可以看到里面得偏移量与数据
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

ack=0 的时候,将node02,指向其他位置,不让其网络通讯

在这里插入图片描述

这个时候kafka producer依然可以正常发送数据

ack=1 的时候

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

producer依然可以正常发送数据,但是在 isr里面 2 已经被提出去了

ack=-1 的时候

>
在这里插入图片描述

producer 客户端会卡10秒左右正常发送数据,irs剔除node2,

在这里插入图片描述

注意啊 partition1 里面 isr为什么踢出去2,是因为 partition1 里面 1是leader,而partition0 里面 3是leader,3无法通信2 所以踢出去,但是 1可以正常通信2

时间戳索引,自定义offset偏移

自定义offset 本质是seek

         /**
         * 以下代码是你再未来开发的时候,向通过自定时间点的方式,自定义消费数据位置
         *
         * 其实本质,核心知识是seek方法
         *
         * 举一反三:
         * 1,通过时间换算出offset,再通过seek来自定义偏移
         * 2,如果你自己维护offset持久化~!!!通过seek完成
         *
         */

        Map<TopicPartition, Long> tts =new HashMap<>();
        //通过consumer取回自己分配的分区 as

        Set<TopicPartition> as = consumer.assignment();

        while(as.size()==0){
            consumer.poll(Duration.ofMillis(100));
            as = consumer.assignment();
        }

        //自己填充一个hashmap,为每个分区设置对应的时间戳
        for (TopicPartition partition : as) {
//            tts.put(partition,System.currentTimeMillis()-1*1000);
            tts.put(partition,1610629127300L);
        }
        //通过consumer的api,取回timeindex的数据
        Map<TopicPartition, OffsetAndTimestamp> offtime = consumer.offsetsForTimes(tts);


        for (TopicPartition partition : as) {
            //通过取回的offset数据,通过consumer的seek方法,修正自己的消费偏移
            OffsetAndTimestamp offsetAndTimestamp = offtime.get(partition);
            long offset = offsetAndTimestamp.offset();  //不是通过time 换 offset,如果是从mysql读取回来,其本质是一样的
            System.out.println(offset);
            consumer.seek(partition,offset);

        }

     // 暂停查看偏移量
        try {
            System.in.read();
        } catch (IOException e) {
            e.printStackTrace();
        }


  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 22:17:06  更:2022-03-11 22:18:36 
 
开发: 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 9:39:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码