加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 教程 > 正文

Kafka 基础知识详解你不是知道的事

发布时间:2021-05-23 04:45:40 所属栏目:教程 来源:互联网
导读:初始Kafka 1、介绍 Kafka 起初是由 Linkedin 公司采用 Scala 语言开发的一个多分区、多副本且基于 ZooKeeper协调的分布式消息系统,现己被捐献给 Apache 基金会

Kafka 起初是由 Linkedin 公司采用 Scala 语言开发的一个多分区、多副本且基于 ZooKeeper协调的分布式消息系统,现己被捐献给 Apache 基金会 。目前 Kafka 已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。

2、使用场景

消息系统:Kafka 和传统的消息系统(消息中间件)都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能。与此同时,Kafka还提供了大多数消息系统难以实现的消息顺序性保障以及回溯消费的功能。

存储系统:Kafka把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效地降低了数据丢失的风险。也正是得益于 Kafka 的消息持久化功能和多副本机制,我们可以把 Kafka 作为长期的数据存储系统来使用,只需要把对应的数据保留策略设置为 “永久” 或启用主题的日志压缩功能即可。

流式处理平台:Kafka 不仅为每个流行的流式处理框架里提供了可靠的数据来源,还提供了一个完整的流式处理类库,比如窗口、连接、交换和聚合等各类操作。

3、基本概念

Kafka体系架构包括若干 「Producer」,「Broker」,「Consumer」以及一个ZooKeeper集群。

ZooKeeper:是 Kafka 用来负责集群元数据的管理、控制器的选举等操作的。

Producer:生产者,发送消息的一方。负责创建消息,然后将其投递到 Kafka 中。

Consumer:消费者,接收消息的一方。连接到 Kafka 后接收消息,并进行相应的业务逻辑处理。

Broker:服务代理节点。对于 Kafka 而言,Broker 可以简单地看作一个独立的 Kafka 服务节点或 Kafka 服务实例。大多数情况下也可以将 Broker 看作一台 Kafka 服务器,前提是这台服务器上只部署了一个 Kafka 实例。一个或多个Broker 组成了一个 Kafka 集群。

整体 Kafka 体系大概是由上面几部分构成。除此之外,还有两个特别重要的概念:主题(Topic)和分区(Partition)

主题:Kafka 中的消息以主题为单位进行归类,生产者负责将消息发送到特定的主题(发送到 Kafka 集群中的每一条消息都要指定一个主题),而消费者负责订阅主题并进行消费。

分区:主题是一个逻辑上的概念。还可以细分为多个分区,一个分区只属于单个主题,很多时候也会把分区称为主题分区(Topic-Partition)。同一主题下的不同分区包含的消息是不同的,分区在存储层面可以看作一个可追加的「日志文件」,消息在被追加到分区日志文件的时候都会分配一个特定的偏移量(offset)。offset 是消息在分区中的唯一标识,Kafka 通过它来保证消息在分区内的顺序性,不过offset并不跨越分区,也就是说,Kafka 保证的是分区有序而不是主题有序。

Kafka 为分区引入了多副本(Replica) 机制,通过增加副本数量可以提升容灾能力。

同一分区的不同副本中保存的是相同的消息(在同一时刻,副本之间并非完全一样),副本之间是“ 一主多从”的关系,其中 leader 副本负责处理读写请求 ,follower 副本只负责与 leader 副本的消息同步。副本处于不同的 broker 中 ,当 leader 副本出现故障时,从 follower 副本中重新选举新的 leader 副本对外提供服务。

「Kafka 通过多副本机制实现了故障的自动转移,当 Kafka 集群中某个 broker 失效时仍然能保证服务可用 。」

在我们继续了解 Kafka 之前,我们还需要明白几个关键词:

AR(Assigned Replicas):分区中所有副本统称为 AR

ISR(In-Sync Replicas):所有与 leader 副本保持一定程度同步的副本(包括 leader 副本在内)组成 ISR。ISR 集合是 AR 集合中的一个子集 。消息会先发送到 leader 副本,然后 follower 副本才能从 leader 副本中拉取消息进行同步,同步期间内follower 副本相对于 leader 副本而言会有一定程度的滞后 。

OSR(Out-of-Sync Replicas):与 leader 副本同步滞后过多的副本(不包括 leader 副本)组成 OSR

由以上关系我们可以得出一个公式:AR=ISR+OSR

HW(High Watermark):俗称高水位,是用来标识一个特定的消息偏移量(offset),消费者只能拉取到这个 offset 之前的消息

LEO(LogStartOffset):下一条待写入消息的 offset

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读