原創(chuàng)文章,同步首發(fā)自作者個人博客。轉(zhuǎn)載請務必在文章開頭處以超鏈接形式注明出處http://www.jasongj.com/kafka/high_throughput/
摘要
上一篇文章《Kafka設計解析(五)- Kafka性能測試方法及Benchmark報告》從測試角度說明了Kafka的性能。本文從宏觀架構(gòu)層面和具體實現(xiàn)層面分析了Kafka如何實現(xiàn)高性能。
宏觀架構(gòu)層面
利用Partition實現(xiàn)并行處理
Partition提供并行處理的能力
Kafka是一個Pub-Sub的消息系統(tǒng),無論是發(fā)布還是訂閱,都須指定Topic。如《Kafka設計解析(一)- Kafka背景及架構(gòu)介紹》一文所述,Topic只是一個邏輯的概念。每個Topic都包含一個或多個Partition,不同Partition可位于不同節(jié)點。同時Partition在物理上對應一個本地文件夾,每個Partition包含一個或多個Segment,每個Segment包含一個數(shù)據(jù)文件和一個與之對應的索引文件。在邏輯上,可以把一個Partition當作一個非常長的數(shù)組,可通過這個“數(shù)組”的索引(offset)去訪問其數(shù)據(jù)。
一方面,由于不同Partition可位于不同機器,因此可以充分利用集群優(yōu)勢,實現(xiàn)機器間的并行處理。另一方面,由于Partition在物理上對應一個文件夾,即使多個Partition位于同一個節(jié)點,也可通過配置讓同一節(jié)點上的不同Partition置于不同的disk drive上,從而實現(xiàn)磁盤間的并行處理,充分發(fā)揮多磁盤的優(yōu)勢。
利用多磁盤的具體方法是,將不同磁盤mount到不同目錄,然后在server.properties中,將
延伸閱讀
學習是年輕人改變自己的最好方式