简介
Kafka是一个分布式的基于发布订阅模式的消息队列,主要应用于大数据实时处理领域。
Kafka采用Scala语言开发,需要协调Zookeeper使用。
目前Kafka已经成为,一个分布式流式处理平台,他一高吞吐、可持久化、可水平扩展、支持流处理等多种特性而被广泛应用。
特性
-
高吞吐、低延迟
Kafka每秒可以处理几十万条数据,他的延迟最低只有几毫秒,主题可以分为多个分区,消费组对分区进行消费操作
-
可扩展性
Kafka集群支持热扩展
-
持久性、可靠性
消息被持久化到本地磁盘,并且支持数据备份,防止数据丢失
-
容错性
允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)
-
高并发
支持数千个客户端同时读写
适用场景
- 日志收集
- 消息系统
- 用户跟踪
- 运营指标
- 流式处理
优势
- 可伸缩性
- 高吞吐量
- 容错和可靠性
Quick Start
以下内容来自:APACHE KAFKA QUICKSTART
Step 1:GET KAFKA
下载并解压Kafka。
# 解压,我下载的是最新稳定版,kafka_2.13-3.2.0.tgz
tar -zxf kafka_2.13-3.2.0.tgz
# 进入kafka目录
cd kafka_2.13-3.2.0
Step 2:START THE KAFKA ENVIRONMENT
准备并运行kafka环境(需自备Java 8以上)。
# 首先启动zookeeper,bin目录下自带zookeeper运行环境
bin/zookeeper-server-start.sh config/zookeeper.properties
# 开启一个新终端,启动kafka-server
bin/kafka-server-start.sh config/server.properties
这样,kafka环境就算启动成功了。
Step 3:CREATE A TOPIC TO STORE YOUR EVENTS
创建一个主题去存储你的事件
# 开启生产者控制台,producer
bin/kafka-console-producer.sh --topic qc-events --bootstrap-server localhost:9092
bin/kafka-console-producer.sh:启动生产者服务--topic:标注这是主题模式qc-event:主题名称--bootstrap-server:指定要链接的服务器localhost:9092:服务器列表,key-value,所以上面的意思大概就是,在本地9092端口开启一个名为
qc-events生产者的主题客户端,开启之后,就可以输入消息了。
# 开启消费者控制台,consumer
bin/kafka-console-consumer.sh --topic qc-events --from-beginning --bootstrap-server localhost:9092
bin/kafka-console-consumer.sh:启动消费者服务--topic:标注这是主题模式qc-event:主题名称--bootstrap-server:指定要链接的服务器localhost:9092:服务器列表,key-value,所以上面的意思大概就是,开启一个连接本地9092端口一个topic为
qc-events的消费者客户端,开启之后就会收到从开始到现在的消息。
当然,kafka也是支持持续通信的,只要不关闭连接。
开启生产者客户端,
开启消费者客户端,
这样双方是可以持续通信的。
Step 4:WRITE SOME EVENTS INTO THE TOPIC
向主题模式写点东西,其实在上一步已经完成了。
只需要在开启服务后,输入想要传递的消息即可。
Step 5:READ THE EVENTS
读取事件,同上,开启消费者客户端即可读取消息。
Step 6:IMPORT/EXPORT YOUR DATA AS STREAMS OF EVENTS WITH KAFKA CONNECT
用kafka以事件流的形式导入/导出你的数据。
这一步需要我们编辑文件 config/connect-standalone.properties的plugin.path属性。
# 找到相应位置
cd config
# 编辑文件
vim connect-standalone.properties
# 设置属性值
plugin.path=lib/connect-file-3.2.0.jar
准备数据
# 将数据写入test.txt,之后你会发现多了一个test.txt文件
echo -e "foo\nbar" > test.txt
# 查看
ls
# 查看内容
cat test.txt
开启连接
# 开启消费者监听服务,
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic qs-events --from-beginning
# 开启生产者,并导入数据
bin/kafka-console-producer.sh --topic qs-events --bootstrap-server localhost:9092 < test.txt
STEP 7: PROCESS YOUR EVENTS WITH KAFKA STREAMS
用Kafka流处理事件。
这一步是关于Kafka的API的调用的Demo案例。这会在后面详细讲解,只是只言片语或简单的代码块是没有太大的意义的(会的人不用看,不会的人看不懂系列)。
STEP 8: TERMINATE THE KAFKA ENVIRONMENT
这一步就是,如何关闭Kafka,之前已经使用过了,Ctrl + c。
plus:删除kafka数据日志/zookeeper数据日志
# 删除数据日志
rm -rf /tmp/kafka-logs /tmp/zookeeper
提示:很重要,记得先做备份,先做备份,先做备份,在删除。