Kafka 筆記 – Scaling Study
前言
Kafka 本身是個能迅速把大量資訊存下來的一個設計
這邊筆記一下關於 Kafka 的 Cluster 本身如果要 Scaling 的話,其可行性。
研究依託 Aws 的 MSK (Aws 的 Kafka),如果您有 Aws 帳戶,依其入門文件即可建立 Kafka Cluster。
先從 FAQ 來看
在 MSK 的 FAQ 內提到可擴展的是 每台 Broker 磁碟大小、每台 Broker 的 size 、 Broker 數量,如下截圖,至於最後一個問答是指重新平衡 partition,這個適用於 Cluster 有調整之後的任何情況,應該不是只限定於擴展後。
增加 磁碟大小
- 步驟可參考 Scaling up broker storage
- 只能增不能減
- 非減不可,則考慮 migration cluster 到比較小的 (類似砍掉重練的意思啦~ 只是先重練一個小的,之後砍掉大的)
改變 Broker 硬體規格 (也就是垂直縮放)
- 步驟可參考Updating the broker type
- 縮放都可以。
增加 Broker 數量
- 增加很簡單很簡單
- BUT.. 新增後, 要自己 reassign partition
新增步驟參考文件
執行上述步驟, Broker 固然會應加數量沒錯,但這時候新增的 N 個 Broker 是沒有作用的,必須執行進一步的 reassign partition (rebalance),才能使新的 Broker 一起加入工作。
rebalance 參考文件
這邊第 2. 點的 Aws 文件其實沒啥大用,因為他也只是叫你去執行 Kafka 的 kafka-reassign-partitions.sh 這隻 script,所以,如果你還想進一步了解,建議你搜尋 kafka-reassign-partitions.sh 這個 script。
那要在哪裡執行這個 kafka-reassign-partitions.sh 呢?
以 Aws MSK 來說,就是要在某台 EC2 上執行,這台 EC2 跟 MSK 要在相同 VPC 內,如果你是按照上面入門文件建立 Kafka 的話,一定有這麼一台 EC2 可供你執行。
以其他 Kafka Cluster 來說,總之就是在某台可以存取 Kafka Cluster 的 Linux 上執行囉~
減少 Broker 數量
沒有現成 API,要自己手工做,步驟大致是:
- 假設有 M 台,要縮減為 N 台。
- 先 reassign partition,把資料塞到其中 N 個 broker 內(這是做得到的)
- 要停掉的 borker 不再放資料過去,也不要留在 Zookeeper 名單內
- 完成後,再關閉不要的 broker。
手工減數量參考資料
- Expanding your cluster
- How to delete Kafka brokers machines from kafka cluster
- Kafka broker auto scaling
- Kafka 數據遷移(增加節點和減少節點均適用)
- Can you scale DOWN the number of Kafka brokers in an Amazon MSK cluster?
增減 Partition 數量
只能增,不能減,步驟可以參考 調整 Kafka 中 Topic 的 Partition 數量,原則上應該是用 kafka-topics.sh 這隻 script 來做
參考資料
- 調整 Kafka 中 Topic 的 Partition 數量
- Apache Kafka doesn’t support decreasing the partition number
- 為什麼Kafka中的分區數只能增加不能減少?
- Kafka 設計思考 — Partition & Replication
- Kafka partition的数量问题
- kafka集群选择多少topic和partition最合适
小總結
- 增加容易,減少困難 -> 反而直接弄一個新的 Kafka,然後再移轉過去比較簡單(所有 Kafka 相關教學、文件也都這麼教)
- 唯一可以方便升降的,大概只有 AWS 的 Borker 本身機器的規格,其垂直縮放很簡單,其餘 舉凡 Broker Storage、Broker 數量、Partition 數量等,都是增加還算簡單,減少很麻煩。
- reassign partition 是個常用且實用的動作,應該要熟悉它。
其他雲端 Kafka 服務
其中對於個人開發者,想簡單嘗試 Kafka 的話 Cloudkafka 可能可以考慮,他有免費方案,可提供個人開發者串接跟測試。當然由於免費方案開出來的機器是共用資源的,因此不要想在上面測試高吞吐量就是了。
其他參考資料
Leave a Reply