基於producer consumer topic broker 等的乙個基本架
kafka的元件介紹
topic :訊息根據topic進行歸類
producer:傳送訊息者
consumer:訊息接受者
broker:每個kafka例項(server)
zookeeper:依賴集群儲存meta資訊。
topics元件介紹
topic:一類訊息,每個topic將被分成多個partition(區),在集群的配置檔案中配置。
segement:訊息儲存的真實檔案,會不斷生成新的。
offset:每條訊息在檔案中的位置(偏移量)。offset為乙個long型數字,它是唯一標記一條訊息。
partition
2、 任何發布到此partition的訊息都會被直接追加到log檔案的尾部。
3、 每個partition在記憶體中對應乙個index列表,記錄每個segment中的第一條訊息偏移。這樣查詢訊息的時候,先在index列表中定位訊息位置,再讀取檔案,速度塊。
4、 發布者發到某個topic的訊息會被均勻的分布到多個part上,broker收到發布訊息往對應part的最後乙個segment上新增該訊息。
partition分布
1、 partitions分割槽到不同的server上,乙個partition儲存在乙個server上,避免乙個server上的檔案過大,同時可以容納更多的consumer消費,有效提公升併發消費的能力。
2、 這個server(如果儲存的是partition的leader)負責partition的讀寫。可以配置備份。
3、 每個partition都有乙個server為"leader",負責讀寫,其餘的相對備份機為follower,follower同步leader資料,負責leader死了之後的接管。n個leader均衡的分散在每個server上。
4、 partition的leader和follower之間監控通過zookeeper完成。
1、 每個segment中儲存多條訊息,訊息id由其邏輯位置決定,即從訊息id可直接定位到訊息的儲存位置,避免id到位置的額外對映。
2、 當某個segment上的訊息條數達到配置值或訊息發布時間超過閾值時,segment上的訊息會被flush到磁碟,只有flush到磁碟上的訊息訂閱者才能訂閱到
3、 segment達到一定的大小(可以通過配置檔案設定,預設1g)後將不會再往該segment寫資料,broker會建立新的segment。
offset
offset是每條訊息的偏移量。
segment日誌檔案中儲存了一系列"log entries"(日誌條目),每個log entry格式為"4個位元組的數字n表示訊息的長度" + "n個位元組的訊息內容";
每個日誌檔案都有乙個offset來唯一的標記一條訊息,offset的值為8個位元組的數字,表示此訊息在此partition中所處的起始位置.
每個partition在物理儲存層面,有多個log file組成(稱為segment).
segment file的命名為"最小offset".log.例如"00000000000.log";其中"最小offset"表示此segment中起始訊息的offset.
Tomcat架構模型
我考慮我還是先發布,最起碼有點虛榮感或者說成就感,啊哈哈哈,未修改版本,後面會有重新整理,然後修訂,再去掉這句話 參考 tomcat架構解析 直接來看一下url圖把,這裡其實很多都忘記了,就先簡單介紹一下每個類的功能。接收其他計算機 客戶端 發來的請求資料並進行解析,完成相關業務處理,然後把資料處理...
hadoop的架構模型
1.x的版本架構模型介紹 檔案系統核心模組 namenode 集群當中的主節點,管理元資料 檔案的大小,檔案的位置,檔案的許可權 主要用於管理集群當中的各種資料 seconddarynamenode 主要能用於hadoop當中元資料資訊的輔助管理 datanode 集群當中的從節點,主要用於儲存集群...
hadoop的架構模型
資料 於網路 檔案系統核心模組 namenode 集群當中的主節點,主要用於管理集群當中的各種資料 secondarynamenode 主要能用於hadoop當中元資料資訊的輔助管理 datanode 集群當中的從節點,主要用於儲存集群當中的各種資料 資料計算核心模組 jobtracker 接收使用...