Kafka发送到分区的message是否是负载均衡的?
首先说结论,是负载均衡的。也就是说,现在有一个producer,向一个主题下面的三个分区发送message,没有指定具体要发送给哪个partition,
这种情况,如果是负载均衡的,发送的消息应该均匀分布在三个分区的日志文件中。
下面开始验证:
首先创建一个带三个分区的topic, my-partitioned-topic。
bin\windows\kafka-topics --create -zookeeper localhost: --replication-factor --partitions --topic my-partitioned-topic
查看分区信息是否正确
bin\windows\kafka-topics --describe --zookeeper localhost: --topic my-partitioned-topic

可以看到当前topic下分区数量为3,分区编号依次是0,1,2。
现在创建一个producer:
bin\windows\kafka-console-producer --broker-list localhost: --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代表当前存放了几条记录,然后我们就会发现三个分区存放的数量都是一致的,
所以我们可以认定它是均匀分配的。
Kafka发送到分区的message是否是负载均衡的?的更多相关文章
- kafka负载均衡相关资料收集(三)
apache kafka系列之Producer处理逻辑 下文是转载的,原文链接地址:点这儿 [转] Kafka ProducerKafka Producer处理逻辑kafka生产者处理逻辑apache ...
- Kafka 负载均衡在 vivo 的落地实践
vivo 互联网服务器团队-You Shuo 副本迁移是Kafka最高频的操作,对于一个拥有几十万个副本的集群,通过人工去完成副本迁移是一件很困难的事情.Cruise Control作为Kafka的 ...
- kafka partition(分区)与 group
kafka partition(分区)与 group 一. 1.原理图 2.原理描述 一个topic 可以配置几个partition,produce发送的消息分发到不同的partition中,co ...
- kafka partition(分区)与 group(转)
原文 https://www.cnblogs.com/liuwei6/p/6900686.html 一. 1.原理图 2.原理描述 一个topic 可以配置几个partition,produce发送 ...
- 【Kafka】数据分区策略
数据分区策略 四种策略 一.指定分区号,数据会直接发送到所指定的分区 二.没有指定分区号,指定了数据的key,可以通过key获取hashCode决定数据发送到哪个分区 三.都没有指定的话,会采取rou ...
- 玩转Kafka的生产者——分区器与多线程
上篇文章学习kafka的基本安装和基础概念,本文主要是学习kafka的常用API.其中包括生产者和消费者, 多线程生产者,多线程消费者,自定义分区等,当然还包括一些避坑指南. 首发于个人网站:链接地址 ...
- (一)kafka修改topic分区的位置
(一)kafka修改topic分区的位置 环境:kafka_2.10-0.8.2.1 + JDK1.7.0_80 1. 查看分区topic的分区分布 $ le-kafka-topics.sh --de ...
- Kafka发送消息失败原因
Kafka发送消息方法如下: Properties properties = new Properties(); properties.put("zookeeper.connect" ...
- kafka之partition分区及副本replica升级
修改kafka的partition分区 bin/kafka-topics.sh --zookeeper datacollect-2:2181 --alter --partitions 3 --topi ...
随机推荐
- python第二课——数据类型1
day02(上午)主要讲了进制问题,小编之前已经发过了 day02(下午): 1.数据类型: 分类: 1).整数型:int浮点型(小数):float布尔型(True/False):bool 2).字符 ...
- centos下mysqlreport安装和使用
首先查看你的机器是否安装了perl: #perl -v 显示版本号即表示已安装 然后: #yum install perl-DBD-mysql perl-DBI #yum install mysqlr ...
- HBase学习之路 (七)HBase 原理
系统架构 错误图解 这张图是有一个错误点:应该是每一个 RegionServer 就只有一个 HLog,而不是一个 Region 有一个 HLog. 正确图解 从HBase的架构图上可以看出,HBas ...
- selenium+python unittest实践过程之问题杂集
1.列表选择项后直接获取文本内容获取不到,应该获取选择后显示的button的值 2.取值后的值带有空格,可以使用.strip()删除前后空格,以便断言 3.取值后有些值需要对类型进行转换才能断言成功 ...
- java中判断图片格式并且等比例压缩图片
最近项目中需要判断上传的图片必须是png,jpg,gif三种格式的图片,并且当图片的宽度大于600px时,压缩图片至600px,并且等比例的压缩图片的高度. 具体的实现形式: 大致的思路是: 判断根据 ...
- SharePoint中跨列表查询
1,最近的项目中遇到一个需求,站点中有几十个列表,其中每5,6个列表属于一个模块下的.客户的需求是,首页上显示一个模块下所有列表数据的前5条,并按创建时间排序. 2,刚刚考虑到这块的实现方法时,用的是 ...
- OC 知识:彻底理解 iOS 内存管理(MRC、ARC)
1. 什么是内存管理 程序在运行的过程中通常通过以下行为,来增加程序的的内存占用 创建一个OC对象 定义一个变量 调用一个函数或者方法 而一个移动设备的内存是有限的,每个软件所能占用的内存也是有限的 ...
- devise的使用
~ 在gemfile中加入 gem 'devise' ~ 终端输入 $ bundle install $ rails generate devise:install ~ 确保登录之后能正常跳转 在co ...
- 【翻译】R 中的设计模式
目录 R 中的设计模式 不动点算法 包装器模式 接口模式 柯里化(Currying) 闭包(Closures) 缓存模式 计数器模式 R 中的设计模式 本文翻译自 Design Patterns in ...
- 【转】SQL中的锁、脏读、不可重复的读及虚读
原文:http://blog.csdn.net/wjeson/article/details/9382067 锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题 ...