Kafka 简要使用说明

参考文章

Kafka背景及架构介绍http://www.infoq.com/cn/articles/kafka-analysis-part-1

Apache kafka 工作原理介绍https://www.ibm.com/developerworks/cn/opensource/os-cn-kafka/

Kafka集群操作指南 http://blog.jobbole.com/99195/

kafka操作 http://www.cnblogs.com/wanghongjun/p/3647890.html

概念: Partition, consumer group, rebalance

在使用中, 如果要保证消费 Kafka 的数据和生产数据的次序严格一致,一个 Topic 只能设置了一个 Partition. 一个 partition 对应着磁盘的一个目录, 所以如果设置成一个 partition 要求数据的容量不能超过单机磁盘空间, 同时因为是单机读写, 吞吐能力会变差.

一个 Topic 可以被多个 consumer group 重复消费, 这些 consumer group 之间是完全隔离的. 一个 consumer group 可以包含一个或多个 consumer, 但消费者个数不应该多于 partition 个数. 如果一个consumer group包含多个 consumer, 它们将均分消费这个 topic.

一句话, 全序的配置方式是, 每个 topic 对应一个 partition, 每个 consumer group 也只能有一个 consumer.

Topic 除了可以设置 Partition 数量外, 还可以设置 ReplicationFactor 复制份数, Partition 是用来均分 topic 的数据量, Replica 是为每个 Partition 作拷贝的, 提高集群的可用性.

Partition/Replica和broker的关系是:

如果一个集群有三个 broker 服务器(分别为 120/121/122), Topic1 共分了6个 Partition, ReplicationFactor 设置为2, 针对每个 Partition 每个 broker 的作用是不同的, 可用命令kafka-topics.sh --describe 查看, 下面结果:

	Topic: Topic1	Partition: 0	Leader: 121	Replicas: 121,122
Topic: Topic1 Partition: 1 Leader: 122 Replicas: 122,120
Topic: Topic1 Partition: 2 Leader: 120 Replicas: 120,121
Topic: Topic1 Partition: 3 Leader: 121 Replicas: 121,120
Topic: Topic1 Partition: 4 Leader: 122 Replicas: 122,121
Topic: Topic1 Partition: 5 Leader: 120 Replicas: 120,122

rebalance: 如果 partition 数量不变(供给侧), consumer group下的 consumer 数量不变(消费侧), Kafaka 是不会做 rebalance 的,. 但如果发生如下情形, Kafaka 就要为 consumer 重新分配 partition :

  • partition 数量改变.
  • consumer group 中新增了 consumer.
  • Kafka broker 检测到某个 consumer 已经没有心跳, 相当于 consumer 数量减少

新建 group 如何消费完整的数据?

经常碰到一个场景是, 因为测试或其他需要, 我们想重新消费一个 topic 数据, 操作很简单, 为消费者设定一个新的 consumer group id, 同时设置 auto.offset.reset 为 earliest 即可.

为什么需要将 auto.offset.reset 特意设置为 earliest 呢? 因为, 默认的设置是 latest, 对于一个新的 group id, Kafka 在 ZooKeeper 中找不到它之前的 offset, 所有历史的数据都无法被消费, 只有新的数据才会被消费到; 设置为 earliest 就能从最早的 offset 开始消费, Kafka 默认会清空7天前的数据, 也就是说能消费最近7天的所有数据.

几个重要的属性

参数 含意 Kafka 缺省值 Kettle Kafka consumer推荐值
topic 要消费哪个topic的数据
group.id 消费者端自行设定一个group id
max consumption duration 消费者持续消费Kafka时长 180 000
session.timeout.ms 如果 broker 超过 session.timeout.ms 设定值还没有收到消费者的心跳汇报, 就认为消费者已经不在线, 之后 broker 安排做 consumer 之间的 rebalance 10 000 30 0000
heartbeat.interval.ms 消费者主动向 broker 汇报存活的间隔时长, 取值应该是<= session.timeout.ms的1/3 3 000 3 000
request.timeout.ms 消费者消费数据的请求超时值 30 000 400 000
auto.offset.reset 消费者如何读取 offset, 有三个取值 earliest, latest, none latest 按需
enable.auto.commit 如果需要 Kafaka 自动更新消费的 offset(周期性更新), 设置为 true, 如果由消费者自行更新的话, 可以设置为 false. 推荐使用自动提交, 可以结合 auto.commit.interval.ms 不断调优; 如果是手动提交的话, 通常仅仅在批次消费完毕后才提交, 吞吐量是很高, 但有可能在commit 之前系统崩溃, 就会造成大量数据的重复消费. true
auto.commit.interval.ms enable.auto.commit 开启情况下, 用来控制多久commit offset值, 间隔越大吞吐量越大, 但如果 commit 失败后重复消费的量也越大. 5 000

Kafka 监控的 GUI 工具(基于 Eclipse)

网址 http://www.kafkatool.com/features.html, 个人使用免费, 可以查看consumer的offset, 消息文本信息.

