你都學(xué)習(xí)這么長時間了,Kafka還不知道?
你學(xué)習(xí)了那么久的java,你竟然不知道kafka是什么?
沒關(guān)系,今天小編就來帶你一起走進知識的海洋。。。

首先我們來了解什么是kafka

一、?Kafka簡介
????Kafka是最初由Linkedin公司開發(fā),是一個分布式、支持分區(qū)的(partition)、多副本的(replica),基于zookeeper協(xié)調(diào)的分布式消息系統(tǒng),它的最大的特性就是可以實時的處理大量數(shù)據(jù)以滿足各種需求場景:比如基于hadoop的批處理系統(tǒng)、低延遲的實時系統(tǒng)、storm/Spark流式處理引擎,web/nginx日志、訪問日志,消息服務(wù)等等,用scala語言編寫,Linkedin于2010年貢獻給了Apache基金會并成為頂級開源項目。
1、Kafka的特性
高吞吐量、低延遲:kafka每秒可以處理幾十萬條消息,它的延遲最低只有幾毫秒,每個topic可以分多個partition, consumer group 對partition進行consume操作。
可擴展性:kafka集群支持熱擴展
持久性、可靠性:消息被持久化到本地磁盤,并且支持數(shù)據(jù)備份防止數(shù)據(jù)丟失
容錯性:允許集群中節(jié)點失敗(若副本數(shù)量為n,則允許n-1個節(jié)點失?。?/p>
高并發(fā):支持數(shù)千個客戶端同時讀寫
2、Topics和日志
讓我們首先深入了解下Kafka的核心概念:提供一串流式的記錄— topic 。
Topic 就是數(shù)據(jù)主題,是數(shù)據(jù)記錄發(fā)布的地方,可以用來區(qū)分業(yè)務(wù)系統(tǒng)。Kafka中的Topics總是多訂閱者模式,一個topic可以擁有一個或者多個消費者來訂閱它的數(shù)據(jù)。
對于每一個topic, Kafka集群都會維持一個分區(qū)日志,如下所示:

????每個分區(qū)都是有序且順序不可變的記錄集,并且不斷地追加到結(jié)構(gòu)化的commit log文件。分區(qū)中的每一個記錄都會分配一個id號來表示順序,我們稱之為offset,offset用來唯一的標(biāo)識分區(qū)中每一條記錄。
????Kafka 集群保留所有發(fā)布的記錄—無論他們是否已被消費—并通過一個可配置的參數(shù)——保留期限來控制. 舉個例子, 如果保留策略設(shè)置為2天,一條記錄發(fā)布后兩天內(nèi),可以隨時被消費,兩天過后這條記錄會被拋棄并釋放磁盤空間。Kafka的性能和數(shù)據(jù)大小無關(guān),所以長時間存儲數(shù)據(jù)沒有什么問題.

?????事實上,在每一個消費者中唯一保存的元數(shù)據(jù)是offset(偏移量)即消費在log中的位置.偏移量由消費者所控制:通常在讀取記錄后,消費者會以線性的方式增加偏移量,但是實際上,由于這個位置由消費者控制,所以消費者可以采用任何順序來消費記錄。例如,一個消費者可以重置到一個舊的偏移量,從而重新處理過去的數(shù)據(jù);也可以跳過最近的記錄,從"現(xiàn)在"開始消費。
????這些細節(jié)說明Kafka 消費者是非常廉價的—消費者的增加和減少,對集群或者其他消費者沒有多大的影響。比如,你可以使用命令行工具,對一些topic內(nèi)容執(zhí)行 tail操作,并不會影響已存在的消費者消費數(shù)據(jù)。
日志中的 partition(分區(qū))有以下幾個用途。
第一,當(dāng)日志大小超過了單臺服務(wù)器的限制,允許日志進行擴展。每個單獨的分區(qū)都必須受限于主機的文件限制,不過一個主題可能有多個分區(qū),因此可以處理無限量的數(shù)據(jù)。
第二,可以作為并行的單元集,日志的分區(qū)partition (分布)在Kafka集群的服務(wù)器上。每個服務(wù)器在處理數(shù)據(jù)和請求時,共享這些分區(qū)。每一個分區(qū)都會在已配置的服務(wù)器上進行備份,確保容錯性。每個分區(qū)都有一臺 server 作為 “l(fā)eader”,零臺或者多臺server作為 follwers 。leader server 處理一切對 partition (分區(qū))的讀寫請求,而follwers只需被動的同步leader上的數(shù)據(jù)。當(dāng)leader宕機了,followers 中的一臺服務(wù)器會自動成為新的 leader。每臺 server 都會成為某些分區(qū)的 leader 和某些分區(qū)的 follower,因此集群的負載是平衡的。

二、?基于Docker安裝Kafka
1、拉取鏡像
kafka依賴于zookeeper,需要拉取kafka和zookeeper鏡像。
2、啟動zookeeper容器
3、啟動Kafka容器
4、安裝管理界面
訪問http://192.168.89.142:9000 即可。

說了這么多,你們明白了嗎?
什么?
還沒明白?
看視頻啊,你想知道的都在視頻里~
