Kafka使用多个分区时 consumer的Assign配置
天天在给自己挖坑排坑。。。
因为要开多线程消费,所以分区加到了10,两个broker。
Producer没有做特殊处理,所以是随机发到Partitions。
但是Consumer只做Subscribe订阅的话,会只消费到Partition = 0 的消息。
因此看了一下有个Assign可以绑定分区和topic。
但是只使用TopiicPartition的话,只能配置成功但是消费不成功,尝试加Subscribe后还是只能消费到partition=0的分区消息。
最后考虑是不是因为offset的问题。
使用Assign(TopicPartitionOffset)之后,成功消费到对应分区对应消息。
(12.13改 关于subscribe只消费到0分区的原因是 当前分区多个,但是消费者只有一个,因此即使rebalance,还是只能消费到一个分区)
另外关于kafka消费的问题,因为要控制消费的线程数,长时间跑的线程又不太方便用线程池(原因:线程池为了判断是否需要创建一个额外的线程,所采用的逻辑比较复杂,直接为长时间运行的任务创建专用线程,就可以避免这个问题。),所以直接开了n个线程来消费。
这样的情况下,如果是单例的消费者,对应单个分区是没有问题的,取消息是排队的,但是处理消息还是可以并发的。
另外还有一种方案,就是多个分区对应多个消费者。开多个线程跑。
啊,这里我还查了lambda表达式的匿名传参,大概格式如下
kafkaThread[i] = new Thread(delegate (object obj)
{
//线程代码
};
此外在测两种方案的QPS,消费平滑度等性能的时候,需要在线程里设置count++,因此又学了一个知识点。
用Interlocked 就可以做到++的原子操作了,代码如下:
private static int _countConsume = ; Interlocked.Increment(ref _countConsume);
都是属于自己学习之路上的干货,记录一下。
昨天晚上加班的比较晚,后来老大来跟我聊了一会儿。聊得东西很多,我本人毕业院校不太好,组里小哥哥是中科大的。所以我当时感到压力挺大,然后老大就跟我讲了一些关于学校里和工作后的区别。
顺带讲了方法论和工具是什么,告诉我怎么去使用一项技术,工作和科研的区别(技术与业务的结合性)。
感觉我老大是人超好的那种,他的境界是我所仰望的,讲真毕业第一份工作有这样一位老大带着,我感觉非常幸运,希望我可以在他带的团队里,学到更多的东西,早日可以独当一面。
Kafka使用多个分区时 consumer的Assign配置的更多相关文章
- 如何创建Kafka客户端:Avro Producer和Consumer Client
1.目标 - Kafka客户端 在本文的Kafka客户端中,我们将学习如何使用Kafka API 创建Apache Kafka客户端.有几种方法可以创建Kafka客户端,例如最多一次,至少一次,以及一 ...
- 漫游Kafka设计篇之Producer和Consumer
Kafka Producer 消息发送 producer直接将数据发送到broker的leader(主节点),不需要在多个节点进行分发.为了帮助producer做到这点,所有的Kafka节点都可以及时 ...
- 如何确定Kafka的分区数、key和consumer线程数
[原创]如何确定Kafka的分区数.key和consumer线程数 在Kafak中国社区的qq群中,这个问题被提及的比例是相当高的,这也是Kafka用户最常碰到的问题之一.本文结合Kafka源码试 ...
- 漫游Kafka设计篇之Producer和Consumer(4)
Kafka Producer 消息发送 producer直接将数据发送到broker的leader(主节点),不需要在多个节点进行分发.为了帮助producer做到这点,所有的Kafka节点都可以及时 ...
- 【转】对硬盘进行分区时,GPT和MBR区别。
在Windows 8或8.1中设置新磁盘时,系统会询问你是想要使用MBR还是GPT分区.GPT是一种新的标准,并在逐渐取代MBR. GPT带来了很多新特性,但MBR仍然拥有最好的兼容性.GPT并不是W ...
- 对硬盘进行分区时,GPT和MBR有什么区别?
在Windows 8或8.1中设置新磁盘时,系统会询问你是想要使用MBR还是GPT分区.GPT是一种新的标准,并在逐渐取代MBR. GPT带来了很多新特性,但MBR仍然拥有最好的兼容性.GPT并不是W ...
- kafka系列四、kafka架构原理、高可靠性存储分析及配置优化
一.概述 Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cl ...
- 【原创】如何确定Kafka的分区数、key和consumer线程数
在Kafak中国社区的qq群中,这个问题被提及的比例是相当高的,这也是Kafka用户最常碰到的问题之一.本文结合Kafka源码试图对该问题相关的因素进行探讨.希望对大家有所帮助. 怎么确定分区数? ...
- 【转】如何确定Kafka的分区数、key和consumer线程数
文章来源:http://www.cnblogs.com/huxi2b/p/4583249.html -------------------------------------------------- ...
随机推荐
- Kernel的意义
在第7章最后一段讲到Kernel,Kernel就是用向量表示元素的和的乘积. Back in our discussion of linear regression, we had a problem ...
- Extjs Ext.TreePanel
TreePanel 简单实例. <link rel="stylesheet" href="Js/ext-4.2/resources/css/ext-all-nept ...
- C#调用OCX控件的常用方法[转]
小伙伴们在使用ICP提供的各种能力进行集成开发时常常会遇到一些技术上的困扰,例如ICP中很多接口是通过OCX控件的方式提供的,如何调用这些接口,就成了一个不大不小的问题,毕竟开发指南上可没这些内容啊~ ...
- 父级(display:none)隐藏时,子节点的高度获取。
当父节点display:none的时候,子节点的高度是0获取不到. 解决办法:用visibility替换display就可以了.
- 「BJOI2012」连连看
题目链接 戳我 \(Solution\) 我们首先进行拆点操作,将每个点都拆成\(x\)和\(y\),将满足条件的两个点连起来就好了(记得要将\(x\)连\(y'\)的同时要将\(y\)联向\(x'\ ...
- 不值一提,却又不得不提的“CSS文本超出部分省略号代替”
偶然看到一篇类似css技巧与经验总结的文章,其中有一部分非常熟悉,那就是“css控制元素内文本超出部分使用省略号代替”,一般实际工作中, 很多产品经理会对页面UI有这样的要求.还记得,第一次做这个功能 ...
- [SCOI2007]最大土地面积(旋转卡壳)
首先,最大四边形的四个点一定在凸包上 所以先求凸包 有个结论,若是随机数据,凸包包括的点大约是\(\log_2n\)个 然鹅,此题绝对不会这么轻松,若\(O(n^4)\)枚举,只有50分 所以还是要想 ...
- POJ-1321-棋盘问题(深搜)
棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65409 Accepted: 31227 Descriptio ...
- SDUT OJ 数组计算机(线段树)
学长推荐了这个博客详细的介绍了线段树的建立.查找.更新: 数组计算机 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Prob ...
- swoole安装报错详解 mysqlnd_find_charset_nr in Unknow
今天安装 swoole扩展时候,最后一步报错如下: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/m ...