简介:Apache Kafka是一个开源消息系统,是由Apache软件基金会开发的一个开源消息系统项目。Kafka是一个分布式消息队列。Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)称为broker。无论是kafka集群,还是consumer都依赖于zookeeper集群保存一些meta信息,来保证系统可用性。能够很好地进行离线和在线应用。分布式消息传递基于可靠的消息队列,在客户端应用和消息系统之间异步传递消息。有两种主要的消息传递模式:点对点传递模式、发布-订阅模式。大部分的消息系统选用发布-订阅模式。Kafka就是一种发布-订阅模式。
在发布-订阅消息系统中,消息被持久化到一个topic中。与点对点消息系统不同的是,消费者可以订阅一个或多个topic,消费者可以消费该topic中所有的数据,同一条数据可以被多个消费者消费,数据被消费后不会立马删除。在发布-订阅消息系统中,消息的生产者称为发布者,消费者称为订阅者。
JMS中定义了两种消息模型:点对点(point to point, queue)和发布/订阅(publish/subscribe,topic)。主要区别就是是否能重复消费。点对点(Queue)不可重复消费;而发布/订阅(Topic)可以重复消费。
本文主要介绍消息订阅服务器Kafka的安装与配置。详细内容请参考下文。
一、准备安装环境
1、登陆Linux系统
2、下载Kafka及其依赖包JDK&Zookeeper
3、上传之前下载好的安装包到 /datalake 目录
4、切换到/datalake目录并批量解压这几个安装包
执行指令# ls * | xargs -n1 tar xzvf批量解压相应的软件包
5、将解压的软件移动到 /usr/local对应目录
执行指令# mv jdk1.8.0_202 /usr/local/jdk迁移JDK
执行指令# mv kafka_2.11-2.1.0 /usr/local/kafka迁移Kafka
执行指令# mv zookeeper-3.4.5 /usr/local/zk迁移Zookeeper
二、安装并配置Kafka服务器
1、配置 Zookeeper
首先,先备份 Zookeeper 的默认配置文件
然后,修改配置文件zoo.cfg, 将 dataDir 选项配置为
dataDir=/usr/local/zk/data
2、配置 Kafka
执行指令# vim
/usr/local/kafka/config/server.properties将 log.dirs 参数修改为log.dirs=/usr/local/kafka/logs
3、配置环境变量
执行指令# vim /etc/profile添加如下内容
export JAVA_HOME=/usr/local/jdk
export ZK_HOME=/usr/local/zk
export KAFKA_HOME=/usr/local/kafka
export PATH=$PATH:$JAVA_HOME/bin:$ZK_HOME/bin:$KAFKA_HOME/bin
执行指令# source /etc/profile是环境变量生效
三、启动Kafka服务器
1、执行指令# ./zkServer.sh start启动Zookeeper
2、启动 Kafka
执行指令# ./kafka-server-start.sh /usr/local/kafka/config/server.properties
3、打开另一个Shell窗口,创建topic
执行指令# kafka-topics.sh --zookeeper 127.0.0.1:2181 --replication-factor 1 --partitions 1 --create --topic test
4、再开一个 Shell 窗口,启动生产者producer
执行指令# kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test
5、再打开另一个 Shell 窗口,启动消费者consumer
执行指令# kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test
四、测试Kafka消息发布-订阅模式
说明:从生产者启动页面,发送数据,消费者能正常接收数据。
1、生产者producer界面
2、消费者consumer界面
备注:生产者发送的消息(无论是英文还是中文),消费者都可以及时看到。