2017-07-26 84 views
0

我已經在AWS上設置了一個示例Kafka集羣,並試圖通過給定的配置來確定最大吞吐量。我目前正在爲此分析提供此處提供的帖子。爲吞吐量縮放卡夫卡

https://engineering.linkedin.com/kafka/benchmarking-apache-kafka-2-million-writes-second-three-cheap-machines

我將不勝感激,如果你能澄清以下問題。

我觀察到具有給定硬件的大小爲512字節(單個生產者 - 單個消費者)的消息的吞吐量爲40MB/s。假設我需要達到80MB/s的吞吐量。

正如我理解的一種方法來增加每個主題的分區數量並增加生產者和消費者的線程數量。 (假設我不更改批量大小,壓縮比等的默認值)

  1. 如何在給定硬件上找到可能的最大吞吐量?如果要進一步提高吞吐量,我們需要改進我們的硬件資源。

(換句話說如何做出決定「,其中X GB RAM和Y GB的磁盤空間,這是我能做到的最大吞吐量。如果我需要進一步提高我不得不RAM升級到XX GB吞吐量磁盤空間爲YY GB「)

2.我們是否應該垂直或水平縮放集羣?什麼是推薦的方法?

謝謝。

回答

0
  1. 如果我們將吞吐量定義爲每秒通過網絡傳輸的數據量,則最大吞吐量不應超過#machine number *帶寬。如果單個機器的NIC配置爲1Gbps,則單機上的最大TPS不能大於1Gbps。在你的情況下,TPS是40MB/s,即320Mbps,這比1Gbps小得多,這意味着還有改進的空間。但是,如果您的目標遠大於1Gbps,那麼您肯定需要更多的機器。

  2. AFAIK,帶寬是導致系統瓶頸的最可能原因。與CPU和RAM不同,垂直縮放並不容易,因此水平縮放可能是一種選擇。

你可以在縮放之前做一些數學運算。假設吞吐量目標是「在1小時內產生512Bytes的記錄20億條」。也就是說,TPS必須達到2,000,000,000 * 8 * 512/3600/1024/1024 = 2170mbps。假設單機的可用帶寬爲700mbps(超過70%的使用率通常會導致'丟包'),至少應該爲生產者應用程序規劃4臺機器。