目录
Kafka定位
kafka主要应用于大数据实时处理领域,是一个分布式的基于发布/订阅模式的消息队列。常用于处理用户访问日志,系统运行日志等方面的数据。以往的消息队列模型不足以支持集群环境的应用,随着架构的升级与演变,现在的主题/分区消息队列模型,基于Zookeeper协调分布式消息系统,适用于分布式环境,且有高吞吐量,高性能的特点。
核心功能
它有4个核心API,分别是Producers API,Connectors API,Consumers API,Stream Processors API,也表示4个主要的功能,即接收APP生产的数据,消费数据,与数据库交互,搭配流式处理。
相关概念
-
集群:一台或多台服务器
-
topic
-
对存储的流数据分类
-
topic中每条记录包含:key,value,timestamp
-
-
日志:kafka 集群会维持一个分区日志
-
有序的记录集
-
commit log文件
-
分区的每个记录都有id作为标识:offset
-
-
分区:切分主题,作为并行的单元集
-
分布式
-
leader/follower选举机制——集群负载均衡
-
核心架构
Broker(服务代理):一个Kafka对应一个broker
Topic(主题):消费主题,理解为某个类型的队列
partition(分区): 一个topic可分为多个partition
Consumer Group (消费者组):由多个消费者组成一个消费者组,订阅主题
-
消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内的一个消费者消费;【分区与组内消费者一一对应】
-
消费者组间互不影响,即一个分区可以被多个消费者组中的一个消费者消费【分区与多个消费者组可以对应】
-
消费者组里的消费者个数与分区数尽量一致,这样可以提高消费能力又不浪费资源【数量尽量一致,提高效率】
-
-
消费者组订阅主题,组内消费者消费分区,若消费者组只有一个消费者,当它订阅了整个主题,则需要消费主题中所有的分区。这种情况,消费能力低.
Zookeeper:kafka运行时依赖的环境,Kafka集群通过zookeeper进行主节点的选举,为分区备份与主题发布提供保障。
Replica(副本):保证集群在发生结点故障时能继续工作。副本机制:一个topic每个分区都有若干副本,一个topic包含一个leader和若干follower.
四个API
-
The Producer API 允许一个应用程序发布一串流式的数据到一个或者多个Kafka topic
-
The Consumer API 允许一个应用程序订阅一个或多个 topic ,并且对发布给他们的流式数据进行处理
-
The Streams API 允许一个应用程序作为一个流处理器,消费一个或者多个topic产生的输入流,然后生产一个输出流到一个或多个topic中去,在输入输出流中进行有效的转换
-
The Connector API 允许构建并运行可重用的生产者或者消费者,将Kafka topics连接到已存在的应用程序或者数据系统。比如,连接到一个关系型数据库,捕捉表(table)的所有变更内容
三个核心功能
-
数据的发布/订阅能力(消息队列)
-
数据的分布式存储能力(存储系统)
-
数据的实时处理能力(流处理引擎)
下一节,我们学习Kafka的入门使用……