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
#集群服务器列表,几台服务器集群就配几个,此处的1,2,3是服务器对应的id
server.1=10.168.168.xx:2888:13888
#server.2=10.168.168.xx:2888:13888
#server.3=10.168.168.xx:2888:13888
配置文件中的端口可以随意更改,不冲突即可。
手动创建dataDir
和 dataLogDir
:
root@ubuntu:/# mkdir -p /data/zookeeper/zkdata
root@ubuntu:/# mkdir -p /data/zookeeper/zkdatalog
进入刚刚配置的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
启动之后,我们可以使用一些命令来测试一下
创建主题
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
查看主题列表
bin/kafka-topics.sh --list --zookeeper localhost:2181
其他命令参考官方网站