Kafka实际使用过程中遇到的一些问题及解决方法:

1.关于Kafka的分区:

开始使用Kafka的时候,没有分区的概念,以为类似于传统的MQ中间件一样,就直接从程序中获取Kafka中的数据。
后来程序搭建了多套,发现永远只有一个消费者(消费者应用部署在多个tomcat上)会从Kafka中获取数据进行处理,后来才知道有分区这么一个概念。

具体不说了,网上有很多资料,总的概括:Kafka的分区,相当于把一个Topic再细分成了多个通道,一个消费者应用可以从一个分区或多个分区中获取数据。
有4个分区,1个消费者:这一个消费者需要负责消费四个分区的数据。
有4个分区,2个消费者:每个消费者负责两个分区
有4个分区,3个消费者:消费者1负责1个分区,消费者2负责1个分区,消费者3负责两个分区
有4个分区,4个消费者:一人一个
有4个分区,5个及以上消费者:4个消费者一人一个,剩下的消费者空闲不工作。

部署的时候尽量做到一个消费者对应一个分区。

2.分区数据量不均衡:

Topic上设置了四个分区,压测过程中,发现每个分区的数据量差别挺大的,极端的时候,只有一个分区有数据,其余三个分区空闲。
解决方法,在用生产者生产数据的时候,send方法需要指定key。Kafka会根据key的值,通过一定的算法,如hash,将数据平均的发送到不同的分区上。

3.spring-integration-kafka:

在使用spring-integration-kafka做消费者的时候,发现CPU和内存占用量占用非常的大,后来又发现不管生产者发送了多少数据,Kafka的Topic中一直没有数据,这时候才知道spring-integration-kafka会将Topic中的数据全拉到本地,缓存起来,等待后续的处理。
解决方法:
<int:channel id="inputFromKafka">
<int:queue capacity="25"/> --这里加个配置,相当于缓存多少数据到本地
</int:channel>

作者:忙小懒

链接:http://www.jianshu.com/p/551954909f53

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Kafka实际使用过程中遇到的一些问题及解决方法的更多相关文章

  1. Storm编译打包过程中遇到的一些问题及解决方法

    作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2013/11/30/som ...

  2. 安装Hadoop 2.7.3的过程中遇到的一些问题及解决方法。

    1. 启动hadoop 时发现namenode 没有启动起来 出现以下错误: Incorrect configuration: namenode address dfs.namenode.servic ...

  3. Linux系统在启动过程中grub引导文件丢失的解决方法

    在/boot/grub2目录下有一个grub.cfg文件:该文件主要是用来自动地引导系统启动内核程序和系统的初始化程序. 问题一:当系统在启动的情况下,我们不小心删除/boot/grub2/grub. ...

  4. ldap安装配置过程中遇到的错误,以及解决方法

    错误1: [root@openldap openldap]# ldapsearch -LLL-W -x -H ldap://etiantian.org -D "cn=admin,dc=eti ...

  5. 记一个VS连接过程中找不到cpp的解决方法

    在新增几个qt页面时,发现原来没动的几个cpp 连接报错了,错误均是qt的相关文件找不到 应该是moc文件没有生产或者没有被包含进工程.我想着既然我没动,应该不会是moc的原因,就在其他方向解决了很久 ...

  6. 使用Python过程中遇到的一些坑及其解决方法(持续更新)

    1.列表不能直接赋值 nums1 = nums2 x nums1[:] = nums2 正确 2.返回列表某一元素的值可以使用index函数 aList = [123, 'xyz', 'runoob' ...

  7. sql server 还原数据库后,删除用户,提示数据库主体在该数据库中拥有架构,无法删除解决方法

    将另一台服务器上的数据库备份文件,在现在用的这台服务器上还原之后,再创建相同的用户名,提示用户已存在 想将之前的用户先删除掉,却提示“数据库主体在该数据库中拥有架构,无法删除解决方法” 在网上找到方法 ...

  8. jquery中checkbox全选失效的解决方法

    这篇文章主要介绍了jquery中checkbox全选失效的解决方法,需要的朋友可以参考下     如果你使用jQuery 1.6 ,代码if ( $(elem).attr(“checked”) ),将 ...

  9. ASP.NET Web Service中使用Session 及 Session丢失解决方法 续

    原文:ASP.NET Web Service中使用Session 及 Session丢失解决方法 续 1.关于Session丢失问题的说明汇总,参考这里 2.在Web Servcie中使用Sessio ...

随机推荐

  1. elasticsearch _bulk api

    https://www.elastic.co/guide/cn/elasticsearch/guide/current/bulk.htmlbulk API 允许在单个步骤中进行多次 create . ...

  2. 动态连通性问题——算法union-find

    问题定义:问题的输入是一列整数对,其中每个整数都表示一个某种类型的对象,一对整数p,q可以被理解为"p和q是相连的".我们假设“相连”是一种对等的关系. 这也意味着它具有: 1.自 ...

  3. 如果你的电脑想升级并且支持m.2接口

      便宜啊,赶紧入手.   文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论

  4. CXF框架构建和开发 Services

    Apache CXF 是一个开源的 Services 框架,CXF 帮助您来构建和开发 Services 这些 Services 可以支持多种协议,比如:SOAP.POST/HTTP.RESTful ...

  5. PHP + Smarty + MySQL

    Help me please! How to transfer data from table to smarty? Function: public function getBanLog() { g ...

  6. vector swap

    #include <iostream>#include <vector>#include <list>#include <deque> using na ...

  7. JAVA 基础编程练习题47 【程序 47 打印星号】

    47 [程序 47 打印星号] 题目:读取 7 个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*. package cskaoyan; public class cskaoyan47 { ...

  8. delphi7 treeview + 数据库 实现动态节点维护

    首先说下树节点对应的表的基本结构,必需要有的字段(节点编号,父节点编号,节点名称),其他字段根据你开发的需要添加从添加节点开始,一开始就取出表中最大节点编号,每次添加节点的时候,该节点编号增加1;添加 ...

  9. idea控制台中文乱码“淇℃伅”

    方法一:找到tomcat的conf目录下的logging.properties,将输出到控制台的编码改为GBK java.util.logging.ConsoleHandler.encoding = ...

  10. Web模糊测试:WFuzz的坑和快速入门

    转载自 FreeBuf.COM 首先说下我对wfuzz这个工具的简单介绍和理解.工具主要是做web模糊测试,最开始做fuzz我是自己写个脚本配合一些常用工具来测,后来看见这款工具因为是比较简单吧,学习 ...