Kafka介绍与使用

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基础上修改):

1
2
3
4
5
6
7
8
9
10
tickTime=2000
initLimit=10
syncLimit=5
# 修改成合适的路径
dataDir=/opt/tools/zookeeper_data
clientPort=2181
# 集群中的每个节点都要写在这儿,并保证端口在集群之内畅通
server.1=192.168.50.76:2888:3888
server.2=192.168.50.77:2888:3888
server.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
2
3
4
5
6
7
8
9
10
11
12
13
# 每台节点上这个值不能相同,例如第一台用1,第二台用2,第三台用3
broker.id=1
port=9092
# 允许删除topic。执行删除时topic将被标记为删除,重启后正式删除文件
delete.topic.enable=true
# 修改成keys目录
log.dirs=/opt/tools/kafka_data
# 绑定服务的IP。如果为空,则所有IP都会被绑定端口。新版改成listeners
host.name=192.168.50.76
# 注册到zookeeper中的主机名,须确保通过客户端可以通过该地址访问到Kafka。新版改成advertised.listeners
advertised.host.name=192.168.50.76
# 集群使用的zookeeper主机
zookeeper.connect=192.168.50.76:2181,192.168.50.77:2181,192.168.50.78:2181

2.1 启动停止

1
2
bin/kafka-server-start.sh config/server.properties
bin/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指定副本数。

附录. 参考资料

热评文章