]的同學一定會問為什麼Kafka大量使用了磁盤作為傳統意義的緩存。
其實Kafka最核心的思想是使用磁盤,而不是使用記憶體,可能所有人都會認為,記憶體的速度一定比磁盤快,我也不例外。在看了Kafka的設計思想,查閱了相應資料再加上自己的測試後,發現磁盤的順序讀寫速度和記憶體持平。
而且Linux對于磁盤的讀寫優化也比較多,包括read-ahead和write-behind,磁盤緩存等。如果在記憶體做這些操作的時候,一個是JAVA對象的記憶體開銷很大,另一個是随着堆記憶體資料的增多,JAVA的GC時間會變得很長,使用磁盤操作有以下幾個好處:
- 磁盤緩存由Linux系統維護,減少了程式員的不少工作。
- 磁盤順序讀寫速度超過記憶體随機讀寫。
- JVM的GC效率低,記憶體占用大。使用磁盤可以避免這一問題。
- 系統冷啟動後,磁盤緩存依然可用。