kafka学习(1)-初识kafka

xiaoxiao2021-02-28  97

一.Kafka简介

    Kafka是一个分布式流(Stream)处理平台,一个流处理平台有如下三个关键特征:

发布和订阅记录流,类似于消息队列或企业消息传递系统。以容错持久的方式存储记录流。处理记录发生的流。

    Kafka通常被用来处理两类业务场景

构建可在系统或应用程序之间可靠的获取数据的实时流数据管道(RealTime Data Pipeline)构建实时流应用程序,用于转换或响应数据流

二.Kafka核心API

 Kafka的特征

Kafka作为集群运行,部署在多台可跨越多个数据中心的服务器上Kafka存储流数据记录的目录称之为Topics每条记录包含一个key,一个value,和一个时间戳

  Kafka有四个核心API(Core API):

Producer API 允许一个Application发布一个Stream记录至一或多个Kafka Topics中Consumer API 允许一个application订阅一或多个topics,并且处理这些数据Streams API 允许一个Application作为流处理器,从一或多个topics中消费输入流,并且产生输出流至一或多个topics中,有效地将输入流转换为输出流Connector API 允许构建及运行可重用的生产者或消费者并连接kafka的topics到应用或数据系统中,例如:一个连接RMDB的Connector可能会捕获表的所有更改

在Kafka中,Clients与Servers之间的通信是通过一种简单、高性能的,与语言无关的的TCP协议完成的该协议是版本控制的,并保持向后兼容性。Kafka提供了Java客户端,但客户端可以使用多种语言

三.Kafka的基本概念

Topics(主题)&Logs(日志)

kafka提供的流记录统称为Topic,Topic是发布的记录或目录的统称,Kafka中的Topics总是被多用户订阅;也就是说,一个topic可以有0,1或多个订阅写入数据的Consumer,对于每个topic,Kafka集群都提供一个分区日志,如下图所示:

                                

   每个分区都是一个有序的,不可变的记录序列,不断追加到结构化的提交日志中。分区中的记录每个分配一个连续的id号,称为偏移量,用于唯一标识分区内的每条记录。

   Kafka集群使用可配置的持久化所有已发布的记录 - 不管它们是否已被消耗。例如,如果保留策略设置为两天,则在记录发布后的两天内,保留策略可供使用,之后将被丢弃以释放空间。Kafka的性能在数据大小方面实际上是不变的,因此长时间存储数据毫无问题。

                            

    

    实际上,保留在每个消费者上的唯一简单元数据是该消费者在日志中的偏移量或位置。这个偏移量是由消费者控制的:消费者通常会在读取记录时线性地推进其偏移量,但实际上,由于位置由消费者控制,因此它可以按照喜欢的任何顺序消费记录。例如,消费者可以重置为较旧的偏移量以重新处理来自过去的数据,或者跳至最近的记录并从“now”开始消费。

这种功能的组合意味着Kafka消费者非常敏捷 - 他们可以来来去去,对集群或其他消费者没有太大影响。例如,您可以使用我们的命令行工具来“追查”任何主题的内容,而无需更改任何现有客户使用的内容。

日志中的分区有多种用途。首先,它们允许日志的大小超出适合单个服务器的大小。每个单独的分区必须适合承载它的服务器,但是一个主题可能有很多分区,因此它可以处理任意数量的数据。更重要的一点是:它们可以做到并行。

分布

    日志的分区分布在Kafka集群中的服务器上,每个服务器处理数据并请求共享分区。每个分区都通过可配置数量的服务器进行复制以实现容错。

    每个分区都有一台服务器充当“Leader”,零个或多个服务器充当“Follower”。领导处理分区的所有读取和写入请求,而追随者被动地复制领导。如果领导失败,其中一个追随者将自动成为新领导。每个服务器都充当其中一些分区的领导者和其他人的追随者,因此负载在集群内能够实现平衡。

地狱复制

    Kafka MirrorMaker为您的集群提供地理复制支持。借助MirrorMaker,消息可以跨多个数据中心或云区域进行复制。您可以在主动/被动场景中将其用于备份和恢复; 或者在主动/主动方案中将数据放置得更靠近用户,或者支持数据本地化要求。

转载请注明原文地址: https://www.6miu.com/read-2249973.html

最新回复(0)