• Kafka发送到分区的message是否是负载均衡的?


    首先说结论,是负载均衡的。也就是说,现在有一个producer,向一个主题下面的三个分区发送message,没有指定具体要发送给哪个partition,

    这种情况,如果是负载均衡的,发送的消息应该均匀分布在三个分区的日志文件中。

     

    下面开始验证:

    首先创建一个带三个分区的topic, my-partitioned-topic。

    binwindowskafka-topics --create -zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic my-partitioned-topic

      查看分区信息是否正确

    binwindowskafka-topics --describe --zookeeper localhost:2181 --topic my-partitioned-topic

      可以看到当前topic下分区数量为3,分区编号依次是0,1,2。

      现在创建一个producer:

    binwindowskafka-console-producer --broker-list localhost:9092 --topic my-partitioned-topic

      发送消息:

      然后我们去找分区的日志文件,日志文件在哪儿呢?

      我们需要先去看kafka的配置文件server.xml里面配置的日志存放路径。

      我用的是windows,这个目录在我的D盘,看一下都有啥:

      可以看到,这里面有my-partitioned-topic下面的三个分区目录,随便打开一个看下里面是啥:

      这里我们主要看*.log文件,打开之后有乱码,我的编码格式不对,在linux就是好的

      但是没关系,依次打开my-partitioned-topic-1,my-partitioned-topic-2的日志文件,会发现里面都有之前producer发送的消息,并且消息都不同。

      这就说明了,producer向分区发送消息是做了负载均衡的。

      但是这里由于乱码,看不到每个日志文件里面有几条记录,无法确定是否均匀分布,但是没有关系,我们再看一下刚才的目录:

      发下这里还有几个*-checkpoint文件,也就是检查点文件,我们需要看的是replication-offset-checkpoint这个文件,打开:

      我们只关注这里面的my-partitioned-topic,比如my-partitioned-topic 1 2这条记录。

      1代表分区编号,它就是第二个分区(从0开始编号),2代表当前存放了几条记录,然后我们就会发现三个分区存放的数量都是一致的,

      所以我们可以认定它是均匀分配的。

      

  • 相关阅读:
    JVM的学习5_____垃圾回收:分代收集算法
    JVM的学习4____GC的作用和垃圾的标记
    JVM的学习3_____逃逸分析与栈上分配
    JVM的学习2____对象实例的内存分配原理
    JVM的学习1_____内存模型
    SpringMVC的学习____6.JSON 和Ajax
    两种方法关联控制器和DOM
    img的src,a的href使用{{}}设置属性不能生效
    ng之{{value}}顺序
    ng之ng-app指令
  • 原文地址:https://www.cnblogs.com/alinainai/p/10576653.html
Copyright © 2020-2023  润新知