Kafka核心技术与实战
胡夕
人人贷计算平台部总监,Apache Kafka Contributor
立即订阅
8408 人已学习
课程目录
已完结 46 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 为什么要学习Kafka?
免费
Kafka入门 (5讲)
01 | 消息引擎系统ABC
02 | 一篇文章带你快速搞定Kafka术语
03 | Kafka只是消息引擎系统吗?
04 | 我应该选择哪种Kafka?
05 | 聊聊Kafka的版本号
Kafka的基本使用 (3讲)
06 | Kafka线上集群部署方案怎么做?
07 | 最最最重要的集群参数配置(上)
08 | 最最最重要的集群参数配置(下)
客户端实践及原理剖析 (14讲)
09 | 生产者消息分区机制原理剖析
10 | 生产者压缩算法面面观
11 | 无消息丢失配置怎么实现?
12 | 客户端都有哪些不常见但是很高级的功能?
13 | Java生产者是如何管理TCP连接的?
14 | 幂等生产者和事务生产者是一回事吗?
15 | 消费者组到底是什么?
16 | 揭开神秘的“位移主题”面纱
17 | 消费者组重平衡能避免吗?
18 | Kafka中位移提交那些事儿
19 | CommitFailedException异常怎么处理?
20 | 多线程开发消费者实例
21 | Java 消费者是如何管理TCP连接的?
22 | 消费者组消费进度监控都怎么实现?
深入Kafka内核 (5讲)
23 | Kafka副本机制详解
24 | 请求是怎么被处理的?
25 | 消费者组重平衡全流程解析
26 | 你一定不能错过的Kafka控制器
27 | 关于高水位和Leader Epoch的讨论
管理与监控 (12讲)
28 | 主题管理知多少?
29 | Kafka动态配置了解下?
30 | 怎么重设消费者组位移?
31 | 常见工具脚本大汇总
32 | KafkaAdminClient:Kafka的运维利器
33 | Kafka认证机制用哪家?
34 | 云环境下的授权该怎么做?
35 | 跨集群备份解决方案MirrorMaker
36 | 你应该怎么监控Kafka?
37 | 主流的Kafka监控框架
38 | 调优Kafka,你做到了吗?
39 | 从0搭建基于Kafka的企业级实时日志流处理平台
高级Kafka应用之流处理 (3讲)
40 | Kafka Streams与其他流处理平台的差异在哪里?
41 | Kafka Streams DSL开发实例
42 | Kafka Streams在金融领域的应用
结束语 (1讲)
结束语 | 以梦为马,莫负韶华!
特别放送 (2讲)
加餐 | 搭建开发环境、阅读源码方法、经典学习资料大揭秘
用户故事 | 黄云:行百里者半九十
Kafka核心技术与实战
登录|注册

38 | 调优Kafka,你做到了吗?

胡夕 2019-08-29
你好,我是胡夕。今天我要和你分享的主题是:如何调优 Kafka。

调优目标

在做调优之前,我们必须明确优化 Kafka 的目标是什么。通常来说,调优是为了满足系统常见的非功能性需求。在众多的非功能性需求中,性能绝对是我们最关心的那一个。不同的系统对性能有不同的诉求,比如对于数据库用户而言,性能意味着请求的响应时间,用户总是希望查询或更新请求能够被更快地处理完并返回。
对 Kafka 而言,性能一般是指吞吐量和延时。
吞吐量,也就是 TPS,是指 Broker 端进程或 Client 端应用程序每秒能处理的字节数或消息数,这个值自然是越大越好。
延时和我们刚才说的响应时间类似,它表示从 Producer 端发送消息到 Broker 端持久化完成之间的时间间隔。这个指标也可以代表端到端的延时(End-to-End,E2E),也就是从 Producer 发送消息到 Consumer 成功消费该消息的总时长。和 TPS 相反,我们通常希望延时越短越好。
总之,高吞吐量、低延时是我们调优 Kafka 集群的主要目标,一会儿我们会详细讨论如何达成这些目标。在此之前,我想先谈一谈优化漏斗的问题。

优化漏斗

