1.卡夫卡是什麽?
Apache Kafka是壹個開源消息系統,最初由LinkedIn開發,後來成為Apache項目的壹部分。Kafka是壹個分布式、分區和可復制的提交日誌服務。現在,領英的三位同事已經離職創業,繼續開發kafka。
二、關鍵配置項的解釋
出於性能和實際集群部署的考慮,我們仍然需要解釋壹些重要的配置項。此外,如果對默認參數有任何疑問,建議采用默認配置,直到詳細了解更改參數的功能。
廣告。主機。名稱
註冊到zk供用戶使用的主機名。內部網環境通常不需要配置,而IaaS壹般需要配置為公共網絡地址。默認值為“host.name”,可以通過Java . net . inet address . getcanonical hostname()的接口獲取。
廣告。港口
在IaaS環境中,為用戶註冊到zk的服務端口通常需要額外配置。
分區數量
自動創建主題的默認分區號。默認值為1。為了獲得更好的性能,建議將其修改為更大。有關最佳值,請參考以下內容。
默認。復制。因子
自動創建主題的默認副本數,官方建議修改為2;但通常壹份就夠了。
min.insync.replicas
ISR提交制造商要求的最小份數。
不潔。領袖。選舉。啟用
是否允許沒有ISR資格的副本被選為領導者是不得已的選擇,即使犧牲壹些數據也在所不惜。默認允許。建議許可。除非數據異常重要。
受控。關閉。啟用
當kafka收到停止命令或異常終止時,允許自動數據同步。建議開通。
第三,調優註意事項
配置適當數量的分區。
這似乎是新手卡夫卡必須要問的問題。分割是卡夫卡的壹個平行單位。從生產者和經紀人的角度來看,寫給不同分區是完全並行的;對於消費者來說,並發的數量完全取決於分區的數量,也就是說,如果消費者的數量大於分區的數量,則壹定會有消費者空閑。因此,我們可以認為kafka的吞吐量與分區時間呈線性關系。分區的數量應該根據吞吐量來推斷。假設P代表生產者寫入單個分區的最大吞吐量,C代表消費者從單個分區消費的最大吞吐量,我們的目標吞吐量是T,那麽分區數應該是t/p和T/C中的較大者。實際上,P的影響因素是批處理大小、壓縮算法、確認機制和副本數量等。但是,幾個基準測試的結果表明,單個分區的最大寫入吞吐量約為10MB/秒。C的影響因素是邏輯算法,需要在不同的場景中進行衡量。
這個結論似乎太書生氣,不切實際。我們通常建議分區的數量必須大於或等於消費者的數量,以實現最大並發。政府已經測試了65,438+00,000個分區,因此不必過於擔心分區過多的問題。我的建議是,如果壹個集群有三個代理和五個消費者,建議的分區數量是15,這是代理和消費者數量的最小公倍數。當然,也可以是經紀人人數大於消費者人數的倍數,如6人或9人,請讀者根據實際環境自行決定。