kafka系列七、kafka核心配置
阿新 • • 發佈:2018-12-13
1、producer核心配置
1、acks :傳送應答(預設值:1)
生產者在考慮完成請求之前要求leader收到的確認的數量。這控制了傳送的記錄的永續性。允許以下設定:
- acks=0:設定為0,則生產者將完全不等待來自伺服器的任何確認。記錄將立即新增到socket緩衝區,並被認為已傳送。在這種情況下,不能保證伺服器已經收到記錄,重試配置將不會生效(因為客戶機通常不會知道任何失敗)。每個記錄返回的偏移量總是-1。
- acks=1:leader會將記錄寫到本地日誌中,但不會等待所有follower的完全確認。在這種情況下,如果leader在記錄失敗後立即失敗,但在追隨者複製記錄之前失敗,那麼記錄就會丟失。
- acks=all / -1:leader將等待完整的同步副本來確認記錄。這保證了只要至少有一個同步副本仍然存在,記錄就不會丟失。這是最有力的保證。這相當於acks=-1設定。
2、batch.size:批量傳送大小(預設:16384,16K)
快取到本地記憶體,批量傳送大小,意思每次傳送16K到broke。當多個記錄被髮送到同一個分割槽時,生產者將嘗試將記錄批處理成更少的請求。這有助於客戶機和伺服器上的效能。此配置以位元組為單位控制預設批處理大小。
3、bootstrap.servers:伺服器地址
broke伺服器地址,多個用逗號割開。
4、buffer.memory:生產者最大可用快取 (預設:33554432,32M)
生產者可以用來緩衝等待發送到伺服器的記錄的總記憶體位元組。如果記錄被髮送的速度超過了它們可以被髮送到伺服器的速度,那麼生產者將阻塞max.block。然後它會丟擲一個異常。
該設定應該大致與生成器將使用的總記憶體相對應,但不是硬繫結,因為生成器使用的並非所有記憶體都用於緩衝。一些額外的記憶體將用於壓縮(如果啟用了壓縮)以及維護飛行中的請求。
生產者產生的訊息快取到本地,每次批量傳送batch.size大小到伺服器。
5、client.id:生產者ID(預設“”)
請求時傳遞給伺服器的id字串。這樣做的目的是通過允許在伺服器端請求日誌中包含邏輯應用程式名稱,從而能夠跟蹤ip/埠之外的請求源。
6、compression.type:壓縮型別(預設值:producer)
指定給定主題的最終壓縮型別。此配置接受標準壓縮編解碼器(“gzip”、“snappy”、“lz4”、“zstd”)。它還接受“未壓縮”,相當於沒有壓縮;以及“生產者”,即保留生產者設定的原始壓縮編解碼器。
“gzip”:壓縮效率高,適合高記憶體、CPU
“snappy”:適合頻寬敏感性,壓縮力度大