消息隊列解決的問題
1. 解耦,通過消息隊列實現應用之間解耦,模塊兒之間解耦
2. 跨線程/進程通信,通過消息隊列傳遞數據,實現不同線程/進程間通信
3. 提升系統穩定性,在高并發場景通過消息隊列緩沖,可以實現削峰填谷,使系統穩定運行,避免突發流量沖擊
4. 一寫多讀的廣播模型
kafka時延小于1ms
測試條件:producer部署在騰訊云主機,consumer部署在騰訊云主機,kafka集群使用騰訊云kafka服務,測試數據大小500字節,數據發送頻率20Hz,測試時常10分鐘
測試結果:26分位值時間差為0ms,98分位置為1ms,99.9分為值為2ms,最長時間4ms
kafka高性能原理
1. Kafka采用分布式集群架構,通過分區(Partition)實現并行處理。通過分區機制實現對同一隊列的并發讀和并發寫,kafka多個分區可以分布在集群的多臺機器上,從而通過充分發揮硬件資源的性能提升系統吞吐和性能,通過多消費者、多生產者并發處理大大提升了系統的吞吐量;
2. kafka數據落盤采用順序寫,大大提升了數據持久化的性能,順序寫相比隨機寫來說,在機械硬盤上效率順序寫要快上千倍,順序讀的效率比隨機讀的效率快幾百倍;在固態硬盤上順序讀寫也比隨機讀寫效率高幾倍到幾十倍;
3. 零拷貝技術,Kafka 使用了操作系統級的零拷貝特性來減少數據在用戶態和內核態之間的拷貝,從而提高了數據傳輸的效率;
4.?Kafka使用高性能的異步網絡傳輸技術,通過Reactor模式(事件驅動模式)來處理大量的網絡連接和請求。這種設計使得Kafka能夠充分利用系統資源,實現高并發、低延遲的數據傳輸;
5. kafka支持批量操作,Kafka的批量操作包括批量寫入、批量發布、以及消費端批量讀取,通過批量操作大大提升了系統吞吐量;
總結:
在分布式架構中,消息隊列選型時kafka可以滿足大部分場景的要求,在低時延、吞吐量、一致性、高可用等方面都表現優異。