Apache Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。 Apache Kafka与传统消息系统相比,有以下不同:
- 它被设计为一个分布式系统,易于向外扩展;
- 它同时为发布和订阅提供高吞吐量;
- 它支持多订阅者,当失败时能自动平衡消费者;
- 它将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序。
关于Kafka的介绍网上有很多,这里不展开,主要说明一下如何搭建集群。下面以搭建三台节点的集群为例子。三台服务器的IP为:192.168.50.76, 192.168.50.77, 192.168.50.78。
1. Zookeeper搭建
以下操作在zookeeper主目录下。
1.1 配置文件
修改配置文件./conf/zoo.cfg
(可以在./conf/zoo_sample.conf
基础上修改):
1tickTime=2000
2initLimit=10
3syncLimit=5
4# 修改成合适的路径
5dataDir=/opt/tools/zookeeper_data
6clientPort=2181
7# 集群中的每个节点都要写在这儿,并保证端口在集群之内畅通
8server.1=192.168.50.76:2888:3888
9server.2=192.168.50.77:2888:3888
10server.3=192.168.50.78:2888:3888
1.2 启动停止
启动命令:
1./bin/zkServer.sh start
停止命令:
1./bin/zkServer.sh stop
2. Kafka
以下操作在Kafka主目录下进行。
2.1 配置文件
修改配置文件./config/server.properties
:
1# 每台节点上这个值不能相同,例如第一台用1,第二台用2,第三台用3
2broker.id=1
3port=9092
4# 允许删除topic。执行删除时topic将被标记为删除,重启后正式删除文件
5delete.topic.enable=true
6# 修改成keys目录
7log.dirs=/opt/tools/kafka_data
8# 绑定服务的IP。如果为空,则所有IP都会被绑定端口。新版改成listeners
9host.name=192.168.50.76
10# 注册到zookeeper中的主机名,须确保通过客户端可以通过该地址访问到Kafka。新版改成advertised.listeners
11advertised.host.name=192.168.50.76
12# 集群使用的zookeeper主机
13zookeeper.connect=192.168.50.76:2181,192.168.50.77:2181,192.168.50.78:2181
2.1 启动停止
1bin/kafka-server-start.sh config/server.properties
2bin/kafka-server-stop.sh config/server.properties
2.2 创建topic
1./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
partitions指定分区数;replication-factor指定副本数。