Kafka是一个分布式流平台,基于Zookeeper的分布式消息系统;
具有高吞吐量、高性能、实时及高可用等特点
由服务器和客户端组成,通过高性能的TCP网络协议进行通信。
一、安装JDK
下载地址: https://www.oracle.com/java/technologies/javase-downloads.html
下载JDK
上传安装包
将下载好的文件上传到centOS系统上,自定义上传路径:
mkdir /opt/software
安装lrzsz
yum install -y lrzse
执行命令 "rz" 上传刚刚下载的jdk包;(注:如果传输失败了,切换到root权限去传输,切换命令:"su root" ,回车输入对应密码)
解压
创建安装目录
mkdir /opt/install
解压文件;命令:tar -zxvf 解压包名称 -C 解压目录
tar -zxvf jdk-8u301-linux-x64.tar.gz -C ../install/
配置环境变量
复制箭头指示的路径
编辑profile文件
vi /etc/profile
添加下面几行
刷新profile文件,并查看jdk版本确认是否安装完成
source /etc/profile
java -version
二、安装ZooKeeper
上传后解压,同jdk
启动命令:
切到安装目录的bin目录
./zkServer.sh start
查看是否启动成功
三、安装Kafka
下载Kafka安装包--kafka_2.11-2.4.0.tgz
传输并解压 同上
四、Kafka基本概念
✧ Topic: 一个虚拟的概念,由1到多个Patitions组成(就是一个用来存放消息的地方)
Kafka 中的topic
总是多producer
和多consumer
;一个topic可以有零个、一个或多个向其写入事件的producer,以及零个、一个或多个订阅这些事件的consumer。
可以根据需要随时读取主题中的事件——与传统消息传递系统不同,事件在消费后不会被删除。
相反,您可以通过每个主题的配置设置来定义 Kafka 应该保留您的事件多长时间,之后旧事件将被丢弃
✧ Parttion: 实际消息存储单位
一个topic
分布在位于不同 Kafka 代理的多个桶
上。它允许客户端应用程序同时从/向多个代理读取和写入数据。当一个新事件发布到一个topic时,它实际上被附加到该topic的partition之一。并且 Kafka给定topic partition的任何consumer将始终以与写入事件完全相同的顺序读取该分区的事件。
✧ Producer: 消息生产者---那些向 Kafka 发布(写入)事件的客户端应用程序
✧ Consumer: 消息消费者---订阅(读取和处理)这些事件的那些客户端应用程序。
五、Kafka基本命令
#启动: 加"&"表示后台运行
./bin/kafka-server-start.sh config/server.properties &
#停止
./bin/kafka-server-stop.sh
#创建Topic
./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic topic-name
#查看已创建的topic
./bin/kafka-topics.sh --list --zookeeper localhost:2181
#发送消息 这边的IP换成自己本机的IP
./bin/kafka-console-producer.sh --broker-list 192.168.75.128:9092 --topic topic-name
#接收消息
./bin/kafka-console-consumer.sh --bootstrap-server 192.168.75.128:9092 --topic topic-name --from-begining
Kafka优点
-
高吞吐量
使用延迟低至2ms的机器集群在网络有限的吞吐量上交付消息。 -
可伸缩
将生产集群规模扩大到1000个代理、每天数万亿条消息、pb级数据和数十万个分区。弹性伸缩贮存加工。 -
持久性
将数据流安全地存储在分布式、持久、容错的集群中。 -
高可用性
在可用性区域上有效地扩展集群,或者跨地理区域连接独立的集群。