1、kafka集羣搭建 html
至於kafka是什麼我都很少作介紹了,網上寫的已經很是詳盡了。java
(沒安裝java環境的須要先安裝 yum -y install java-1.8.0-openjdk*)git
3. 啓動zookeeper集羣(個人示例是3臺機器,後面的kafka也同樣,這裏就以1臺代指3臺,固然你也能夠只開1臺)apache
1)配置zookeeper。 修改複製一份 zookeeper-3.4.13/conf/zoo_sample.cfg 更名成zoo.cfg。修改如下幾個參數,改爲適合本身機器的。session
2) 建立myid文件,肯定機器編號。分別在3臺機器的/home/test/zookeeper/data目錄執行分別執行命令 echo 1 > myid(注意ip爲10.22.1.2把1改爲2,見上面的配置)app
3) 啓動zookeeper集羣。分別進入目錄zookeeper-3.4.13/bin 執行 sh zkServer.sh startdom
4. 啓動kafka集羣工具
1) 配置kafka。進入kafka_2.11-2.2.0/config。複製3份,分別爲server1.properties,server2.properties,server3.properties。修改如下幾項(注意對應的機器id)
log.dirs和zookeeper.connect 是同樣的。broker.id和listeners分別填對應的id和ip
2) 啓動kafka集羣。分別進入kafka_2.11-2.2.0/bin目錄,分別執行sh kafka-server-start.sh ../config/server1.properties (第2臺用server2.properties配置文件)
2、Golang生產者和消費者
目前比較流行的golang版的kafka客戶端庫有兩個:
至於誰好誰壞本身去分辨,我用的是第1個,star比較多的。
1. kafka生產者代碼
這裏有2點要說明:
1) config.Producer.Partitioner = sarama.NewRandomPartitioner,我分partition用的是隨機,若是你想穩定分paritition的話能夠自定義,還有輪詢和hash方式
2) 個人topic是走的外部配置,能夠根據本身的需求修改
2. kafka消費者
幾點說明:
1) kafka必定要選用支持集羣的版本
2) 裏面帶了建立topic,刪除topic,打印topic的工具
3) replication是外面配置的
4) 開多個consumer須要在建立topic時設置多個partition。官方的示例當開多個consumer的時候會崩潰,我這個版本不會,我給官方提交了一個PR,還不知道有沒有采用