Kafka 安裝實踐筆記

最近終於有須要消息隊列的業務需求出現了,就決定本身搭建一個Kafka集羣做爲業務測試用。若是沒問題的話就不去購買雲服務了,還能省下很多錢呢。對於Kafka以前本身也寫過demo稍微瞭解了一下,此次就把實踐的要點記錄下來。html

安裝Kafka

Kafka的安裝能夠說是很是簡單了。java

  • 首先去官網找到下載連接,注意要下載二進制版本。
  • 而後用wget下載到服務器上,再解壓(tar xzvf)就ok了
  • Kafka是依賴於zookeeper的,不過官方的安裝包裏已經自帶了zookeeper,單機版直接用已經寫好的腳本啓動就能夠了,我是按文檔搭了個zookeeper集羣。
bin/zookeeper-server-start.sh config/zookeeper.properties
須要後臺運行的加 -daemon 參數
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
用netstat -ntlp命令能夠看到
tcp        0      0 0.0.0.0:2181            0.0.0.0:*               LISTEN      {pid}/java
就是啓動成功了。
複製代碼

服務器參數配置,Broker Configs

參數配置很是的重要,這裏只是重點講下幾個基本都要配置的點。首先打開配置文件,vi config/server.propertiesspring

broker.id

broker.id指的是當前節點的id,必須是惟一不重複的整數。apache

例子: broker.id=0bash

advertised.listeners

advertised.listeners,設置這個是爲了讓客戶端拿到正確的主機地址,默認是拿的java.net.InetAddress.getCanonicalHostName()的值,會拿到相似於izbp1i1jfn47dnqehu39pez:9092這樣的地址,因此就報鏈接錯誤了。服務器

例子: advertised.listeners=PLAINTEXT://111.222.333.444:9092併發

log.dirs

log.dirs指的是消息存放的目錄,能夠指定多個用,分隔,默認是/tmp/kafka-logs。這裏有個坑/tmp目錄是會不按期清理數據的,因此放這裏可能消息就會神祕消失。建議指定一個其餘的目錄。框架

例子: log.dirs=/mnt/kafka-logstcp

zookeeper.connect

zookeeper.connect指的是zookeeper的鏈接地址,集羣要寫多個,注意多臺服務器要能聯通。測試

例子: zookeeper.connect=111.16.212.244:2181,222.16.212.243:2181,333.16.212.236:2181

log.cleanup.policy

log.cleanup.policy指的是消息的清理策略,默認是168小時前的消息會被刪除。能夠改成壓縮消息,同一個key的消息只保留最新的。不過建議在topic裏設置,能夠把重要的消息設置爲壓縮,不重要的設置爲刪除。

例子: log.cleanup.policy=compact

num.partitions

num.partitions指的是主題的默認分區數量。默認值是1,建議改爲50,由於一個分區只容許一個消費者消費,分區數量多的話能夠併發消費。

例子:num.partitions=50

default.replication.factor

default.replication.factor指的是自動建立主題的副本數量.默認是1,即只有一個主副本,至關於沒有備份。建議改成大於等於2小於等於服務器數量的值。

例子: default.replication.factor=2

主題參數配置,Topic-Level Configs

主題的參數配置是寫在生產者或者消費者的代碼裏的,一樣是隻提幾個重要的。

cleanup.policy

cleanup.policy和服務器的log.cleanup.policy配置效果是同樣的,只不過優先級高一些。

min.insync.replicas

min.insync.replicas指的是最小同步副本數量,默認是1個建議設爲大於等於2,這樣消息至少有一個副本。這裏和生產者的acks配置有關,當acks設置爲all的時候,消息須要複製到全部副本里纔算成功,這裏的全部副本數量不必定是固定的。好比一個主題有3個副本,其中一個副本由於同步進度太慢被踢出了isr(In-Sync Replicas),這時的全部副本其實只有2個(包括主副本),而不是3個。

例子: min.insync.replicas=2

分區數量和副本數量

Kafka是默認支持主題的自動建立的,默認的分區數量和副本數量配置已經在服務器配置裏講過了。固然也能夠在spring等框架裏配置,事實上主題的參數配置均可以在spring裏配置,須要的能夠去文檔查詢。

結尾

到這裏Kafka的大部分業務無關的配置都已經搞定了,接下來就是寫生產者和消費者了。以後還會寫在spring boot裏使用Kafka的筆記,到這裏也只是簡單的配置了Kafka,建議去閱讀下《Kafka技術內幕:圖文詳解Kafka源碼設計與實現》,這樣才能更好的理解一些配置參數的意義和對Kafka的影響。

相關文章
相關標籤/搜索