一、硬件配置选择
1.1 峰值计算
1.2 购买多少服务器
1.3 磁盘选择
1.4 内存选择
kafka的内存 = 堆内存(kafka内部配置)+ 页内存(服务器内存)
如果生产环境数据量很大,可以设置为10G-15G
查看kafka GC情况
YGC,年轻代GC次数,这里是36次可以接受
查看堆内存的使用情况
这里能看到总量是2G,使用了19.45%
1.5 CPU选择
注意:kafka这三个线程比较重要,消耗线程较多。但还有其他很多别的线程。
假设你买了32核心CPU,一般要预留给这三个线程24个,留给其他任务8个。
那么图里的数字就要按比例改改了:
num.io.thread = 24 * 50% = 12
其他的以此类推
1.6 网络选择
注意:通常说的百兆带宽单位是bit, 换算成字节MB也就12.5M/s
因此要选择千兆带宽。
二、生产者调优
2.1 kafka生产者核心参数配置
【生产者全流程图】
核心参数包括:
max.in.flight.requests.per.connection 要和 enable.idempotence幂等性 搭配使用,能解决【生产者全流程图】中 sender线程部分 到 kafka集群 这中间的乱序问题。
如果不开启幂等性,max.in.flight.requests.per.connection就只能设置为1了。
2.2 生产者如何提高吞吐量
2.3 数据可靠性
2.4 数据去重
只开启幂等性,只能保证单分区单会话内去重;
想要完全去重,需要加上“事务”
2.5 数据有序
2.6 数据乱序
三、Broker调优
3.1 Broker更新模式介绍
- read-only: broker重启后才能生效
- per-broker: 动态生效(对每一个broker),无需重启
- cluster-wide:整个集群范围的动态生效
3.2 Broker核心参数配置
【kafka broker整体工作流程图】
3.3 服役新节点/退役旧节点
3.4 增加分区
3.5 增加副本因子
不能通过命令行添加,只能通过json文件增加