Apache Kafka 9.0
Documentation
http://kafka.apache.org/documentation.html
kafka 雖然沒限制 topics 的數量,但在機器數量少時 還是需要避免這種設計方式
因為kafka 是使用 file 的儲存方式,每一個topics 至少會產生1個目錄與2個檔案
kafka cluster 中的所有檔案數量是:
(topics * partition * replication-factor * 2) + (offsets * n)
100K topics 在 3台 kafka 主機裡,至少會產生:
(100K * 1 * 1 * 2) +(N) = 200k + N
每台 kafka 至少要產生 200K / 3 (約66666) 的檔案,超過一般linux fs.file-max = 65536 的設定,當然這還是有辦法解決
但在每個 partition 都需要相對應的 thread 來處理,這就比較麻煩了
100K 需要多少 thread 來處理才能夠即時回應,不造成timeout?
每台硬體都要有足夠的RAM 跟 夠好的 CPU時 也許可行, 但還是避掉這種設計會比較好
在設定檔有幾個需要注意的地方
server.properties
- broker.id 需特別注意編號 每台主機不可重覆
- 如果需要 delete topic,需增加 delete.topic.enable=true
producer.properties
- client.id 在每個 thread 不能重覆
consumer.properties
- group.id=PG 修改預設的group id
- offsets.storage=kafka 設定 offset 資料存在 kafka
ZooKeeper Cluster 設定
可參考
http://myjeeva.com/zookeeper-cluster-setup.html
修改 zookeeper.properties
設定 zookeeper cluster id
mkdir /tmp/zookeeper/
echo 1 > /tmp/zookeeper/myid (id 需特別注意編號,跟zookeeper.properties 需對應)