Appearance
概念 | 说明 |
---|---|
Topic(主题) | 每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic,数据存储在Topic中 |
Partition(分区) | 数据存储的基本单元,topic中的数据分割为一个或多个partition,每个topic至少有一个partition,是有序的 |
Broker | Kafka的服务端程序,可以认为一个mq节点就是一个broker,broker存储topic的数据 |
Producer(生产者) | 消息生产者,用于将消息发送到Kafka |
Consumer(消费者) | 用于处理消息 |
ConsumerGroup(消费者组) | 同个topic, 广播发送给不同的group,一个group中只有一个consumer可以消费此消息 |
其他概念
上述的我们能直接用到的概念,还有一些偏底层的概念。
- Replication 副本(备胎)
- 同个Partition会有多个副本replication ,多个副本的数据是一样的,当其他broker挂掉后,系统可以主动用副本提供服务
- 默认每个topic的副本都是1(默认是没有副本,节省资源),也可以在创建topic的时候指定
- 如果当前kafka集群只有3个broker节点,则replication-factor最大就是3了,如果创建副本为4,则会报错
- ReplicationLeader、ReplicationFollower
- Partition有多个副本,但只有一个replicationLeader负责该Partition和生产者消费者交互
- ReplicationFollower只是做一个备份,从replicationLeader进行同步
- ReplicationManager
- 负责Broker所有分区副本信息,Replication 副本状态切换
- offset
- 每个consumer实例需要为他消费的partition维护一个记录自己消费到哪里的偏移offset
- kafka把offset保存在消费端的消费者组里
安装Kafka
使用docker安装Zookeeper:
docker run -d --name xk857_zookeeper -p 2181:2181 -t wurstmeister/zookeeper
Kafka下载地址:https://kafka.apache.org/downloads
- kafka-xx-yy:xx 是scala版本,yy是kafka版本
安装Kafka (默认 9092端口)
解压:tar -zxvf kafka_2.13-2.8.2.tgz
config目录下 server.properties
properties#标识broker编号,集群中有多个broker,则每个broker的编号需要设置不同 broker.id=0 #修改下面两个配置 ( listeners 配置的ip和advertised.listeners相同时启动kafka会报错) listeners=PLAINTEXT://192.168.133.102:9092(内网Ip) advertised.listeners=PLAINTEXT://cloud:9092(公网ip,如果是虚拟机可以使用hosts映射) #修改zk地址,默认地址 zookeeper.connection=localhost:2181
bin目录启动
shell#启动 ./kafka-server-start.sh ../config/server.properties #停止 kafka-server-stop.sh
创建topic
shell./kafka-topics.sh --create --zookeeper 192.168.133.102:2181 --replication-factor 1 --partitions 1 --topic 自定义Topic名字
查看topic
shell./kafka-topics.sh --list --zookeeper 192.168.133.102:2181
守护进程方式启动Kafka
shell
./kafka-server-start.sh -daemon ../config/server.properties &