1.Broker端配置详解
1.1 必配参数
1.2 监听器相关参数
1.3 主题相关参数
1.4 线程相关参数
1.5 压缩相关参数
生产中,一般Kafka会配置压缩以减少磁盘占用。
附:Facebook Zstandard官网提供的压缩算法对比结果:
1.6 ZooKeeper相关参数
ZK相关的参数一般不做修改。默认即可。
1.7 重平衡与选举相关参数
重平衡相关参数需要根据实际需求进行调整,原理类似于HDFS中的重平衡。
1.8 日志刷写相关参数
在Linux系统中,当我们把数据写入文件系统之后,其实数据在操作系统的pagecache里面,并没有刷到磁盘上。如果操作系统挂了,数据就丢失了。一方面,应用程序可以调用fsync这个系统调用来强制刷盘,另一方面,操作系统有后台线程,定时刷盘。频繁调用fsync会影响性能,需要在性能和可靠性之间进行权衡。实际上,官方不建议通过上述的三个参数来强制写盘,认为数据的可靠性通过replica来保证,而强制flush数据到磁盘会对整体性能产生影响。
Kafka的持久性并非要求同步数据到磁盘,因为问题节点都是从副本中恢复数据。这样刷盘依赖操作系统及Kafka的后台刷盘机制。这样的好处是:无需调优、高吞吐量、低延时和可全量恢复。
操作系统一般默认30s刷盘一次。
1.9 日志保留相关参数
日志保留相关参数需要根据具体的生产实际及磁盘容量与数据量进行调整。
1.10 日志滚动切片相关参数
日志滚动与切片参数建议根据生产实际进行调整。
1.11 元数据相关参数
元数据相关参数一般不做调整。
1.12 副本相关参数
副本相关参数一般不做调整。
1.13 offset相关参数
offset内部主题相关参数,一般保持默认即可。
1.14 消息相关参数
2.Topic级别配置详解
topic级别的参数,一般都在broker中对应有默认配置,但是也可以对单独的topic进行设置,可以在topic创建之初使用–config来进行指定,也可以在创建完成之后再进行修改。
以下是比较重要的topic级别的参数配置。
2.1 日志清理压缩相关参数
2.2 日志刷写相关参数
2.3 索引相关参数
2.4 消息、副本与选举相关参数
2.5 日志保留与滚动相关参数
3.Producer端配置详解
Producer负责向服务器发送数据,在实际生产中,更多的是使用API作为Producer端进行数据发送。
以下是Producer端中比较重要的配置参数。
3,1 序列化、分区器、拦截器相关参数
3.2 集群地址与压缩相关参数
3.3 批处理相关参数
3.4 TCP缓冲相关参数
3.5 消息有序性相关参数
3.6 事务相关参数
4.Consumer端配置详解
Consumer对数据进行消费,一般通过流处理框架对Kafka中的数据进行消费处理,因此,Consumer端是否消费正常对于数据处理显得尤为重要。
以下是Consumer端的重要参数。
4,1 必配参数
4.2 反序列化、拦截器相关参数
4.3 自动提交offset参数
4.4 拉取数据相关参数
4.5 分区分配策略参数
4.6 TCP缓冲及其他参数
|