Kafka -- Quick Start

158 阅读3分钟

简介

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

image-20220524111613822

Step 2:START THE KAFKA ENVIRONMENT

准备并运行kafka环境(需自备Java 8以上)。

# 首先启动zookeeper,bin目录下自带zookeeper运行环境
bin/zookeeper-server-start.sh config/zookeeper.properties

image-20220524111947431

# 开启一个新终端,启动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的消费者客户端,开启之后就会收到从开始到现在的消息。

image-20220524121529093

当然,kafka也是支持持续通信的,只要不关闭连接。

开启生产者客户端,

image-20220524121615158

开启消费者客户端,

image-20220524121647551

这样双方是可以持续通信的。

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.propertiesplugin.path属性。

# 找到相应位置
cd config
​
# 编辑文件
vim connect-standalone.properties
​
# 设置属性值
plugin.path=lib/connect-file-3.2.0.jar

image-20220524122528241

image-20220524122541759

准备数据

# 将数据写入test.txt,之后你会发现多了一个test.txt文件
echo -e "foo\nbar" > test.txt
​
# 查看
ls# 查看内容
cat test.txt

image-20220524123120657

开启连接

# 开启消费者监听服务,
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

image-20220524154933750

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

提示:很重要,记得先做备份,先做备份,先做备份,在删除。