初學 Kafka

初學 Kafka

簡介

Kafka是最初由Linkedin公司開發,是一個分佈式、支持分區的(partition)、多副本的(replica),基於zookeeper協調的分佈式消息系統,它的最大的特性就是可以實時的處理大量數據以滿足各種需求場景:比如基於hadoop的批處理系統、低延遲的實時系統、storm/Spark流式處理引擎,web/nginx日誌、訪問日誌,消息服務等等,用scala語言編寫,Linkedin於2010年貢獻給了Apache基金會併成爲頂級開源項目。鏈接

常用消息隊列介紹和對比

Zookeeper

ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。

Zookeeeper 入門 簡單原理+物理機部署

在Docker中啓動
docker pull zookeeper
docker run --name zk1 -d zookeeper
docker exec -it zk1 zkCli.sh

kafka 和 zk 關聯

架構原理


Producer:Producer即生產者,消息的產生者,是消息的入口。
  Broker:Broker是kafka實例,每個服務器上有一個或多個kafka的實例,我們姑且認爲每個broker對應一臺服務器。每個kafka集羣內的broker都有一個不重複的編號,如圖中的broker-0、broker-1等……
  Topic:消息的主題,可以理解爲消息的分類,kafka的數據就保存在topic。在每個broker上都可以創建多個topic。
  Partition:Topic的分區,每個topic可以有多個分區,分區的作用是做負載,提高kafka的吞吐量。同一個topic在不同的分區的數據是不重複的,partition的表現形式就是一個一個的文件夾!
  Replication:每一個分區都有多個副本,副本的作用是做備胎。當主分區(Leader)故障的時候會選擇一個備胎(Follower)上位,成爲Leader。在kafka中默認副本的最大數量是10個,且副本的數量不能大於Broker的數量,follower和leader絕對是在不同的機器,同一機器對同一個分區也只可能存放一個副本(包括自己)。
  Message:每一條發送的消息主體。
  Consumer:消費者,即消息的消費方,是消息的出口。
  Consumer Group:我們可以將多個消費組組成一個消費者組,在kafka的設計中同一個分區的數據只能被消費者組中的某一個消費者消費。同一個消費者組的消費者可以消費同一個topic的不同分區的數據,這也是爲了提高kafka的吞吐量!
  Zookeeper:kafka集羣依賴zookeeper來保存集羣的的元信息,來保證系統的可用性。內容來自

kafka工作原理介紹

實戰

docker安裝kafka
需要限制一下java heap
-e KAFKA_HEAP_OPTS="-Xmx512M -Xms512M"

k8s部署kafka集羣

附:
Kubernetes之yaml文件詳解
服務的有狀態和無狀態
kubernetes 無狀態服務和有狀態服務

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章