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