【译】Kafka最佳实践 / Kafka Best Practices
本文来自于DataWorks Summit/Hadoop Summit上的《Apache Kafka最佳实践》分享,里面给出了很多关于Kafka的使用心得,非常值得一看,今推荐给大家。
硬件配置

JBOD: Just bunch of disks,就是普通的一堆磁盘组成的集群
OS调优
磁盘调优
基本监控
如何监控备份不足情况发生?
JMX指标:kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions
- broker挂了
- controller问题
- zk问题
- 网络问题
- 调整ISR参数,比如 min.insync.replica和replica.lag.time.max.ms, num.replica.fetchers
- 增加broker数
controller问题
- ISR抖动
- zk性能问题
- Long GC
- 网络问题
- kafka.controller:type=KafkaController,name=ActiveControllerCount应该=1
- 监控LeaderElectionRate
unclean leader选举
集群评估(sizing)
- 单broker上的分区数<2000
- 控制分区大小,不要超过25GB
- 磁盘使用率<60%
- 网络使用率<75%
- 确保topic分区分布尽量均匀
- 确保broker节点不会磁盘、带宽耗尽
broker监控
topic评估
- 至少和最大的消费者组中consumer的数量一致
- 分区不要太大,小于25GB
- 要考虑未来业务的扩容
选择分区
份额控制
Kafka producer
- batch.size: 越大,TPS越大,延时也越大
- linger.ms: 越大,TPS越大,延时也越大
- max.in.flight.requests.per.connection: 增加TPS,关乎消息接收顺序
- compression.type: 设置压缩类型,提升TPS
- acks: 设置消息持久性级别
性能调优
- 增加用户线程
- 增加batch size
- 使用多个producer实例
- 添加分区
监控指标
- batch-size-avg
- compression-rate-avg
- waiting-threads
- buffer-available-bytes
- record-queue-time-max
- record-send-rate
- records-per-request-avg
Kafka Consumer
- 分区数不够
- OS缓存命中太低,分配更多页缓存
- 处理逻辑过重
- fetch.min.bytes、fetch.max.wait.ms
- max.poll.interval.ms
- max.poll.records
- session.timeout.ms
监控
- 分析consumer,是GC问题还是consumer hang住了
- 增加consumer instances
- 增加分区数
无数据丢失配置
- retries = MAX
- acks=all
- max.in.flight.requests.per.connection = 1
- 关闭producer
- replication factor >= 3
- min.insync.replicas = 2
- 关闭unclean leader选举
- 关闭auto.offset.commit
- 消息被处理后提交位移
【译】Kafka最佳实践 / Kafka Best Practices的更多相关文章
- Kafka最佳实践
一.硬件考量 1.1.内存 不建议为kafka分配超过5g的heap,因为会消耗28-30g的文件系统缓存,而是考虑为kafka的读写预留充足的buffer.Buffer大小的快速计算方法是平均磁盘写 ...
- window下Kafka最佳实践
Kafka的介绍和入门请看这里kafka入门:简介.使用场景.设计原理.主要配置及集群搭建(转) 当前文章从实践的角度为大家规避window下使用的坑. 1.要求: java 6+ 2.下载kafka ...
- 【iOS10 SpeechRecognition】语音识别 现说现译的最佳实践
首先想强调一下“语音识别”四个字字面意义上的需求:用户说话然后马上把用户说的话转成文字显示!,这才是开发者真正需要的功能. 做需求之前其实是先谷歌百度一下看有没有造好的轮子直接用,结果真的很呵呵,都是 ...
- 【转】优化Web程序的最佳实践
自动排版有点乱,看着蛋疼,建议下载中文PDF版阅读或阅读英文原文. Yahoo!的Exceptional Performance团队为改善Web性能带来最佳实践.他们为此进行了 一系列的实验.开发了各 ...
- 大规模使用 Apache Kafka 的20个最佳实践
必读 | 大规模使用 Apache Kafka 的20个最佳实践 配图来源:书籍<深入理解Kafka> Apache Kafka是一款流行的分布式数据流平台,它已经广泛地被诸如New Re ...
- Apache Kafka: 优化部署的10个最佳实践
原文作者:Ben Bromhead 译者:江玮 原文地址:https://www.infoq.com/articles/apache-kafka-best-practices-to-opti ...
- Kafka在大型应用中的 20 项最佳实践
原标题:Kafka如何做到1秒处理1500万条消息? Apache Kafka 是一款流行的分布式数据流平台,它已经广泛地被诸如 New Relic(数据智能平台).Uber.Square(移动支付公 ...
- Spring Boot 自定义kafka 消费者配置 ContainerFactory最佳实践
Spring Boot 自定义kafka 消费者配置 ContainerFactory最佳实践 本篇博文主要提供一个在 SpringBoot 中自定义 kafka配置的实践,想象这样一个场景:你的系统 ...
- JavaScript初学者应知的24条最佳实践(译)
原文:24 JavaScript Best Practices for Beginners 译者:youngsterxyf (注:阅读原文的时候没有注意发布日期,觉得不错就翻译了,翻译到JSON.pa ...
随机推荐
- 6 ways to import data into SQL Server
I’m going to go over some methods to import data from text files into SQL Server today. The particul ...
- VMware快照的工作原理
VMware中的快照是对VMDK在某个时间点的“拷贝”,这个“拷贝”并不是对VMDK文件的复制,而是保持磁盘文件和系统内存在该时间点的状态,以便在出现故障后虚拟机能够恢复到该时间点.如果对某个虚拟机创 ...
- 【Python】【Flask】Flask 后台发送html页面多种方法
1.使用模板: @app.route('/') def home(): return render_template("homepage.html")#homepage.html在 ...
- QWSLock::up(): Invalid argument
运行qt时,点击QMessageBox的确定按钮是出现错误QWSLock::up(): Invalid argument, QWSLock::down(): Invalid argument,这个是q ...
- 移动端微信应用开发总结(function ajax meta)
关键字:document function ajax jquery html5 meta 微信应用开发时,特意把各个容易混淆的知识点和要点,梳理后记录下来,也分享给各位.有问题还请多指正. 一 文档载 ...
- SpringBoot系列一:SpringBoot的产生
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 长期以来 Java 的开发一直让人所诟病: ·Java 项目开发复杂度极其高: · Java 项目的维护非常困难: · 在云时代 ...
- MySQL中ALTER ,CHANGE , MODIFY
ALTER TABLE project_list CHANGE COLUMN descriptionofproj proj_desc VARCHAR(100), CHANGE COLUMN contr ...
- Cisco 3550配置DHCP中继代理
实验环境: 1.配置两个VLAN 10 和 VLAN 20 VLAN 10 IP地址设置:192.168.10.1 255.255.255.0 (192.168.10.1是VLAN 10网关 ...
- R语言ggplot2 简介
ggplot2是一个绘制可视化图形的R包,汲取了R语言基础绘图系统(graphics) 和l attice包的优点,摒弃了相关的缺点,创造出来的一套独立的绘图系统: ggplot2 有以下几个特点: ...
- 通过NAT转发实现私网对外发布信息
我们可以在防火墙的外部网卡上绑定多个合法IP地址,然后通过ip映射使发给其中某一个IP地址的包转发至内部某一用户的WWW服务器上,然后再将该内部WWW服务器响应包伪装成该合法IP发出的包. 具体的IP ...