【从参数开始深入Kafka原理】系列旨在通过重要参数的介绍来深入了解Producer发消息的机制,本文作为本系列的第一节,先介绍Kafka参数的概览。
1. 参数分类
Kafka的参数按照组件分可以分成Broker,Topic,Producer,Client,Connect,Stream和Admin client,本系列主要介绍Broker,Topic,Producer,Client四个部分。
按照是否有默认值来分可以分为两类,一类是有默认值的,如果用户没有指定指,就会使用默认值,另一类是没有默认值的,因此用户必须要指定值,比如bootstrap.servers,key.serializer。
功利的角度也可以分为重要的和不重要的,重要的参数包括涉及到Kafka性能的,与kafka消息处理机制息息相关的,其他的很少能接触到的可以归为不重要的参数。本系列主要介绍重要的参数。
2. 重要参数概览
Kafka 官网提供参数有很多,光是producer的参数就有80多个左右,其中有很多参数我们平时是不会主动用到的,一些参数是比较重要的,我们学这些重要的就行。那么哪些参数是比较重要的呢?官网给出的答案是:
- client端:
The most important producer configurations are:
acks
compression
batch size
The most important consumer configuration is the fetch size.
Acks和producer的确认消息机制有关,compression和消息压缩机制有关,Batch size和producer批量发送的机制有关。fetch.size是consumer一次消费的消息数量。
- broker端:
The essential configurations are the following:
broker.id
log.dirs
zookeeper.connect
broker.id是指定broker的名字,如果不指定,zookeeper就随便叫了,因此存在冲突的可能。
log.dirs是消息存储的位置,之所以叫log.dirs是因为Kafka就是一个日志系统,存的消息被当作日志。
zookeeper.connect是zookeeper服务器的HOST和PORT,broke是用zookeeper来管理的,因此需要配置Zookeeper的地址
topic级别的参数也被单独列出来了,但是没有说什么设置重要。但是它说了broker的参数和topic的参数是有关系的:
Configurations pertinent to topics have both a server default as well an optional per-topic override. If no per-topic configuration is given the server default is used
A given server default config value only applies to a topic if it does not have an explicit topic config override.
broker(server)是全局的设置,对所有的topic有效,但是topic的参数是设置单个topic的,同样的参数如果设置了topic级别的,会覆盖broker的参数,如果不做特殊设置,它就会用broker设置的全局设置。
如果你不理解broker和topic之间的关系,为什么broker和topic会有相同的设置,可以查看文章Kafka术语白话
当然了解了这些官网推荐的参数后,还不能达到认识Kafka消息处理机制的效果,还需要了解以下参数:
系列结束后再来补充😛