Kafka 简要使用说明的更多相关文章

  1. CSDN CODE平台,中国版Github简要使用说明

    CSDN CODE平台,中国版Github简要使用说明!(多图慎入)   楼主说 以前一直看到别人在用github发布自己的代码,各种牛逼,各种羡慕嫉妒恨.最后终于受不了了,也去注册了一个,注册到没什 ...

  2. kafka connect 使用说明

    KAFKA CONNECT 使用说明 一.概述 kafka connect 是一个可扩展的.可靠的在kafka和其他系统之间流传输的数据工具.简而言之就是他可以通过Connector(连接器)简单.快 ...

  3. CSDN CODE平台,中国版Github简要使用说明!(多图慎入)

    楼主说 以前一直看到别人在用github发布自己的代码,各种牛逼,各种羡慕嫉妒恨.最后终于受不了了,也去注册了一个,注册到没什么难度.然后就没有然后了... 完全看不懂,不知道怎么用. 一次偶然的机会 ...

  4. Kafka简要图解

    LinkedIn贡献的分布式消息系统 - 请参考这里 kafka集群:producer写入消息,consumer读取消息 消息分为不同主题,每个主题可以分为多个partition(并行),每个part ...

  5. supervisor简要使用说明

    安装方法(之一) pip install supervisor 主要组件 supervisord: 用于控制启用和退出子进程,记录子进程的标准输出和标准错误输出. supervisorctl: she ...

  6. JProfiler 简要使用说明

    1.简介 JProfiler是一个ALL-IN-ONE的JAVA剖析工具,可以方便地监控Java程序的CPU.内存使用状况,能够检查垃圾回收.分析性能瓶颈. 本说明文档基于JProfiler 9.2编 ...

  7. tftp 简要使用说明

    yum 安装:tftp    tftp-server (2)启动tftp   CentOS 6 service xinetd restart chkconfig tftp on     CentOS ...

  8. kafka知识点详解

    第一部分:kafka概述 一.定义(消息引擎系统) 一句话概括kafka的核心功能就是:高性能的消息发送与高性能的消息消费. kafka刚推出的时候是以消息引擎的身份出现的,它具有强大的消息传输效率和 ...

  9. 高吞吐量消息系统—kafka

    现在基本上大数据的场景中都会有kafka的身影,那么为什么这些场景下要用kafka而不用其他传统的消息队列呢?例如rabbitmq.主要的原因是因为kafka天然的百万级TPS,以及它对接其他大数据组 ...

随机推荐

  1. 洛谷CF264D Colorful Stones(子序列匹配,思维)

    洛谷题目传送门 神仙思维题. 对于两个字符串的匹配问题,似乎之前蒟蒻写的HAOI2010最长公共子序列题解中提到的建网格图模型是一种套路? 给一个稍微强一点的样例(把字母换成了ABC) AABCB B ...

  2. 【BZOJ4419】[SHOI2013]发微博(???)

    [BZOJ4419][SHOI2013]发微博(???) 题面 BZOJ 洛谷 题解 一道\(easy\),每个点维护一下要给周围的点加上多上,如果额外连了一个点进来就给他把标记减掉,如果删掉了一条边 ...

  3. poj2373 Dividing the Path (单调队列+dp)

    题意:给一个长度为L的线段,把它分成一些份,其中每份的长度∈[2A,2B]且为偶数,而且不能在某一些区间内部切开,求最小要分成几份 设f[i]为在i处切一刀,前面的满足要求的最小份数,则f[L]为答案 ...

  4. A.01.03-模块的输入—模拟量输入

    模拟量输入在使用过程中也十分常见,它在很多场合都应用到,但其用法又各有不同,下面列举一些常见的类型进行说明. 第一种为采用模拟口读取离散量的状态,如某开关可能有高.低.悬空三种状态均需能准确判断,这种 ...

  5. Zabbix使用netstat监控会话

    原文链接 TCP的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTAB:或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了攻击,或是是time_wait值比较高的话 ...

  6. Python基础之文件和目录操作

    1 .文件操作 1.1 文件打开和关闭 在python, 使用 open 函数, 可以打开一个已经存在的文件, 或者创建一个新文件. # 打开文件 f = open('test.txt', 'w') ...

  7. C# Winfrom 进程&多线程

    进程: 首先需要引用命名空间: using systemDiagnostics; 最简单的打开进程的方法,进程名并不是汉字: Process.start("calc");//cla ...

  8. C# Winform多窗体&&构造函数传值

    一.多窗体:三种打开窗体的状态: 最最基础的弹窗: //写在按钮的点击事件内: //实例需要弹出的窗口的类: Form2 f2 = new Form2(); f2.Show(); 1.弹窗窗口: // ...

  9. django(六)之ORM数据库操作

    https://www.cnblogs.com/haiyan123/p/7732190.html 一.ORM介绍 ORM——object relation mapping 映射关系: 表名 ----- ...

  10. NOIP 提高组 2014 联合权值(图论???)

    传送门 https://www.cnblogs.com/violet-acmer/p/9937201.html 题解: 相关变量解释: int n; int fa[maxn];//fa[i] : i的 ...