基础概念
集群-cluster
kafka以集群方式对外提供服务,一个集群可以包含1-N个代理(机器)
代理-broker
kafka集群中的一个节点(机器)
主题-topic
一个消息类型,或者说一个消息队列
消费组-consumer group
同一系统的不同节点称作一个消费组
一个消费组可以消费多类消息
机器:可以为物理机,也可以为虚拟机,也可以为不同的kafka实例
运行环境
kafka运行在linux机器上,安装过程可以参考
漫游Kafka实战篇之搭建Kafka运行环境
jre
Kafka是用scala编写的,可以运行在JVM上,所以需要安装jre。如果机器上没有java环境,则需要安装。
zookeeper
kafka是以集群形式提供服务,所以需要zookeeper注册中心来管理这些服务。
官网提供的kafka安装包中,集成了zookeeper,可以使用其自带的zk,也可以使用其它的zk集群。
具体使用的zk写在kafka的配置文件中。
启动kafka之前应该启动zookeeper
架构图
应用架构图
应用时间序列图
消费者组
图示说明:图中表示了1个kafka主题(topic),2消费者组(consumer group)
这一个topic有4个分区,分布存储在2个机器上:Server1和Server2
消费组A有2个节点C1和C2,消费组B有4个节点C3-C6
图中在kafka集群中有2台机器,Server1和Server2
一个topic分区只能被一个消费组中的一个节点消费,也就是说要求:
消费节点数《=主题分区数
当消费节点数多于主题分区数时,多出来的节点将消费不到消息。
生产和消费
消费
消费时需要对消费者(组)的身份做校验,而对消费的主题不做校验。所以消费时需要:
1. 消费者组:一个系统一个
2. 消费者组token:与消费者组一对一
3. 所消费的topic:1到多个
生产
生产时需要验证生产者有生产该类消息的权限,所以生产时需要:
1. 所生产topic:一个生产者只能生产一类消息
2. 该topic的token: 与topic一对一
如果要生产多类消息,则需要多个生产者。