kafka系列之原理簡介

      網友投稿 729 2025-04-02

      文章目錄


      Producer

      Broker

      Consumer

      Zookeeper

      Kafka優點

      單機版安裝教程

      3、安裝JDK

      1、啟動zookeeper的server 2、啟動kafka的server 3、Producer生產數據,然后通過zookeeper找到broker,再講數據push到broker進行保存 4、Consumer通過zookeeper找到broker,然后再主動pull數據

      1

      2

      3

      4

      kafka存儲是基于硬盤存儲的,然而卻有著快速的讀寫效率,一個 67200rpm STAT RAID5 的陣列,線性讀寫速度是 300MB/sec,如果是隨機讀寫,速度則是 50K/sec。

      雖然都知道內存讀取速度會明顯快于硬盤讀寫速度,但是kafka卻通過線性讀寫的方式實現快速地讀寫。

      Producer

      學習kafka一定要理解好Topic,每個Topic被分成多個partition(區)。每條消息在partition中的位置稱為offset(偏移量),類型為long型數字。消息即使被消費了,也不會被立即刪除,而是根據broker里的設置,保存一定時間后再清除,比如log文件設置存儲兩天,則兩天后,不管消息是否被消費,都清除。

      Broker

      broker也即中間的存儲隊列。我們將消息的収布(publish)暫時稱作 producer,將消息的訂閱(subscribe)表述為consumer,將中間的存儲陣列稱作 broker(代理)。

      Consumer

      每個consumer屬于一個consumer group。在kafka中,一個partition的消息只會被group中的一個consumer消費;可以認為一個group就是一個“訂閱者”。一個Topic中的每個partition只會被一個“訂閱者”中的一個consumer消費。

      Zookeeper

      kafka集群幾乎不需要維護任何Consumer和Producer的信息。這些信息由Zookeeper保存。發送到Topic的消息,只會被訂閱此Topic的每個group中的一個consumer消費。

      Kafka優點

      Kafka好處:轉自InfoQ:Kafka剖析

      解耦

      在項目啟動之初來預測將來項目會碰到什么需求,是極其困難的。消息系統在處理過程中間插入了一個隱含的、基于數據的接口層,兩邊的處理過程都要實現這一接口。這允許你獨立的擴展或修改兩邊的處理過程,只要確保它們遵守同樣的接口約束。

      冗余

      有些情況下,處理數據的過程會失敗。除非數據被持久化,否則將造成丟失。消息隊列把數據進行持久化直到它們已經被完全處理,通過這一方式規避了數據丟失風險。許多消息隊列所采用的"插入-獲取-刪除"范式中,在把一個消息從隊列中刪除之前,需要你的處理系統明確的指出該消息已經被處理完畢,從而確保你的數據被安全的保存直到你使用完畢。

      擴展性

      因為消息隊列解耦了你的處理過程,所以增大消息入隊和處理的頻率是很容易的,只要另外增加處理過程即可。不需要改變代碼、不需要調節參數。擴展就像調大電力按鈕一樣簡單。

      靈活性 & 峰值處理能力

      在訪問量劇增的情況下,應用仍然需要繼續發揮作用,但是這樣的突發流量并不常見;如果為以能處理這類峰值訪問為標準來投入資源隨時待命無疑是巨大的浪費。使用消息隊列能夠使關鍵組件頂住突發的訪問壓力,而不會因為突發的超負荷的請求而完全崩潰。

      可恢復性

      系統的一部分組件失效時,不會影響到整個系統。消息隊列降低了進程間的耦合度,所以即使一個處理消息的進程掛掉,加入隊列中的消息仍然可以在系統恢復后被處理。

      順序保證

      在大多使用場景下,數據處理的順序都很重要。大部分消息隊列本來就是排序的,并且能保證數據會按照特定的順序來處理。Kafka保證一個Partition內的消息的有序性。

      緩沖

      在任何重要的系統中,都會有需要不同的處理時間的元素。例如,加載一張圖片比應用過濾器花費更少的時間。消息隊列通過一個緩沖層來幫助任務最高效率的執行。寫入隊列的處理會盡可能的快速。該緩沖有助于控制和優化數據流經過系統的速度。

      異步通信

      很多時候,用戶不想也不需要立即處理消息。消息隊列提供了異步處理機制,允許用戶把一個消息放入隊列,但并不立即處理它。想向隊列中放入多少消息就放多少,然后在需要的時候再去處理它們。

      單機版安裝教程

      ###1、關閉SELINUX

      vi /etc/selinux/config

      1

      對配置文件進行修改,然后按ESC鍵,:wq保存退出

      #SELINUX=enforcing #SELINUXTYPE=targeted SELINUX=disabled #增加 :wq! #保存退出

      1

      2

      3

      4

      5

      6

      7

      ###2、配置防火墻

      vi /etc/sysconfig/iptables

      1

      可以看到配置文件,然后按I鍵,insert一行

      -A INPUT -m state --state NEW -m tcp -p tcp --dport 9092 -j ACCEPT

      1

      然后按ESC鍵,:wq保存退出

      # Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 9092 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT :wq! #保存退出

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      3、安裝JDK

      如果有安裝yum的話,一般可以使用yum安裝,下面給出網上一篇很不錯的jdk安裝教程,建議Linux安裝的可以去linux公社找找教程

      CentOS6安裝JDK

      ###4、下載安裝Kafka

      cd進入相應文件夾,一般安裝到/usr/local/src

      cd /usr/local/src

      1

      wget下載文件

      wget http://archive.apache.org/dist/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz

      1

      解壓

      tar -xzvf kafka_2.11-0.8.2.1.tgz

      1

      移動到安裝目錄

      mv kafka_2.11-0.8.2.1 /usr/local/kafka

      1

      ###5、配置Kafka

      創建Kafka日志文件存放文件夾

      mkdir /usr/local/kafka/logs/kafka

      1

      cd配置文件目錄

      cd /usr/local/kafka/config

      1

      VI編輯

      vi server.properties

      1

      修改配置

      broker.id=0 port=9092 #端口號 host.name=127.0.0.1 #服務器IP地址,修改為自己的服務器IP log.dirs=/usr/local/kafka/logs/kafka #日志存放路徑,上面創建的目錄 zookeeper.connect=localhost:2181 #zookeeper地址和端口,單機配置部署,localhost:2181 :wq! #保存退出

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      ###6、Zookeeper配置

      創建一個目錄安裝

      mkdir /usr/local/kafka/zookeeper

      1

      創建一個Zookeeper日志存放目錄

      mkdir /usr/local/kafka/logs/zookeeper

      1

      配置文件

      cd /usr/local/kafka/config

      1

      vi zookeeper.properties

      1

      dataDir=/usr/local/kafka/zookeeper #zookeeper數據目錄 dataLogDir=/usr/local/kafka/log/zookeeper #zookeeper日志目錄 clientPort=2181 maxClientCnxns=100 tickTime=2000 initLimit=10 syncLimit=5 :wq! #保存退出

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      ###7、腳本編寫

      編寫kafka的start腳本

      cd /usr/local/kafka

      1

      使用vi創建腳本

      vi kafkastart.sh

      1

      加入腳本代碼,&符號表示在后臺執行,然后:wq保存退出

      #!/bin/sh #啟動zookeeper /usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties & sleep 3 #等3秒后執行 #啟動kafka /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties &

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      編寫kafka的stop腳本

      vi kafkastop.sh

      1

      腳本代碼如,同樣是:wq保存退出

      #!/bin/sh #關閉zookeeper /usr/local/kafka/bin/zookeeper-server-stop.sh /usr/local/kafka/config/zookeeper.properties & sleep 3 #等3秒后執行 #關閉kafka /usr/local/kafka/bin/kafka-server-stop.sh /usr/local/kafka/config/server.properties &

      1

      2

      3

      4

      kafka系列之原理簡介

      5

      6

      7

      8

      9

      10

      11

      添加腳本執行權限

      chmod +x kafkastart.sh chmod +x kafkastop.sh

      1

      2

      3

      ###8、配置腳本開機自行啟動

      vi /etc/rc.d/rc.local

      1

      設置開機時腳本在后臺執行,使用&符號

      將如下代碼添加到rc.local里,同樣使用VI編輯器

      sh /usr/local/kafka/kafkastart.sh &

      1

      :wq保存退出

      ###9、啟動kafka

      sh /usr/local/kafka/kafkastart.sh #啟動kafka

      1

      ###10、創建topic

      usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test /usr/local/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181 test /usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test --from-beginning

      1

      2

      3

      4

      5

      JDK Kafka

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel中如何畫斜線添加文字(怎么在excel表格中畫斜線中添加文字)
      下一篇:word空格出現小圓點怎么辦(word2010空格出現小圓點)
      相關文章
      亚洲国产精品无码中文lv| 亚洲日本一线产区和二线| 国产亚洲男人的天堂在线观看| 狠狠色香婷婷久久亚洲精品| 亚洲高清中文字幕| 精品亚洲国产成AV人片传媒| 亚洲AV电影院在线观看| 久久久无码精品亚洲日韩蜜桃 | 亚洲 欧洲 自拍 另类 校园| 亚洲国产精品成人综合久久久 | 亚洲精品视频在线看| 亚洲国产精品无码久久九九| 亚洲精品国精品久久99热| 亚洲高清无码专区视频| 亚洲国模精品一区| 久久国产成人亚洲精品影院| 亚洲日本韩国在线| 日韩精品亚洲aⅴ在线影院| 亚洲精品无码久久久久sm| 亚洲va无码专区国产乱码| 亚洲精品在线观看视频| 亚洲视频免费在线看| 亚洲乱码一二三四五六区| 久久夜色精品国产噜噜亚洲a| 亚洲色欲色欱wwW在线| 国产精品久久亚洲一区二区| 亚洲黄片毛片在线观看| 亚洲无av在线中文字幕| 亚洲va无码专区国产乱码| 91久久亚洲国产成人精品性色| 亚洲沟沟美女亚洲沟沟| 2020久久精品亚洲热综合一本| 亚洲国产精品自在自线观看| 亚洲国产成人久久综合区| 黑人大战亚洲人精品一区| 久久亚洲免费视频| 亚洲午夜一区二区电影院| 亚洲精品亚洲人成在线| 亚洲男人av香蕉爽爽爽爽| 亚洲va中文字幕无码久久不卡| 亚洲福利视频一区二区三区|