1.简介
kafka是apache公司开发的一款分布式发布-订阅消息系统。其主要有两个特点,一是快速,每秒可以生产25万条消息(50MB),处理55万条数据(110MB)。二是持久化存储数据,并可以在集群中复制,防止数据丢失。
2.术语
(1).主题(Topic)
一组消息的归纳。一个kafka集群中可以创建多个主题,以主题为单位来管理消息,主题之间互相隔离,互不影响。
(2).分区(Partition)
主题中还可以划分出多个分区,以分区为单位对主题中的数据进行存储和备份,消息的实际存储单位。
(3).分段(Segment)
分区内会被划分为多个大小相等的segment,segment中log文件用来存放数据分段,index用来存放索引信息。
(4).消息(Message)
由一个key,一个value和时间戳构成。
(5).序号(Offset)
分区中每个消息都有的一个连续的序列号,用来唯一标识消息。
(6).生产者(Producer)
发布消息的对象。
(7).消费者(Consumer)
订阅消息并处理消息的对象。
(8).集群(Cluster)
已发布的消息保存在一组服务器中,称之为kafka集群。集群中的每一个服务器都是一个代理(broker)。消费者可以订阅一个或多个主题(topic),并从broker拉数据,从而消费这些已发布的消息。
(9).副本(Replication)
每个分区都可以有多个副本,存储在不同服务器中,共同处理请求提升性能,保证了kafka的容错能力。多个副本中会有一个leader和多个follower,follower只对外提供读能力。
3.核心API
(1).Admin API
允许管理和检测topic、broker以及其他kafka对象。
(2).Producer API
发布消息到一个或者多个topic。
(3).Consumer API
订阅一个或者多个topic,并处理产生的消息。
(4).Streams API
高效地将输入流转换为输出流。