Kafka介绍

文章路径:https://kafka.apache.org/intro

看了Kafka的介绍文章,记录下。

先来一些概念:

Kafka是运行在多台服务器上的集群。
Kafka集群按目录(Topic)存储流式的数据
每条记录包括键,值,和时间戳。
Kafka有4个核心API:

Producer API允许应用发布流式记录到一个或多个Topic。
Consumer API允许应用订阅一个或多个topic并处理以流方式生产给它的数据。
Stream API允许应用作为一个流处理器,从一个或多个topic消费输入流并产生一个输出流给一个或多个输出的topic,很有效的将输入流变成输出流。
Connector API允许创建并运行可重用的生产者或消费者,其连接Kafka topic到存在的应用或数据系统。例如,一个连接到关系数据库的connector可以捕获每条对表的变动。

clipboard.png

Kafka中客户端和服务端的通信使用简单,高效的TCP协议。此协议采用版本并向后兼容老版本。我们提供Java客户端,但也有其他语言的客户端。

Topic与日志

让我们先看看Kafka为流式记录提供的核心抽象 - topic。

Topic是为发布的记录提供的目录或feed的名字。Kafka的Topic都是多订户的;意思是一个topic可以有0,1,或者许多消费者订阅。

对每一个topic,Kafka集群维护一个像以下的分区日志:

clipboard.png

每个分区是有序的,序列不可变的记录,并持续地被追加到一个结构化的提交日志。分区中的记录被赋予一个叫做offset的序列化的id,其能唯一识别出分区中的每条记录。

Kafka集群保留所有的发布记录-不管是否被消费过-用一个可配置的保存周期。例如,如果保存策略设置成两天,那么发布的记录在两天内都可以消费,在之后其空间会被清空。Kafka性能很稳定,所以长时间存储数据不是问题。

clipboard.png

实际上,每个消费者唯一需要需要保存的元数据就是offset或消费者在日志中的位置。这个offset受消费者控制:一般一个消费者在读一条记录时会线性移动offset,但实际上,由于消费者可以控制消费位置,它可以以任何顺序消费记录。例如一个消费者可以充值offset来重新消费之前的数据或跳过最近的数据直接从“现在”开始消费。

这种混合的特性意味着Kafka消费者非常轻量-他们可以来来去去而对集群或其他消费者没有什么影响。例如,你可以使用我们的命令行工具来“tail”任何topic的内容,不需要更改任何已经存在的消费者。

日志中存储分区有几个原因。第一,他们允许日志扩展到适合单台服务器。每个独立的分区必须要适合其所在的服务器,但一个topic可能有多个分区来处理任意数量的数据。第二他们表现的像一个单元-跟一个比特比起来。


本文来自微信公众号「麦芽面包」,id「darkjune_think」
转载请注明。长按图片识别二维码关注。
交流Email: zhukunrong@yeah.net

clipboard.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值