XY个人记
概述
Kafka是一个开源流处理平台,它允许发布和订阅记录流。在这方面,它类似于消息队列或企业消息传递系统。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。
由于Kafka存在高容错、高扩展、分布式等特性,Kafka主要应用 消息系统、日志收集系统、Metrics监控系统
官网:http://kafka.apache.org/intro.html
Kafka有四个核心API
Producer API:允许应用程序发布的记录流至一个或多个Kafka topics。
Consumer API:允许应用程序订阅一个或多个topics,并处理所产生的对他们记录的数据流。
Streams API:允许应用程序充当stream processor(流处理器),从一个或多个topics消耗的输入流,并产生一个输出流至一个或多个输出的topics,有效地变换所述输入流,以输出流。
Connector API:允许构建和运行Kafka topics连接到现有的应用程序或数据系统中重用producers or consumers。例如,关系数据库的连接器可能捕获对表的每个更改。
Kafka的基本概念
Message (消息队列) |
传递的数据对象,主要由四部分构成: offset(偏移量)、key、value、timestamp(插入时间) |
Broker (代理者) |
Kafka集群包含一个或多个服务器,这种服务器被称为broke, 是一个物理概念。 |
Topic (消息类别) |
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同 Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但 用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)。 |
Partition (分区) |
具体维护Kafka上的消息数据的最小单位,一个Topic可以包含多个分区; 特性ordered&immutable。(在数据的产生和消费过程中,不需要关注数据具体存储的Partition在那个Broker上,只需要指定Topic即可,由Kafka负责将数据和对应的Partition关联上) |
Producer (生产者) |
负责将数据发送到Kafka对应Topic的进程 |
Consumer (消费者) |
负责从对应Topic获取数据的进程 |
Consumer Group (消费者组) |
每个consumer都属于一个特定的group组,一个group组可以包含 多个consumer, 但一个组中只会有一个consumer消费数据。 |