Kafka 是一个事件流平台#
- 发布/订阅事件流,包括从其他系统持续导入/导出数据
- 持久/可靠地存储事件流
- 处理发生/回溯的事件流
Kafka 是一个由服务端和客户端组成的分布式系统,通过高性能TCP协议进行网络通信#
服务端#
一个或者多个server组成的集群,可以拓展成多个数据中心或者云区域
存储层的server被称为 broker
其他的server运行Kafka以事件流的方式持续导入/导出数据,整合现有系统到Kafka,例如关系型数据库和其他
客户端#
允许建立能并行读/写/处理事件流的分布式应用和微服务
Event 事件#
event 记录的是业务中存在的事实
一个 event 中有键、值、时间戳和可选的元数据头
- Event key: "Alice"
- Event value: "Made a payment of $200 to Bob"
- Event timestamp: "Jun. 25, 2020 at 2:06 p.m."
Producers 生产者 Consumers 消费者#
Producers 写/发布消息到Kafka,Consumers 从Kafka读/消费消息
生产者和消费者是完全解耦和互不相知的
Topic 主题#
事件有组织的,永久存储在 topic 中,topic 就像文件系统中的文件夹,事件就是文件夹中的文件
Kafka中的主题永远都有多个生产者和多个消费者
主题中的事件一旦需要就可以读取,不像传统的消息系统,事件被消费之后不会被删除
可以在每个主题中自定义旧事件被摒弃后,Kafka保持的事件长度
Partition 分区#
主题是被分区的,这意味着一个主题是分布在定位于不同的 broker 上的一定数量数据桶中
这种分布式数据放置提供了可伸缩性,允许客户端应用同时从许多 broker 中读/写数据
当一个新的事件发布到一个主题,实际上是放到了主题的某个分区上,同一个键的事件写入到同一个分区
Kafka保障指定主题分区的任何消费者按照写入的顺序读取分区事件
为了确保数据容错和高可用,每个主题都能被复制,复制数量是可以设置的,在主题分区级别执行