Kafka是一个分布式消息缓存系统
- broker
Kafka集群包含一个或多个服务器,这种服务器成为broker
- Topic
每条发布到Kafka集群的消息都有一个类别,这个类别被称为topic(物理上不同的topic的消息分开存储。逻辑上一个topic的消息虽然保存在一个或多个broker上但用户只需指定消息的topic即可生产或 消费数据而不必关心数据存于何处)
- Partition
partition是物理上的一个概念,每个topic包含一个或多个partition,创建topic时可指定partition数量。每个partition对应于一个文件夹,该文件夹存储该partition的数据和索引文件
- Producer
负责发送消息到Kafka broker
- Consumer
消费信息。每个consumer属于一个特定的consuer group(可为每个consumer指定group name,如不指定group name则属于默认的group)。使用consimer high level API时,同一topic的一个消息只能被同一个consumer group内的一个consumer消费,但多个consumer group课同时消费这一消息
Kafka 的安装
- 解压kafka压缩包
- 修改配置文件 config/server.properties
3.分发安装包,并修改每台机器的broker.id
启动命令
[root@linux01 kafka_2.11-2.0.0]# bin/kafka-server-start.sh -daemon config/server.properties
但是只能起一台机器的Kafka
- 编写一键启动的脚本
#!/bin/bash
for i in {1..3}
do
echo "linux0${i} ${1}ing ...."
ssh linux0${i} "source /etc/profile;/opt/apps/kafka_2.11-2.0.0/bin/kafka-server-${1}.sh -daemon /opt/apps/kafka_2.11-2.0.0/config/server.properties "
done
Kafka基本操作
- list存在的topic
[root@linux01 kafka_2.11-2.0.0]# bin/kafka-topics.sh --list --zookeeper linux01:2181
- 创建topic
[root@linux01 kafka_2.11-2.0.0]# bin/kafka-topics.sh --create --topic kafkaDemo --partitions 2 --replication-factor 3 --zookeeper linux01:2181
Created topic "kafkaDemo".
- 查看topic信息
[root@linux01 kafka_2.11-2.0.0]# bin/kafka-topics.sh --describe --topic kafkaDemo --zookeeper linux01:2181
Topic:kafkaDemo PartitionCount:2 ReplicationFactor:3 Configs:
Topic: kafkaDemo Partition: 0 Leader: 1 Replicas: 1,2,0 Isr: 1,0
Topic: kafkaDemo Partition: 1 Leader: 2 Replicas: 2,0,1 Isr: 2,0,1
- 控制台生产者工具
[root@linux01 kafka_2.11-2.0.0]# bin/kafka-console-producer.sh --broker-list linux01:9092 --topic kafkaDemo
- 控制台消费者工具
bin/kafka-console-consumer.sh --bootstrap-server linux01:9092,linux02:9092,linux03:9092 --topic kafkaDemo --from-beginning