kafka基本概念
- producer:消息和数据的生产者,向kafka的一个topic发布消息的进程、代码,服务
- consumer:消息和数据的消费者,订阅数据(topic)并且处理其发布进程、代码,服务
- consumerGroup:逻辑概念,对于一个topic,会广播给不同的group,一个group中,只有一个consumer可以消费该消息
- Broker:物理概念,kafka集群中的每个kafka节点。brokerGroup中的每一个brocker保存topic的一个或多个partitions
- Topic:逻辑概念,kafka消息的类别,对数据进行区分,隔离。每个topic可以有多个生产者向它发送消息,也可以有多个消费者去消费其中的消息
- 每一个topic被切分为多个partitions,消费者树少于或等于partitions
- partition:物理概念,kafka下数据存储的基本单元,一个topic的数据,会被分散到多个partition存储,每一个partition是有序的。每个topic可以划分多个分区(每个Topic至少有一个分区),同一topic下的不同分区包含的消息是不同 的。每个消息在被添加到分区时,都会被分配一个offset(称之为偏移量),它是消息在此分区中的唯 一编号,kafka通过offset保证消息在分区内的顺序,offset的顺序不跨分区,即kafka只保证在同一个 分区内的消息是有序的。
- Replication:同一个partition可能会有多个Relication,多个Replication之间数据是一样的
- 当集群中有brocker挂掉的情况,系统可以主动地使用Replicas提供服务
- 系统默认设置每一个topic的replication系数为1,可以在创建topic时单独设置
- ReplicationLeader:一个partition的多个Replication上,需要一个leader负责该partition上与producer和consumer的交互
- ReplicaManager:负责管理当前brocker的所有分区和副本的信息,处理kafkaController发起的一些请求 ,副本的添加状态切换
kafka基本结构
kafka应用场景
- 日志收集
- 消息队列
- 行为跟踪
- 元信息监控
- 流处理
- 事件源
- 持久性日志(commit log)
kafka高级特性
消息事务
- 最多一次:最多被传输一次,也有可能一次不传输,消息不会被重复发送
- 最少一次:最少被传输一次,也有可能被重复传输,消息不会被漏送
- 精确一次:每个消息都传输一次而且仅仅被传输一次,不会漏送和多送