前面我們說了RabbitMQ和RocketMQ的安裝和簡單的使用,這次我們說一下Kafka的安裝配置,后面我會用幾個真實案例來說一下MQ的真實使用場景。天冷了,不願意伸手,最近沒怎么寫博客了,還請見諒。
一、目標
1.知道什么是Kafka
2.懂得kafka的單機和集群安裝配置
3.了解內部參數的簡單配置
二、Kafka簡介
Kafka是由Apache軟件基金會開發的一個開源流處理平台,由Scala和Java編寫。Kafka是一種高吞吐量的分布式發布訂閱消息系統,它可以處理消費者在網站中的所有動作流數據。 這種動作(網頁瀏覽,搜索和其他用戶的行動)是在現代網絡上的許多社會功能的一個關鍵因素。 這些數據通常是由於吞吐量的要求而通過處理日志和日志聚合來解決。 對於像Hadoop一樣的日志數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的並行加載機制來統一線上和離線的消息處理,也是為了通過集群來提供實時的消息。——百度百科
三、Kafka使用場景
- 日志收集:一個公司可以用Kafka可以收集各種服務的log,通過kafka以統一接口服務的方式開放給各種consumer,例如hadoop、Hbase、Solr等。
- 消息系統:解耦和生產者和消費者、緩存消息等。
- 用戶活動跟蹤:Kafka經常被用來記錄web用戶或者app用戶的各種活動,如瀏覽網頁、搜索、點擊等活動,這些活動信息被各個服務器發布到kafka的topic中,然后訂閱者通過訂閱這些topic來做實時的監控分析,或者裝載到hadoop、數據倉庫中做離線分析和挖掘。
- 運營指標:Kafka也經常用來記錄運營監控數據。包括收集各種分布式應用的數據,生產各種操作的集中反饋,比如報警和報告。
四、相關術語
- Broker
Kafka集群包含一個或多個服務器,這種服務器被稱為broker
- Topic
每條發布到Kafka集群的消息都有一個類別,這個類別被稱為Topic。
- Partition
Partition是物理上的概念,每個Topic包含一個或多個Partition.
- Producer
負責發布消息到Kafka broker
- Consumer
消息消費者,向Kafka broker讀取消息的客戶端。
- Consumer Group
每個Consumer屬於一個特定的Consumer Group(可為每個Consumer指定group name,若不指定group name則屬於默認的group)。
五、單機安裝
1.安裝jdk,輸入yum install -y java-1.8.0-openjdk* 耐心等待即可,安裝完成以后,輸入$ java -version,檢查是否安裝成功。
2.由於Kafka是基於Zookeeper環境的,我們安裝一下Zookeeper(不安裝也可以,最好配置一下,便於后期理解,建議安裝3.*版本)。我以前寫過Zookeeper的安裝過程,想看的可以去了解一下https://www.cnblogs.com/cxiaocai/p/11597465.html
3.輸入wget https://archive.apache.org/dist/kafka/1.1.0/kafka_2.11-1.1.0.tgz 等待下載完成,Kafka現在是0.*,1.*,2.*三個版本,這里建議使用1.*版本,你也可以下載最新的2.3.1版本,下載方式wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.3.1/kafka_2.12-2.3.1.tgz,這里說一下,kafka_2.12-2.3.1.tgz前面的2.12是Scala語言版本,后面的2.3.1才是我們的Kafka的版本。官網地址:http://kafka.apache.org/
4.解壓tar -zxvf kafka_2.11-1.1.0.tgz
5.進入到config目錄下,vim server.properties,我們在123行可以看到Zookeeper的配置如下(不是localhost的自己改一下)
6.啟動$ ./bin/kafka-server-start.sh -daemon config/server.properties
7.進入Zookeeper下查看節點信息。
輸入jps看到我們的進程kafka,單機配置成功。
六、集群安裝
1.重復單機安裝步驟。
2.修改配置文件,在21行broker.id設置為不同的數字,第一台可以設置0,第二台1,依次類推,在123行 zookeeper.connect寫入Zookeeper集群連接,例如zookeeper.connect=47.105.137.93:2181,114.215.145.41:2181,115.29.151.4:2181。
3.分別啟動三個Kafka。
4.測試集群,創建一個主題./bin/kafka-topics.sh --create --zookeeper 47.105.137.93:2181,114.215.145.41:2181,115.29.151.4:2181 --replication-factor 1 --partitions 1 --topic test
到其它服務器下查看現有主題即可。
七、簡單使用
1.創建主題 ./bin/kafka-topics.sh --create --zookeeper IP:端口,IP:端口 --replication-factor 副本數 --partitions 分區數 --topic 主題名
例如:./bin/kafka-topics.sh --create --zookeeper 47.105.137.93:2181,114.215.145.41:2181,115.29.151.4:2181 --replication-factor 1 --partitions 1 --topic xiaocaijishu
2.查看現有主題 ./bin/kafka-topics.sh --list --zookeeper IP:端口,IP:端口
例如:./bin/kafka-topics.sh --list --zookeeper 47.105.137.93:2181,114.215.145.41:2181,115.29.151.4:2181
3.刪除主題 ./bin/kafka-topics.sh --delete --topic xiaocaijishu2 --zookeeper IP:端口,IP:端口
例如:./bin/kafka-topics.sh --delete --topic xiaocaijishu2 --zookeeper 47.105.137.93:2181,114.215.145.41:2181,115.29.151.4:2181
4.發送消息 ./bin/kafka-console-producer.sh --broker-list Kafka服務器IP:9092 --topic 主題名
例如:./bin/kafka-console-producer.sh --broker-list 47.105.137.93:9092 --topic xiaocaijishu
5.消費消息./bin/kafka-console-consumer.sh --bootstrap-server Kafka服務器IP:9092 --consumer-property group.id=消費組名稱 --topic 主題名
例如: ./bin/kafka-console-consumer.sh --bootstrap-server 47.105.137.93:9092 --consumer-property group.id=xiaocaiGroup --topic xiaocaijishu
6.查看現有消費組 ./bin/kafka-consumer-groups.sh --bootstrap-server Kafka服務器IP:9092 --list
例如:./bin/kafka-consumer-groups.sh --bootstrap-server 47.105.137.93:9092 --list
最進弄了一個公眾號,小菜技術,歡迎大家的加入