Kafka概念与安装

一、概念

1. kafka主要由Producer、KafkaCluster、Consumer三部分构成
2. KafkaCluster一般由多个服务器组成(至少需要2N+1,N>0),每个服务器有一个唯一的broker.id,不允许重复
3. 一个KafkaCluster分为多个Topic,可以分布在不同的服务器上,每一个Topic会有多个Partation
4. Producer和Consumer面向的都是一个Topic
5. 每一个Topic的众多Partition 中,会有一个leader以及多个follower,Producer和Consumer永远是与Topic的leader Partition 交流,当leader Partition 挂掉以后,其他follower Partition 才有机会成为leader Partition ,(Replication是对leader和follower的总称)
6. 在kafka中默认Replication副本的最大数量是10个,且Replication副本的数量不能大于Broker的数量,follower和leader绝对是在不同的机器,同一机器对同一个分区也只可能存放一个Replication副本(包括自己)
7. Consumer可以分为多个Group,即一个Group可以有多个Consumer,但一个Consumer只能消费一个Partition
8. 真正存放Message的是Partition ,Partition 是一个有序的队列,里面存放的每一个Message都会被分配一个有序的 Id(Offset)
9. Consumer消费Message,需要提前知道Message在哪一个Topic的哪一个Partition 的Offset是多少才能消费

二、安装

前情提要
  1. 除了Producer、KafkaCluster、Consumer三部分,一个完整的消息链路还需要Zookeeper的参与,负责监控整个KafkaCluster,比如每个broker的上下线信息以及多个Partition 中谁是Leader等
  2. Kafka 2.8.0之前需要单独安装启动Zookeeper,之后Zookeeper成为可选项
1. 下载上传解压Zookeeper,并将conf目录下的zoo_sample.cfg重命名为zoo.cfg
2. 修改zoo.cfg,并保存
  • dataDir=/tmp/zookeeper(必修)
  • clientPort=2181(可修)
3. 下载上传解压kafka,观察目录及文件
/bin
  • kafka-console-producer.sh
  • kafka-topics.sh
  • kafka-console-consumer.sh
  • kafka-server-start.sh
  • kafka-server-stop.sh
/config
  • producer.properties
  • server.properties
  • consumer.properties
    Kafka概念与安装_第1张图片
4. 编辑并修改server.properties的三个地方
  1. broker.id=0
  2. log.dirs=/tmp/kafka-logs(必修)
  3. zookeeper.connect=localhost:2181(可修)
5. 启动Zookeeper(二选一)
  • 通过Kafa的命令和配置文件启动Zookeeper(这种关闭会话框就会关闭Zookeeper)
bin/zookeeper-server-start.sh  config/zookeeper.properties
  • 后台启动Zookeeper
bin/zookeeper-server-start.sh -daemon  config/zookeeper.properties
  • 观察Zookeeper是否启动成功(二选一)
ps -aux | grep 'zookeeper'
ps -ef | grep zookeeper
6. 启动Kafka(二选一)
  • 这种关闭会话框就会关闭Kafka
bin/kafka-server-start.sh  config/server.properties
    • 后台启动Kafka
sh bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 &
7. Topic常用命令

Kafka概念与安装_第2张图片

8. 创建Topic(创建)
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
# 在localhost:9092这个broker节点上创建一个test的Topic,该Topic有一个分区,一个副本
# localhost:9092 是在config/server.properties中默认的端口
9. 查看Topic列表
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
[root@QK kafka3.1.0]# bin/kafka-topics.sh --bootstrap-server localhost:9092 --topic test --describe
Topic: test	TopicId: Vxc5mI4KQ1yTEgyWX2HkRA	PartitionCount: 1	ReplicationFactor: 1	Configs: segment.bytes=1073741824
	Topic: test	Partition: 0	Leader: 0	Replicas: 0	Isr: 0
[root@QK kafka3.1.0]# 
10. 修改分区数(分区数只能增加不能减少,保证其他消费者不会修改分区前后对消费的分区产生冲突)
[root@QK kafka3.1.0]# bin/kafka-topics.sh --bootstrap-server localhost:9092 --topic test --alter --partitions 3
[root@QK kafka3.1.0]# bin/kafka-topics.sh --bootstrap-server localhost:9092 --topic test --describe
Topic: test	TopicId: Vxc5mI4KQ1yTEgyWX2HkRA	PartitionCount: 3	ReplicationFactor: 1	Configs: segment.bytes=1073741824
	Topic: test	Partition: 0	Leader: 0	Replicas: 0	Isr: 0
	Topic: test	Partition: 1	Leader: 0	Replicas: 0	Isr: 0
	Topic: test	Partition: 2	Leader: 0	Replicas: 0	Isr: 0
[root@QK kafka3.1.0]# 
11. 创建生产者,往指定Topic中发送消息
[root@QK kafka3.1.0]# bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test
>hello i am^H^H^H^H^H^H^H^H
>
12. 创建消费者,消费指定Topic中的消息
  • 此时的消费者只能消费自己开始监听后的消息,不能消费自己监听前的消息
[root@QK kafka3.1.0]# bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test

Kafka概念与安装_第3张图片

  • 增加参数--from-beginning,就可以消费到监听前的消息

Kafka概念与安装_第4张图片

你可能感兴趣的:(Kafka,kafka)