2017-06-21 99 views
1

發送到Kafka的消息寫入磁盤並複製爲 容錯。磁盤持久性和複製?

我不確定何時將消息寫入光盤,爲什麼需要複製(分區)以及它如何提供幫助?

此外,卡夫卡據說吞吐量很高,不寫入磁盤影響性能?它是否可配置爲只在內存中有消息,但不在磁盤中?

回答

1

Jay Kreps(他在LinkedIn時Kafka的原始架構師之一)的這篇博客文章解釋了Kafka如何被獨特地設計爲一個提交日誌,它可以在「三臺便宜的機器上每秒寫入200萬次」並且產生比傳統消息代理更高的消息傳輸速率,而傳統消息代理並非如此設計。

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

卡夫卡具有控制頁面緩存多久刷新到磁盤配置參數。沒有最終寫入磁盤的情況下運行Kafka是不可能的。 Kafka還在內存中緩存消息以提高性能,因此它可以在從內存讀取時提供高吞吐量,同時仍保證不會因持久性磁盤丟失消息而使數據集羣複製容錯。

+0

其實我的主要問題是卡夫卡是堅持信息在光盤中,複製的需要是什麼?它有什麼幫助? – user3198603

+0

複製是爲了容錯,而不是性能。這意味着你不會丟失數據,並且系統在服務器死亡的情況下繼續工作。分區(即分片)用於性能,因爲它將數據存儲在多個服務器上。 Kafka同時進行復制和分區,因此您可以獲得高性能和可靠性。 –

+0

我明白分區是爲了性能。我所問的是,當卡夫卡已經堅守在光盤上的信息,那麼即使服務器死亡也沒有數據丟失的機會。那麼爲什麼需要跨節點複製相同的消息/數據呢? – user3198603

相關問題