一、kafka概念
一個分佈式流式處理平臺,它以高吞吐、可持久化、可水平擴展、支持流處理等多種特性,而被廣泛應用。
二、kafka特性
- 高吞吐量,低延遲:kafka每秒可以處理幾十萬條信息,它的延遲最多隻有幾毫秒,每個主題可以分多個分區,消費組對分區 進行消費操作。
- 可拓展性:kafka集羣支持熱拓展。
- 持久性、可靠性:消息被持久化到本地磁盤,並且支持數據備份,防止數據丟失。
- 容錯性:允許集羣中節點失敗(若副本數量爲n,則允許n-1個節點失敗)。
- 高併發:支持數千個客戶端同時讀寫。
三、使用場景
- 日誌收集:一個公司可以使用kafka收集各種服務log,通過kafka以統一接口服務的方式,開放給各種consumer,例如Hadoop、H base、Solr等。
- 消息系統:解耦合生產者和消費者、緩存消息等。
- 用戶活動跟蹤:kafka經常被用來記錄web用戶或者app用戶的各種活動,如瀏覽網頁、搜索、點擊等活動,這些活動信息被各個服務器發佈到kafka的topic中,然後訂閱者通過訂閱這些topic(主題)來做實時的監控分析,或者裝載到Hadoop、數據倉庫中做離線分析和數據挖掘。
- 運營指標:kafka也迎來記錄運營監控數據,包括收集各種分佈式應用的數據,生產各種操作的集中反饋,比如報警和報告。
- 流式處理:比如spark streaming 和 storm.
四、kafka技術優勢
- 可伸縮性:Kafka兩個重要的特性造就了它的可伸縮性,
- kafka在運行期間,可以輕鬆的擴展或者收縮(可以添加或者刪除代理),而不會宕機。
- 可以拓展一個kafka的主題來包含更多的分區,由於一個分區無法拓展到多個代理,所以它的容量受到代理磁盤空間的限制,能夠增加分區和代理的數量意味着單個主題可以存儲的數據量是沒有限制的。
- 容錯性和可靠性:kafka的設計方式使某個代理的故障可以被集羣中的其他代理檢測到,由於每個主題可以在多個代理上覆 制,所以集羣可以在不中斷服務的情況下,從此類故障中恢復並且繼續運行。
- 吞吐量:代理能夠以超快的速度有效的存儲和檢索數據。
Apache官網:http://apache.org
Kafka官網:http://kafka.apache.org