1.概述
kafka是一个分布式的基于发布/订阅的消息队列,主要应用于大数据实时处理领域。它的主要特点包括:高吞吐量、低延迟,可扩展性、持久性、可靠性、容错性、高并发等。同时优势主要体现在以下几个方面:
(1)客户端语言丰富:支持Java、.Net、PHP、Ruby、Python、Go等多种语言;
(2)高性能:单机写入TPS约在100万条/秒,消息大小10个字节; 提供完全分布式架构,并有replica机制,拥有较高的可用性和可靠性,
理论上支持消息无限堆积;
(3)支持批量操作; 消费者采用Pull方式获取消息。消息有序,通过控制能够保证所有消息被消费且仅被消费一次;
(4)有优秀的第三方KafkaWeb管理界面Kafka-Manager;
(5)在日志领域比较成熟,被多家公司和多个开源项目使用。
作为一个优秀的开源消息中间件,Kafka被广泛应用到不同的项目中。本文将基于centos环境,安装并配置Kafka环境,同时将演示Kafka生产与消费消息。
2.centos中安装Kafka
2.1 下载kafka安装包
进入centos环境,为了方便演示,本文将直接下载kafka到root文件夹下,各位也可以根据需要下载到指定文件夹下。执行命令如下,我这里安装的是2.12版本,可根据需要自行选择版本。
wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.5.0/kafka_2.12-2.5.0.tgz
下载成功后结果如下图所示:
2.2 解压缩包
上述安装包下载完成后,执行解压缩命令:
tar -zxvf kafka_2.12-2.5.0.tgz
解压后执行命令
ll
可观察到当前文件夹下会生成一个解压文件夹:
2.3 修改配置文件
1.进入上述解压后的文件夹,执行命令如下:
cd kafka_2.12-2.5.0
利用ll命名可查看该文件夹下的所有目录:
2.进入config文件夹下修改server.properties文件,执行命令如下:
vi config/server.properties
修改其中的配置为:
broker.id=1
log.dirs=/data/kafka/logs-1
至此,在centos环境中kafka的安装与配置就完成了。
3.生产者消费者演示
3.1 启动zookeeper
这里将以安装包中的脚本启动单节点的zookeeper,在上述解压后的文件夹下执行以下命令:
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
操作演示如下:
3.2 启动Kafka服务
在当前文件夹下利用kafka-server-start.sh来启动kafka,执行命令如下:
bin/kafka-server-start.sh config/server.properties
若界面出现以下指令,则表明启动成功:
3.3 创建topic
在当前文件夹下利用kafka-topics.sh来创建topic,执行命令如下:
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic demo
成功结果如下:
利用kafka-topics.sh中的list指令可以查看所有的主题,执行指令如下:
bin/kafka-topics.sh --list --zookeeper localhost:2181
我这里创建了两个主题,可以看到已经显示了:
3.4 启动生产者生产消息
利用kafka-console-producer.sh来进行消息的生产,执行的指令如下:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic demo
执行成功后可以进行消息的发送:
3.5 启动消费者消费消息
利用kafka-console-consumer.sh来进行消费消息,执行的指令如下:
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic demo --from-beginning
执行成功后可以获取生产者生产的消息:
3.6 注意事项
在上述启动kafka过程中,启动kafka窗口、生产者、消费者分别启动一个shell窗口,便于操作与观察。如下图所示:
4.小结
本文基于centos环境下载并安装了kafka,同时演示了生产者与消费者的案例,本文主要演示的单机版的案例,下一章将介绍基于centos环境下集群的搭建与配置。
5.参考文章