服务端参数
- zookeeper.connect 该参数指明broker 要连接的ZooKeeper 集群的服务地址(包含端口号),没有默认值,且 此参数为必填工页。可以配置为localhost:2181 ,如果ZooKeeper 集群中有多个节点,则可以用逗 号将每个节点隔开,类似于localhost1 :2181,lo calhost2 :2181,l oca lhost3: 218 1 这种格式。最佳的实践方式是再加一个chroot 路径,这样既可以明确指明该chroot 路径下的节 点是为Kafka 所用的, 也可以实现多个Kafka 集群复用一套ZooKeeper 集群,这样可以节省更 多的硬件资源。包含chroot 路径的配置类似于localhost 1: 2181 , localhost2:2181, localhost3 : 2181/kafka 这种,如果不指定chroot,那么默认使用ZooKeeper 的根路径。
- listeners 该参数指明broker 监听客户端连接的地址列表,即为客户端要连接broker 的入口地址列表, 配置格式为prot ocoll : //hostname l:portl, protocol2://hostname2:port2 ,其中protocol 代表协议类型, Kafka 当前支持的协议类型有PLAINTEXT 、SSL 、SASL_SSL 等, 如果未开启安全认证,则使用简单的PLAINTEXT 即可。hostname 代表主机名, p。此代表服务 端口,此参数的默认值为null 。比如此参数配置为PLAIN TEXT: //198 .162. 0 . 2:9092 ,如 果有多个地址,则中间以逗号隔开。如果不指定主机名,则表示绑定默认网卡,注意有可能会 绑定到127.0.0.1 ,这样无法对外提供服务,所以主机名最好不要为空; 如果主机名是0.0.0.0, 则表示绑定所有的网卡。与此参数关联的还有adverti sed.listeners , 作用和listeners 类似,默认值也为null 。不过advertised.listeners 主要用于IaaS (Infrastructure as a Service )环境,比如公有云上的机器通常配备有多块网卡,即包含私网网卡和公网网卡,对于 这种情况而言,可以设置advertised.listeners 参数绑定公网IP 供外部客户端使用,而 配置listeners 参数来绑定私网IP 地址供broker 间通信使用。
- broker.id 该参数用来指定Kafka 集群中broker 的唯一标识,默认值为1 。如果没有设置,那么Kafka 会自动生成一个。这个参数还和meta.properties 文件及服务端参数broker.id.geηeration. enable 和reser ved . broker .ma x .id 有关,相关深度解析可以参考6.5.1 节的内容。
- log.dir 幸日log . dirs Kafka 把所有的消息都保存在磁盘上,而这两个参数用来配置Kafka 日志文件存放的根目 录。一般情况下, log . dir 用来配置单个根目录,而log . dirs 用来配置多个根目录(以逗 号分隔〉,但是Kafka 井没有对此做强制性限制,也就是说, log.dir 和log.dirs 都可以 用来配置单个或多个根目录。log.dirs 的优先级比log.dir 高,但是如果没有配置 l og . dirs ,则会以log . dir 配置为准。默认情况下只配置了log . dir 参数,其默认值为 /tmp/kafka-logs 。
- message.max.bytes 该参数用来指定broker 所能接收消息的最大值,默认值为1000012 (B ),约等于976.6阻。 如果Producer 发送的消息大于这个参数所设置的值,那么( Producer 〉就会报出 RecordTooLargeException 的异常。如果需要修改这个参数,那么还要考虑max.request . size (客户端参数)、max.message.bytes (topic 端参数)等参数的影响。为了避免修改此参数 而引起级联的影响,建议在修改此参数之前考虑分拆消息的可行性。