天天在给自己挖坑排坑。。。

因为要开多线程消费,所以分区加到了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配置的更多相关文章

  1. 如何创建Kafka客户端:Avro Producer和Consumer Client

    1.目标 - Kafka客户端 在本文的Kafka客户端中,我们将学习如何使用Kafka API 创建Apache Kafka客户端.有几种方法可以创建Kafka客户端,例如最多一次,至少一次,以及一 ...

  2. 漫游Kafka设计篇之Producer和Consumer

    Kafka Producer 消息发送 producer直接将数据发送到broker的leader(主节点),不需要在多个节点进行分发.为了帮助producer做到这点,所有的Kafka节点都可以及时 ...

  3. 如何确定Kafka的分区数、key和consumer线程数

    [原创]如何确定Kafka的分区数.key和consumer线程数   在Kafak中国社区的qq群中,这个问题被提及的比例是相当高的,这也是Kafka用户最常碰到的问题之一.本文结合Kafka源码试 ...

  4. 漫游Kafka设计篇之Producer和Consumer(4)

    Kafka Producer 消息发送 producer直接将数据发送到broker的leader(主节点),不需要在多个节点进行分发.为了帮助producer做到这点,所有的Kafka节点都可以及时 ...

  5. 【转】对硬盘进行分区时,GPT和MBR区别。

    在Windows 8或8.1中设置新磁盘时,系统会询问你是想要使用MBR还是GPT分区.GPT是一种新的标准,并在逐渐取代MBR. GPT带来了很多新特性,但MBR仍然拥有最好的兼容性.GPT并不是W ...

  6. 对硬盘进行分区时,GPT和MBR有什么区别?

    在Windows 8或8.1中设置新磁盘时,系统会询问你是想要使用MBR还是GPT分区.GPT是一种新的标准,并在逐渐取代MBR. GPT带来了很多新特性,但MBR仍然拥有最好的兼容性.GPT并不是W ...

  7. kafka系列四、kafka架构原理、高可靠性存储分析及配置优化

    一.概述 Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cl ...

  8. 【原创】如何确定Kafka的分区数、key和consumer线程数

    在Kafak中国社区的qq群中,这个问题被提及的比例是相当高的,这也是Kafka用户最常碰到的问题之一.本文结合Kafka源码试图对该问题相关的因素进行探讨.希望对大家有所帮助.   怎么确定分区数? ...

  9. 【转】如何确定Kafka的分区数、key和consumer线程数

    文章来源:http://www.cnblogs.com/huxi2b/p/4583249.html -------------------------------------------------- ...

随机推荐

  1. react-native-echarts构建的图表出现滚动条并且可以滑动的问题

    前段时间做echarts饼状图,按照官方提供的写法完成以后图表可以出来,但是虚拟机上演示出现了滚动条,并且拖动时就会出现空白,双击会缩小像这样       参考GitHub上给出的方法修改成功: no ...

  2. angular 服务之间依赖注入

    import { Injectable } from '@angular/core'; @Injectable() export class LoggerServiceService { constr ...

  3. 家用wifi信号覆盖增强扩展实用指南

    家用wifi信号覆盖增强扩展实用指南 现在网上很多号称穿墙王的无线路由器,但是一般用起来效果都不理想,其实最主要的原因还是家里面一般每个房间不大,但是墙比较多.并且一般也没有一个所谓的中心点放置路由器 ...

  4. 原码、反码、补码及位操作符,C语言位操作

    计算机中的所有数据均是以二进制形式存储和处理的.所谓位操作就是直接把计算机中的二进制数进行操作,无须进行数据形式的转换,故处理速度较快. 1.原码.反码和补码 位(bit) 是计算机中处理数据的最小单 ...

  5. Duration Assertion(持续时间)

    Duration Assertion用来测试每一个响应的时间是否小于给定的值,任何超过给定毫秒数的响应都会标记为失败. Duration in milliseconds:响应的持续时间是否在给定的值范 ...

  6. ASPxGridView后台实现隐藏新增按钮

    (ASPxGridView2.Columns[0] as GridViewCommandColumn).NewButton.Visible = false;//0应该代表的是NewButton所在的列 ...

  7. 【ARC083E】Bichrome Tree 树形dp

    Description 有一颗N个节点的树,其中1号节点是整棵树的根节点,而对于第ii个点(2≤i≤N)(2≤i≤N),其父节点为PiPi 对于这棵树上每一个节点Snuke将会钦定一种颜色(黑或白), ...

  8. 洛谷P4526 【模板】自适应辛普森法2(Simpson法)

    题面 传送门 题解 据说这函数在\(x>15\)的时候趋近于\(0\) 据说当且仅当\(a<0\)时积分发散 所以直接套自适应\(simpson\)吧-- //minamoto #incl ...

  9. Java面向对象之USB接口实例

    一.需求: 1.在电脑上设置一个USB接口. 2.电脑运行时,将鼠标连接到接口上,鼠标可以使用自己的功能. 3.电脑运行时,将键盘连接到接口上,键盘可以使用自己的功能.(使用接口的作用:减低鼠标.键盘 ...

  10. Windows NLB搭配IIS的ARR搭建高可用环境(转载)

    原文地址:http://www.cnblogs.com/shanyou/archive/2010/04/28/1723276.html 在现行的许多网络应用中,有时一台服务器往往不能满足客户端的要求, ...