kakfa 依賴檔案系統來儲存和快取訊息。對於硬碟的傳統觀念是硬碟總是很慢,基於檔案系統的架構能否提供優異的效能?實際上硬碟的快慢完全取決於使用方式。同時 kafka 基於 jvm 記憶體有以下缺點:
實際上磁碟線性寫入的效能遠遠大於任意位置寫的效能,線性讀寫由作業系統進行了大量優化(read-ahead、write-behind 等技術),甚至比隨機的記憶體讀寫更快。所以與常見的資料快取在記憶體中然後刷到硬碟的設計不同,kafka 直接將資料寫到了檔案系統的日誌中:
這樣實現的好處:
如下圖所示,我們之前建立了mytopic1,具有三個分割槽。我們可以到對應的日誌目錄下進行檢視。
kafka日誌分為index與log(如上圖所示),兩個成對出現:index檔案儲存元資料,log儲存訊息。索引檔案元資料指向對應log檔案中message的遷移位址;例如2,128指log檔案的第2條資料,偏移位址為128;而實體地址(在index檔案中指定)+ 偏移位址可以定位到訊息。
我們可以使用kafka自帶的工具來檢視log日誌檔案中的資料資訊:
趙渝強老師 Kafka的體系架構
資料工程中最具挑戰性的部分之一是如何從不同點收集和傳輸大量資料到分布式系統進行處理和分析。需要通過訊息佇列正確地分離大量資料,因為如果一部分資料無法傳送,則可以在系統恢復時傳輸和分析其他資料。有兩種訊息排隊,對於上述目的,它們都是可靠的和非同步的。點對點 point to point 和發布者 訂閱...
趙渝強老師 什麼是Redis Cluster
redis cluster是redis的分布式解決方案,在redis 3.0版本正式推出的,有效解決了redis分布式方面的需求。當遇到單機記憶體 併發 流量等瓶頸時,可以採用cluster架構達到負載均衡的目的。我們日常在對於redis的使用中,經常會遇到一些問題 1 高可用問題,如何保證redi...
趙渝強老師 SQL的字元函式
字元函式,顧名思義,操作的就是字串。通過下圖,我們來了解一下oracle的字元函式。select lower hello world 轉小寫,upper hello world 轉大寫,initcap hello world 首字母大寫 對於英文來說,字元數和位元組數一樣 select length...