粒子物理后传之:消息队列组件Kafka搭建
消息队列的意义
继上周的Geant4数据模拟之后,需要考虑完善一步步那个系统:第一步就是构建消息队列组件。
粒子物理研究涉及大规模数据模拟、收集和分析,建立在一个实验环境的粒子物理硬件涉及到传感器、服务器数据接口、客户端数据分析。消息队列扮演的角色就是数据接口(接收、缓存、广播通知)。它本身不能完成什么,但是想完成这个”数据流”链条绝不能缺少它。
服务器环境搭建
服务器已有环境:
- centos 7 64位
- java jdk环境
- maven环境(本篇文章内不使用它,但之后的开发会使用)
需要搭建的环境:
- zookeeper
- kafka
下载安装:
[root@master ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz
[root@master ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/0.11.0.2/kafka_2.11-0.11.0.2.tgz
事实上现在kafka的新版本内部集成了zookeeper,所以本文不再赘述zookeeper的配置和启动。
kafka的配置和启动
[root@master ~]# tar -zvxf kafka_2.11-0.11.0.2.tgz
[root@master ~]# mv kafka_2.11-0.11.0.2/ /usr/lib/kafka
[root@master ~]# vi /etc/profile
export KAFKA_HOME=/usr/lib/kafka
[root@master ~]# source /etc/profile
[root@master ~]# $KAFKA_HOME/bin/zookeeper-server-start.sh -daemon $KAFKA_HOME/config/zookeeper.properties
[root@master ~]# $KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties &
新增主题和生产消费
[root@master ~]# $KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper localhost:2182 --replication-factor 1 --partitions 1 --topic EnergyInfo
[root@master ~]# $KAFKA_HOME/bin/kafka-topics.sh --list --zookeeper localhost:2181
[root@master ~]# $KAFKA_HOME/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic EnergyInfo
>12.7 Mev
>22.3 Mev
[root@master ~]# $KAFKA_HOME/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic EnergyInfo --from-beginning
12.7 Mev
22.3 Mev
上文命令中我们增加了一个”EnergyInfo”的消息主题,并发布了两个能量值的消息,最后消费者订阅获取消息。
关闭服务
[root@master ~]# $KAFKA_HOME/bin/kafka-server-stop.sh $KAFKA_HOME/config/server.properties &
[root@master ~]# $KAFKA_HOME/bin/zookeeper-server-stop.sh -daemon $KAFKA_HOME/config/zookeeper.properties
经常关闭那个kafka服务会关不了,所以直接ps查看其id再kill -9整死:
[root@master ~]# ps -aux | grep kafka
[root@master ~]# kill -9 id_of_kafka
接下来
我们将开发一个接口来实现粒子束的能量数据消息队列。