优化漏斗是一个调优过程中的分层漏斗,我们可以在每一层上执行相应的优化调整。总体来说,层级越靠上,其调优的效果越明显,整体优化效果是自上而下衰减的,如下图所示:
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Kafka核心技术与实战》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(12)

  • 诗泽
    请问最后这个例子中的测试 Console Consume是怎样污染缓存页的?是因为它读取了比较老的数据,使得新数据被写入磁盘导致的吗?

    作者回复: 是的

    2019-08-29
    1
    3
  • Nic-愛
    老师,最近遇到一个问题,在kafka加入SASL ACL中,生产的时候出现需要给事务ID赋权,那有个问题在有多生产者的情况下,同一主题下的事务ID能一样吗?如果ID不能一样,那我在加入kafka的时候每次都需要赋权怎么办

    作者回复: 如果你并没有共享KafkaProducer实例,那么每个生产者最好设置成不同的transactional.id。2.0版本开始支持ACL前缀,可以用kafka-acls.sh --resource-pattern-type prefixed 一试

    2019-08-30
    2
  • 诗泽
    如果将kafka 部署到k8s 中,因为k8s 的节点都是禁用swap 的,所以文中提到的swappiness 设置也就失效了
    2019-08-29
    2
  • lmtoo
    怎么查询linux是否开启了atime

    作者回复: mount -l,默认是开启的,如果发现noatime则是关闭的。Linux 2.6.30引入了relatime。有了relatime,atime的更新时机被缩小了,如果atime=mtime就不会被更新了。

    2019-08-29
    1
    2
  • 外星人
    你好,一个broker建议最多存放多少个topic partition啊?这个个数和broker 的性能有啥关系吗?

    作者回复: 没有一定之规。不过据官网文章,单broker最多能承受2000个分区,这个和性能还是有很大关系的。毕竟分区数越多,物理IO性能就可能越差

    2019-09-01
    1
    1
  • wgcris
    你好,请教您一个问题,关于leader均衡,如果集群规模比较大,一次leader均衡会有上千个partition要进行leader切换,这会导致客户端很长时间不可用,目前针对这个场景有没有一些比较成熟的解决方案?

    作者回复: 关闭自动leader均衡,手动调整leader迁移是目前比较好的做法

    2019-11-07
    1
  • godtrue
    没有kafka性能调优的经验,不过性能调优的思路是一致的。优化漏斗很形象,大部分调优主要在应用层,再深一点会到框架层,此时就需要对框架有很好的掌握啦!再深一点就到JVM了,这里主要是看内存空间分配是否合理,垃圾收集器是否正确选择。系统层调优,貌似没做过,这一层就必须对操作系统非常了解了。
    万变不离其宗,提高性能的思路就那么几种:
    1:使用更快的硬件,比如:内存
    2:使用合适的数据结构
    3:异步化
    4:并行化
    5:异步化和并行化,其实是在出现速度差的情况下,充分利用更快的组件的思路。
    2019-09-24
  • ban
    老师,为什么测试 Console Consume读取比较老的数据,新的数据为什么会写入磁盘?这里不懂,Consume只是读取怎么会影响到写入

    作者回复: 操作系统会被最近读取的page缓存起来,所以会“污染”页缓存

    2019-09-14
    1
  • 外星人
    怎么知道是读物理盘?还是读页缓存呢?

    作者回复: 读物理磁盘,磁盘读通常是很好的

    2019-08-30
    1
  • JK
    关于zero copy那块,是不是仅针对consumer端而言呢?还是说,producer版本与broker不一致时,也会降低性能?

    作者回复: "producer版本与broker不一致时,也会降低性能" --- 不会的

    2019-08-29
  • 许童童
    没有调优过Kafka ,但学习了老师今天的优化漏斗,感觉收获挺大,优化漏斗是否可以反过来变成优化金字塔。有些提升吞吐量的参数和降低延迟的参数是冲突的,这就要看业务更注重哪一块的性能了,一般用Kafka都是追求大吞吐量。
    2019-08-29
  • Dovelol
    老师好,页缓存指的是操作系统的PageCache吗?想请教下为什么给kafka预留的页缓存最好是一个日志段的大小,我的理解是一个日志段对应一个topic的partition,往往kafka都是及时读写的,所以是不是页缓存的大小和吞吐量有关系,也就是每秒的消费数据大小,最好保证消费的时候刚刚发送的数据还在页缓存中。
    2019-08-29
收起评论
12
返回
顶部