版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010837612/article/details/78594702
AMQP协议
kafka是基于仿AMQP协议开发的,AMQP协议模型如下:
基本概念:
消费者(consumer):从消息队列中请求消息的客户端应用程序
生产者(producer):想broker发布消息的客户端应用程序
AMQP服务端(broker):用来接收生产者发送的消息并将这些消息路由给服务器中的队列
主题(topic):类似新闻中的分类概念,在实际开发中通常一个业务一个主题
分区(partition):一个topic中的消息数据按照多个分区组织,分区是kafka消息队列中组织的最小单位,一个分区可以看做是一个FIFO的队列
Zookeeper集群搭建
软件环境:
linux服务器需要奇数台(1台,或3台,5台)
java jdk
zookeeper
首先我们需要安装jdk,请参考Linux安装JDK
下载zookeeper
下载zookeeper
wget http://mirror.bit .edu .cn /apache/zookeeper/zookeeper-3.4 .10 /zookeeper-3.4 .10 .tar .gz
tar -zxvf zookeeper-3.4 .10 .tar .gz
mv zookeeper-3.4 .10 /usr/local/zookeeper
cd /usr/local/zookeeper
配置
在zookeeper的conf目录中,有一个官方提供的配置文件模板zoo_sample.cfg
,我们将复制一份,重命名为zoo.cfg
,并修改它:
tickTime =2000
initLimit =10
syncLimit =5
dataDir =/data/zookeeper/zkdata
dataLogDir =/data/zookeeper/zkdatalog
clientPort =2181
server.1=10.168.168.xx:2888:13888
配置文件中的端口可以随意更改,不冲突即可。
手动创建dataDir
和 dataLogDir
:
root@ubuntu :/
root@ubuntu :/
进入刚刚配置的dataDir
中,将配置文件中配置的server的id写入到myid文件中,每台服务器都执行这个操作,id和服务器不能对应错
echo 1 > myid
启动
进入zookeeper的bin目录中,有一个zkServer.sh目录,用于管理zookeeper
Usage : ./zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
所有服务器使用该命令启动:
./zkServer.sh start
清理文件
在上面配置的/data/zookeeper/zkdata
目录,将来会产生大量的快照文件,需要我们定时去清除旧的文件,官方也对此做出了说明官方链接 :
其实官方已经为我们提供了一个清理旧文件的脚本,位于zookeeper的bin目录下zkCleanup.sh
,定时执行即可,例如:
./zkCleanup.sh -n 3
kafka集群搭建
下载kafka
注意,要下载二进制包,不要下载源码
https: //archive.apache .org /dist/kafka/0.8 .2 .0 /kafka_2.9 .2 -0.8 .2 .0 .tgz
配置
解压kafka后,进入config目录,修改server.properties
配置文件,主要修改以下几项:
#给当前服务器指定一个id,你的多台服务器的这个值要设置成不一样的
broker.id =0
#日志文件所在目录
log.dirs =/data/kafka/logs/
#每个topic的分区数,可改可不改
num.partitions =1
#zookeeper集群的地址和端口,ip地址要和上面zookeeper配置的server.1=10.168.168.xx一致,端口号和zookeeper配置文件中的clientPort一致
zookeeper.connect =10.168 .168 .xx :2181 ,10.168 .168 .xx :2181 ,10.168 .168 .xx :2181
启动
cd /usr/local /kafka/bin
. /kafka-server -start . sh -daemon .. /config/server. properties
启动之后,我们可以使用一些命令来测试一下
创建主题
- . - - - - - - - - - - -
查看主题列表
- . - - - -
其他命令参考官方网站
http://kafka.apache.org/quickstart