我們在「【🔒 Message Queue - Kafka】不斷的試誤…, 用Docker來嘗試安裝Kafka」有分享過如何透過docker來架設kafka, 那麼在產品化的階段, 我們可能會預先規劃主題(topic)要有多少個partitions…等的配置, 基於一鍵啟動懶人包的原則, 我們希望按下「docker compose up -d」時就能夠將這些鎖事給完成, 所以今天的目標我們會做一個容器專門來建立我們預先規劃好的主題, 教學的大綱如下:
真心希望您能夠一步步的跟著我們學習, 讓我們一起掌握kafka這門串流技術, 一起打造即時的應用系統, 符合什麼都追求效率的時代。
今天假設我們預期有一個主題叫做「file-stream」, 其中我們預期partitions跟repicas都是1個, 那我們可以怎麼做呢?
關於主題名稱的命名重點請參考這篇「Apache Kafka: Topic Naming Conventions」裡面有詳細的介紹命名的結構、邏輯以及建議, 一個好的命名規範能夠讓我們一眼就看出含意, 所以非常推薦從中獲取重要的命名規範知識。
這邊我們會透過kafka的「kafka-topics.sh 」這隻腳本來進行, 因此我們基於此腳本會在設計一個「create-topic.sh」來讓容器(container)執行,並期望這隻建立主題的腳本具備「檢查主題」與「建立多主題」的功能, 讓我們先來看一下流程圖。
腳本如下:
對於此容器來說, 只需要將上述的腳本掛入並執行即可, 那麼編排上會多一個「kafka-create-topic」的服務。
docker compose up -d
就讓我們打開瀏覽器: http://localhost:8080/ui/clusters/local/all-topics 來看看主題(topic)是否建立成功吧!
這邊阿Han先請您下載「kafka-init-topic-container懶人包」, 下載之後我們有4個任務要給您, 請您試著透過腳本來完成以下的任務:
容器化真的大幅度減少我們系統上的複雜度, 我們只要學會Docker的安裝與使用, 其他的部份就只要找好我們需要的Image並配置相關的參數, 就能夠將一個複雜的系統進行打包, 送到目的端之後,只要照著啟動命令直接啟動即可執行一個完整的系統了! 這讓開發環境與生產環境減少差異,避免因為環境問題導致除錯上的耗時, 因此在這邊會非常推薦您閱讀「【Docker 容器化】初探微服務時代的虛擬化技術」。