Apache Kafka

来自Gea-Suan Lin's Wiki
Gslin讨论 | 贡献2019年3月5日 (二) 04:52的版本 →‎介紹
跳到导航 跳到搜索

Apache Kafka是一套基于JavaScala,提供Streaming架构的软体。

介绍

Kafka本身不过多处理多节点之间的效能问题,而是透过ZooKeeper处理。可以从“#测试”的章节看到操作时都是指定ZooKeeper当作API Endpoint。在Production环境上,一般我们会用TCP load balancer放在前面,让用户端架构比较简单(仅需设定单一名称)。

安装

目前在Ubuntu上没有系统套件或是PPA可以安装,一般是自行下载后装到/opt下。最新版的资讯可以在Kafka的Download页面得到,这边使用2.1.1版:

cd /tmp
wget https://ftp.jaist.ac.jp/pub/apache/kafka/2.1.1/kafka_2.12-2.1.1.tgz
cd /opt
sudo tar zxvf /tmp/kafka_2.12-2.1.1.tgz
sudo ln -fs kafka_2.12-2.1.1 kafka

设定

  • 修改/opt/kafka/config/server.properties内的broker.id,这边一台设1,另外一台设2
  • 修改/opt/kafka/config/server.properties内的zookeeper.connect
    • 改成三台ZooKeeper主机的位置,像是zookeeper.connect=1.2.3.4:2181,5.6.7.8:2181,9.10.11.12:2181
    • 或是改成对应的TCP load balancer,像是test-gslin-zookeeper-xxxxxxxxx.us-east-1.elb.amazonaws.com

测试

没有TCP load balancer时可以直接指定所有的ZooKeeper主机:

/opt/kafka/bin/kafka-topics.sh --describe --zookeeper 1.2.3.4:2181,5.6.7.8:2181,9.10.11.12:2181
/opt/kafka/bin/kafka-topics.sh --create --zookeeper 1.2.3.4:2181,5.6.7.8:2181,9.10.11.12:2181 --replication-factor 2 --partitions 1 --topic my-replicated-topic
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper 1.2.3.4:2181,5.6.7.8:2181,9.10.11.12:2181

其中所有的:2181都可以简化省略,因为ZooKeeper的预设Port就是Port 2181:

/opt/kafka/bin/kafka-topics.sh --describe --zookeeper 1.2.3.4,5.6.7.8,9.10.11.12
/opt/kafka/bin/kafka-topics.sh --create --zookeeper 1.2.3.4,5.6.7.8,9.10.11.12 --replication-factor 2 --partitions 1 --topic my-replicated-topic
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper 1.2.3.4,5.6.7.8,9.10.11.12

有TCP load balancer时:

/opt/kafka/bin/kafka-topics.sh --describe --zookeeper test-gslin-zookeeper-xxxxxxxxx.us-east-1.elb.amazonaws.com
/opt/kafka/bin/kafka-topics.sh --create --zookeeper test-gslin-zookeeper-xxxxxxxxx.us-east-1.elb.amazonaws.com --replication-factor 2 --partitions 1 --topic my-replicated-topic
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper test-gslin-zookeeper-xxxxxxxxx.us-east-1.elb.amazonaws.com

外部连结