Kafka官网:http://kafka.apache.org
Kafka相关原理介绍,推荐一篇:https://www.jianshu.com/p/d3e963ff8b70
搭建Kafka集群前要先搭好zookeeper,本文测试使用单点zookeeper,默认端口2181。
搭建环境:Red Hat 4.4.7-3、JDK8.0、IP:10.1.172.181
Kafka下载地址:https://www.apache.org/dyn/closer.cgi?path=/kafka/2.1.0/kafka_2.11-2.1.0.tgz
解压到/usr/local/kafka,进入目录,结构如下:
1 2 |
|
分别修改3个配置文件的对应的配置如下
config/server.properties:
broker.id=0
listeners=PLAINTEXT://10.1.172.181:9092
log.dirs=/tmp/kafka-logs-1
zookeeper.connect=10.1.172.181:2181
config/server-1.properties:
broker.id=1
listeners=PLAINTEXT://10.1.172.181:9093
log.dirs=/tmp/kafka-logs-1
zookeeper.connect=10.1.172.181:2181
config/server-2.properties:
broker.id=2
listeners=PLAINTEXT://10.1.172.181:9094
log.dirs=/tmp/kafka-logs-2
zookeeper.connect=10.1.172.181:2181
bin/kafka-server-start.sh config/server.properties &
bin/kafka-server-start.sh config/server-1.properties &
bin/kafka-server-start.sh config/server-2.properties &
三个broker都连接在同一个zk集群形成Kafka集群,也意味着一套zk集群只能对应一套Kafka集群,集群中的主从由zk选举产生。
Ps: RocketMq是通过连接同一套NameSrv的broker节点通过ClusterName来形成集群的,指定broker.id,0为主,其他为从,一套NameSrv可以管理多套RocketMq集群。
bin
/kafka-topics
.sh --create --zookeeper 10.1.172.181:2181 --replication-factor 3 --partitions 3 --topic my-replicated-topic4
--zookeeper 10.1.172.181:2181 指定zookeeper,也即指定在哪个kafka集群创建Topic
--replication-factor 3 指定每个Partition有3个副本
--partitions 3 指定有3个分区,一个分区只能一个客户端消费,如果需要更大的消费能力,可以调大。单物理机器分区数量不宜超过64,性能随着分区数增多而下降。阿里的一篇测试报告:
http://jm.taobao.org/2016/04/07/kafka-vs-rocketmq-topic-amout/
--topic my-replicated-topic4 指定Topic名称为my-replicated-topic4
bin
/kafka-topics
.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic4
Topic:my-replicated-topic4 PartitionCount:3 ReplicationFactor:3 Configs:
Topic: my-replicated-topic4 Partition: 0 Leader: 1 Replicas: 1,0,2 Isr: 2,1,0
Topic: my-replicated-topic4 Partition: 1 Leader: 2 Replicas: 2,1,0 Isr: 2,1,0
Topic: my-replicated-topic4 Partition: 2 Leader: 2 Replicas: 0,2,1 Isr: 2,1,0
从控制台获取的信息可以看到Topic中有3个分区,3个副本,以及每个分区对应的Leader的BrokerId,副本所在brokerId列表,以及同步中的副本brokerId列表。
遇到性能瓶颈时可以增加分区数如下:
bin/kafka-topics.sh --alter --zookeeper 10.1.172.181:2181 --partitions 10 --topic my-replicated-topic4
kafka manager:由雅虎开源,地址https://github.com/yahoo/kafka-manager
Kafka&RocketMQ可靠性对比
RocketMq&Kafka单机性能对比
NSQ vs Kafka