官术网_书友最值得收藏!

1.4 服務(wù)端參數(shù)配置

在 1.2 節(jié)的 Kafka 安裝與配置的說(shuō)明中只是簡(jiǎn)單地表述了幾個(gè)必要的服務(wù)端參數(shù)而沒(méi)有對(duì)其進(jìn)行詳細(xì)的介紹,并且Kafka服務(wù)端參數(shù)(broker configs)也并非只有這幾個(gè)。Kafka服務(wù)端還有很多參數(shù)配置,涉及使用、調(diào)優(yōu)的各個(gè)方面,雖然這些參數(shù)在大多數(shù)情況下不需要更改,但了解這些參數(shù),以及在特殊應(yīng)用需求的情況下進(jìn)行有針對(duì)性的調(diào)優(yōu),可以更好地利用 Kafka為我們工作。下面挑選一些重要的服務(wù)端參數(shù)來(lái)做細(xì)致的說(shuō)明,這些參數(shù)都配置在$KAFKA_HOME/config/server.properties文件中。

1.zookeeper.connect

該參數(shù)指明broker要連接的ZooKeeper集群的服務(wù)地址(包含端口號(hào)),沒(méi)有默認(rèn)值,且此參數(shù)為必填項(xiàng)。可以配置為localhost:2181,如果ZooKeeper集群中有多個(gè)節(jié)點(diǎn),則可以用逗號(hào)將每個(gè)節(jié)點(diǎn)隔開,類似于 localhost1:2181,localhost2:2181,localhost3:2181這種格式。最佳的實(shí)踐方式是再加一個(gè)chroot路徑,這樣既可以明確指明該chroot路徑下的節(jié)點(diǎn)是為Kafka所用的,也可以實(shí)現(xiàn)多個(gè)Kafka集群復(fù)用一套ZooKeeper集群,這樣可以節(jié)省更多的硬件資源。包含 chroot 路徑的配置類似于 localhost1:2181,localhost2:2181,localhost3:2181/kafka這種,如果不指定chroot,那么默認(rèn)使用ZooKeeper的根路徑。

2.listeners

該參數(shù)指明broker監(jiān)聽客戶端連接的地址列表,即為客戶端要連接broker的入口地址列表,配置格式為 protocol1://hostname1:port1,protocol2://hostname2:port2,其中protocol代表協(xié)議類型,Kafka當(dāng)前支持的協(xié)議類型有PLAINTEXT、SSL、SASL_SSL等,如果未開啟安全認(rèn)證,則使用簡(jiǎn)單的PLAINTEXT即可。hostname代表主機(jī)名,port代表服務(wù)端口,此參數(shù)的默認(rèn)值為 null。比如此參數(shù)配置為 PLAINTEXT://198.162.0.2:9092,如果有多個(gè)地址,則中間以逗號(hào)隔開。如果不指定主機(jī)名,則表示綁定默認(rèn)網(wǎng)卡,注意有可能會(huì)綁定到127.0.0.1,這樣無(wú)法對(duì)外提供服務(wù),所以主機(jī)名最好不要為空;如果主機(jī)名是0.0.0.0,則表示綁定所有的網(wǎng)卡。與此參數(shù)關(guān)聯(lián)的還有advertised.listeners,作用和listeners類似,默認(rèn)值也為 null。不過(guò) advertised.listeners 主要用于 IaaS(Infrastructure as a Service)環(huán)境,比如公有云上的機(jī)器通常配備有多塊網(wǎng)卡,即包含私網(wǎng)網(wǎng)卡和公網(wǎng)網(wǎng)卡,對(duì)于這種情況而言,可以設(shè)置advertised.listeners參數(shù)綁定公網(wǎng)IP供外部客戶端使用,而配置listeners參數(shù)來(lái)綁定私網(wǎng)IP地址供broker間通信使用。

3.broker.id

該參數(shù)用來(lái)指定Kafka集群中broker的唯一標(biāo)識(shí),默認(rèn)值為-1。如果沒(méi)有設(shè)置,那么Kafka會(huì)自動(dòng)生成一個(gè)。這個(gè)參數(shù)還和meta.properties文件及服務(wù)端參數(shù)broker.id.generation.enable和reserved.broker.max.id有關(guān),相關(guān)深度解析可以參考6.5.1節(jié)的內(nèi)容。

4.log.dir和log.dirs

Kafka 把所有的消息都保存在磁盤上,而這兩個(gè)參數(shù)用來(lái)配置 Kafka 日志文件存放的根目錄。一般情況下,log.dir 用來(lái)配置單個(gè)根目錄,而 log.dirs 用來(lái)配置多個(gè)根目錄(以逗號(hào)分隔),但是Kafka并沒(méi)有對(duì)此做強(qiáng)制性限制,也就是說(shuō),log.dir和log.dirs都可以用來(lái)配置單個(gè)或多個(gè)根目錄。log.dirs 的優(yōu)先級(jí)比 log.dir 高,但是如果沒(méi)有配置log.dirs,則會(huì)以 log.dir 配置為準(zhǔn)。默認(rèn)情況下只配置了 log.dir 參數(shù),其默認(rèn)值為/tmp/kafka-logs。

5.message.max.bytes

該參數(shù)用來(lái)指定broker所能接收消息的最大值,默認(rèn)值為1000012(B),約等于976.6KB。如果 Producer 發(fā)送的消息大于這個(gè)參數(shù)所設(shè)置的值,那么(Producer)就會(huì)報(bào)出RecordTooLargeException的異常。如果需要修改這個(gè)參數(shù),那么還要考慮max.request.size (客戶端參數(shù))、max.message.bytes(topic端參數(shù))等參數(shù)的影響。為了避免修改此參數(shù)而引起級(jí)聯(lián)的影響,建議在修改此參數(shù)之前考慮分拆消息的可行性。

還有一些服務(wù)端參數(shù)在本節(jié)沒(méi)有提及,這些參數(shù)同樣非常重要,它們需要用單獨(dú)的章節(jié)或者場(chǎng)景來(lái)描述,比如 unclean.leader.election.enable、log.segment.bytes 等參數(shù)都會(huì)在后面的章節(jié)中提及。

主站蜘蛛池模板: 汉源县| 固阳县| 株洲县| 南和县| 沙雅县| 通渭县| 即墨市| 芒康县| 高密市| 孝昌县| 菏泽市| 中江县| 西藏| 温宿县| 古浪县| 宁阳县| 汉源县| 丰顺县| 青川县| 延津县| 平舆县| 定陶县| 克东县| 牙克石市| 民权县| 闽侯县| 清原| 洪江市| 弥勒县| 洛隆县| 利辛县| 麻城市| 信宜市| 郧西县| 长寿区| 泽普县| 繁峙县| 嘉黎县| 甘孜| 千阳县| 阿拉善盟|