Kafka结构了解
ps:个人理解,建议去看原版文档
官网直通车
基本特性
- Kafka作为一个集群,运行在一台或者多台服务器上.
- Kafka 通过 topic 对存储的流数据进行分类。
- 每条记录中包含一个key,一个value和一个timestamp(时间戳)。
核心功能
-
The Producer API 允许一个应用程序发布一串流式的数据到一个或者多个Kafka topic。
-
The Consumer API 允许一个应用程序订阅一个或多个 topic ,并且对发布给他们的流式数据进行处理。
-
The Streams API 允许一个应用程序作为一个流处理器,消费一个或者多个topic产生的输入流,然后生产一个输出流到一个或多个topic中去,在输入输出流中进行有效的转换。
-
The Connector API 允许构建并运行可重用的生产者或者消费者,将Kafka topics连接到已存在的应用程序或者数据系统。比如,连接到一个关系型数据库,捕捉表(table)的所有变更内容。
Topic
Kafka的主要数据存储方式。
一个topic可以由一个或者多个消费者,(类比与点对点通信或者广播方式)
每个topic可以分多个区域存储数据,(类似硬盘分区,一个topic是一块物理硬盘,可划分不同磁盘区域。)
每个分区上的每条数据都有一个唯一且顺序的标识offset, (数据库中的id)
topic中的数据以文件的形式保存在硬盘中,可以设置保留时间,只要存在,可以随时读取,无论该条数据记录是否被消费(读取过),Kafka的性能和数据大小无关,所以长时间存储数据没有什么问题。
分布式
server可以存在一台或者多台物理服务器上
每个partition都归属于一个server下,这个server就是leader,其他server会同步这个partition成为follwer。
每个partition不一定在同一个server下,所以每个server只是某个或者某几个partition的leader也是其他partition的follower.
如果leader的挂掉,会自动把某个follower变成leader