Apache Kafka 12個最佳實踐
Apache Kafka,也被稱為Kafka,是一個企業級的訊息傳遞和流媒體代理系統。Kafka是一項偉大的技術,可用於架構和建立實時資料管道和流媒體應用程式。
我強烈建議架構師們熟悉Kafka生態系統,特別是Kafka叢集、代理、主題、分割槽、消費者、生產者和偏移的概念。
本文將強調我在使用Kafka時學到的12條重要經驗:
- 為了實現訊息的並行處理,在一個主題中建立多個分割槽。這使得多個消費者能夠平行地處理訊息。在一個消費者組中,每個分割槽只能被一個消費者消費。因此,如果一個消費者組中有多個消費者,他們可以消費不同分割槽的訊息。因此,如果我們想使訊息的消費並行化,就在一個主題中建立多個分割槽。
- 每條訊息都會傳給訂閱了某個主題/分割槽的每個消費者組,但在一個組內,它只傳給一個消費者。因此,所有訂閱了主題的消費者組都會得到訊息,但在一個消費者組內只有一個消費者會得到一個分割槽的訊息。因此,如果你想把訊息廣播給多個消費者,請給他們分配不同的消費者組。
- Kafka中訊息大小的預設設定是1MB。訊息在被傳遞到Kafka之前可以被壓縮。為了在一個主題中儲存更多的資料,我們可以在多個伺服器上建立多個分割槽
- 確保需要釋出或消費的訊息是可序列化的。要特別注意日期時間和巢狀結構。
- 使用函式 seek(TopicPartition, long) 來指定新的位置。
- 如果我們在設計一個應用程式時,訊息的順序很重要,我們希望訊息的順序得到保證,那麼在所有的訊息中使用相同的Partition Id。原因是,排序保證適用於分割槽級別。因此,如果你在一個主題中有多個分割槽,你需要確保你被要求出現的訊息有相同的分割槽ID。所有被推送到一個主題的分割槽中的訊息,如果它們有相同的分割槽ID,就會被正確排序。
- 如果我們想在所有的主題中進行全域性排序,請使用單個分割槽的主題。
- 保持你的日誌可管理,並定期監測磁碟空間。
- 為了設計一個持久的系統,確保在Kafka設定中設定一個高複製係數。Kafka會在多個伺服器上覆制每個主題的分割槽的日誌。當一個伺服器發生故障時,這允許自動故障切換到這些副本,因為在故障的情況下,訊息仍然可用。我們可以在每個主題的基礎上設定複製因子。另外,我們可以將生產者的批次大小設定為1。這將確保每條訊息都儲存在磁碟上,而且訊息不會被分批重新整理。這將影響效能。對於持久和高可用的系統,有高主題複製是很重要的。通常情況下,為了實現可靠的故障轉移,建議至少有3個broker伺服器。
- 如果我們想刪除舊的訊息,可以使用壓縮的主題,當新的事件釋出到主題時,一個鍵的舊事件就會被刪除。
- 為了保證Kafka的安全,可以使用TLS客戶端證照,對訊息進行加密,並新增使用者許可權。
- 我們還可以使用Java DSL或Kafka的類似SQL的流語言來建立和處理儲存在Kafka中的資料流。
相關文章
- Apache Kafka最佳化部署的十大最佳實踐ApacheKafka
- Kafka最佳實踐Kafka
- 使用Scala開發Apache Kafka的TOP 20大最佳實踐!ApacheKafka
- Apache Kafka在大型應用中的20項最佳實踐ApacheKafka
- Apache Airflow十條最佳實踐ApacheAI
- 最佳實踐|Apache Pulsar 在拉卡拉的技術實踐Apache
- Google:12 條 Golang 最佳實踐Golang
- 最重要的 12個 J2EE 最佳實踐
- 12個最重要的J2EE最佳實踐
- Apache Kafka零複製最佳化原理ApacheKafka
- Go 語言 12 條最佳實踐Go
- 24個javascript最佳實踐JavaScript
- 7 個 jQuery 最佳實踐jQuery
- webService幾個最佳實踐Web
- Apache Kafka的4個混沌工程實驗 | IDCFApacheKafka
- springboot+kafka+郵件傳送(最佳實踐)Spring BootKafka
- 7個API安全最佳實踐API
- WebGPU 的幾個最佳實踐WebGPU
- 20 個 OpenSSH 最佳安全實踐
- 十個JDBC的最佳實踐JDBC
- Apache Kafka 程式設計實戰ApacheKafka程式設計
- 8個雲成本最佳化的最佳實踐
- 使用GitHub的十個最佳實踐Github
- 5個async/await最佳實踐AI
- 10個專案文件最佳實踐
- 10 個專案文件最佳實踐
- 最佳實踐|從Producer 到 Consumer,如何有效監控 KafkaKafka
- Apache Flink 在小米的穩定性最佳化和實踐Apache
- 有效的微服務:10 個最佳實踐微服務
- 有效尋源的4個最佳實踐
- 10個Spring Boot效能最佳實踐Spring Boot
- Kafka 入門與實踐Kafka
- Apache Kafka教程--Kafka新手入門ApacheKafka
- 開源Apache KafkaApacheKafka
- Pika最佳實踐
- Flutter 最佳實踐Flutter
- MongoDB 最佳實踐MongoDB
- 《.NET最佳實踐》