1.目标 - KAFA价格

在我们上一篇Kafka教程中,我们讨论了Kafka用例和应用程序。今天,在这个Kafka教程中,我们将讨论Kafka Architecture。在这篇Kafka Architecture文章中,我们将在Kafka中看到API。此外,我们将了解Kafka Broker,Kafka Consumer,Zookeeper和Kafka Producer。此外,我们将看到卡夫卡的一些基本概念。

那么,让我们开始Apache Kafka架构。

Apache Kafka架构及其基本概念

2. Kafka架构 - Apache Kafka API

Apache Kafka Architecture有四个核心API,生产者API,Consumer API,Streams API和Connector API。我们一个一个地讨论它们:

Kafka架构 - Apache Kafka API

一个。 制片人API

为了将记录流发布到一个或多个Kafka主题,Producer API 允许应用程序。 
我们来讨论Kafka Security

湾 消费者API

此API允许应用程序订阅一个或多个主题,并处理为其生成的记录流。

C。 Streams API

此外,为了充当流处理器,消耗来自一个或多个主题的输入流并产生到一个或多个输出主题的输出流,有效地将输入流转换为输出流,流API允许应用。

d。 连接器API

在构建和运行将Kafka主题连接到现有应用程序或数据系统的可重用生产者或消费者时,我们使用Connector API。例如,关系数据库的连接器可能捕获对表的每个更改。
看看前5个Apache Kafka书籍。

3. Apache Kafka架构 - 集群

下图显示了Apache Kafka 的集群图:

卡夫卡建筑 - 卡夫卡集群

让我们描述上图中显示的Kafka Architecture的每个组件:

一个。卡夫卡 经纪人

基本上,为了维持负载平衡,Kafka集群通常由多个代理组成。但是,这些都是无状态的,因此为了维护集群状态,他们使用ZooKeeper。虽然,一个Kafka Broker实例每秒可以处理数十万次读写操作。然而,在没有性能影响的情况下,每个代理都可以处理TB消息。此外,确保ZooKeeper执行Kafka经纪人领导者选举。
点击链接了解有关Kafka Broker的更多信息

湾 卡夫卡 - ZooKeeper

出于管理和协调的目的,Kafka经纪人使用ZooKeeper。此外,使用它来通知生产者和消费者有关Kafka系统中任何新代理的存在或Kafka系统中代理的故障。一旦Zookeeper发送有关经纪人或生产者和消费者的存在或失败的通知,就做出决定并开始与其他经纪人协调他们的任务。

C。卡夫卡制片人

此外,卡夫卡的生产商将数据推送给经纪人。此外,所有生产者都会搜索它并自动向新代理发送消息,确切地说是新代理启动时。但是,请记住,Kafka生产者以经纪人可以处理的速度发送消息,它不会等待来自经纪人的确认。

d。卡夫卡消费者

基本上,通过使用分区偏移,Kafka Consumer维护消耗了多少消息,因为Kafka代理是无状态的。此外,一旦消费者确认特定的消息偏移,您就可以确保消费者已经消费了所有先前的消息。此外,为了使字节缓冲区准备好消费,消费者向代理发出异步拉取请求。然后,只需提供偏移值,消费者就可以倒带或跳转到分区中的任何位置。此外,ZooKeeper会通知消费者抵消价值。

4.卡夫卡建筑 - 基本概念

在这里,我们列出了您必须知道的Kafka架构的一些基本概念:

一个。卡夫卡 话题

主题是生产者发布消息并且消费者从中接收消息的逻辑通道。

  1. 主题定义了Kafka中特定类型/数据分类的流。
  2. 此外,这里的消息是结构化或组织的。在特定主题上发布特定类型的消息。
  3. 基本上,一开始,生产者将其消息写入主题。然后消费者从主题中读取这些消息。
  4. 在Kafka群集中,主题由其名称标识,并且必须是唯一的。
  5. 可以有任意数量的主题,没有限制。
  6. 一旦发布,我们就无法更改或更新数据。

使用命令阅读Apache Kafka Operations
下面是显示Kafka主题和分区之间关系的图像:

卡夫卡建筑 - 卡夫卡主题与分区之间的关系

湾 卡夫卡的分区

在Kafka群集中,主题分为多个分区,也可以跨代理进行复制。

  1. 但是,对于要写入已发布消息的分区,不能保证这一点。
  2. 此外,我们可以为邮件添加密钥。基本上,如果生产者发布带有密钥的消息,我们将确保所有这些消息(使用相同的密钥)将最终出现在同一分区中。由于此功能,Kafka提供消息排序保证。但是,除非添加密钥,否则数据会随机写入分区。
  3. 此外,在一个分区中,消息以顺序方式存储。
  4. 在分区中,为每条消息分配一个增量ID,也称为偏移量。
  5. 但是,仅在分区内,这些偏移才有意义。而且,在一个主题中,它在分区之间没有任何价值。
  6. 可以有任意数量的分区,没有限制。

C。Kafka中的主题复制因子

在设计Kafka系统时,将主题复制考虑在内是一个明智的决定。因此,如果经纪人倒闭,其主题来自其他经纪商的副本可以解决危机。例如,我们有3个经纪人和3个主题。Broker1有Topic 1和Partition 0,它的副本在Broker2中,依此类推。它的复制因子为2; 这意味着它将有一个额外的副本,而不是主要副本。下面是主题复制因子的图像:
让我们学习Apache Kafka Streams | 流处理拓扑

Kafka架构 - 主题复制因子

一些关键点 -

  1. 复制仅在分区级别进行。
  2. 对于给定的分区,一次只能有一个代理可以成为领导者。同时,其他经纪人将拥有同步复制品; 我们称之为ISR。
  3. 复制因子的数量不可能超过可用代理的数量。

d。消费者集团

  1. 它可以运行多个消费者进程/实例。
  2. 基本上,一个消费者群体将拥有一个唯一的群组ID。
  3. 此外,在读取时,恰好一个消费者实例从一个消费者组中的一个分区读取数据。
  4. 由于存在多个使用者组,在这种情况下,每个组中的一个实例可以从一个单独的分区读取。
  5. 但是,如果消费者数量超过分区数量,则会有一些不活跃的消费者。如果一个消费者群体中有8个消费者和6个分区,那么让我们通过一个例子理解它,这意味着将有2个不活跃的消费者。

阅读Apache Kafka + Spark Streaming Integration
所以,这就是Apache Kafka架构。希望你喜欢我们的解释。

5.结论:卡夫卡建筑

因此,我们已经看到了卡夫卡建筑的概念。此外,我们讨论了Kafka组件和基本概念。此外,我们还看到了一位简短的作家Kafka Broker,Consumer,Producer。与此同时,我们讨论了Kafka Architecture API。此外,有关卡夫卡建筑的任何疑问,请随时在评论部分询问。
另请参阅 - 
Zookeeper在Kafka中的作用以
供参考

KAFA架构及其基本概念的更多相关文章

  1. (二)RabbitMQ消息队列-RabbitMQ消息队列架构与基本概念

    原文:(二)RabbitMQ消息队列-RabbitMQ消息队列架构与基本概念 没错我还是没有讲怎么安装和写一个HelloWord,不过快了,这一章我们先了解下RabbitMQ的基本概念. Rabbit ...

  2. .Net码农学Android---系统架构和基本概念

    至此,你应该已经完成以下前期准备事情: 1.安装完JDK 2.安装完SDK(并在Manager中进行相关版本的更新) 3.相关IDE(如eclipse) 4.安装完ADT 5.安装完AVD(如果你是真 ...

  3. RabbitMQ消息队列(二)-RabbitMQ消息队列架构与基本概念

    没错我还是没有讲怎么安装和写一个HelloWord,不过快了,这一章我们先了解下RabbitMQ的基本概念. RabbitMQ架构 说是架构其实更像是应用场景下的架构(自己画的有点丑,勿嫌弃) 从图中 ...

  4. SOA面向服务架构——SOA的概念

    SOA的概念是Gartner 在1996年提出来的,并于2002年12月进一步提出SOA是“现代应用开发领域最重要的课题”.   一.SOA的定义 SOA分为广义的SOA和狭义的SOA,广义的SOA是 ...

  5. nginx架构与基础概念

    1       Nginx架构 Nginx 高性能,与其架构有关. Nginx架构: nginx运行时,在unix系统中以daemon形式在后台运行,后台进程包含一个master进程和多个worker ...

  6. RabbitMQ基本概念(二)-RabbitMQ消息队列架构与基本概念

    没错我还是没有讲怎么安装和写一个HelloWord,不过快了,这一章我们先了解下RabbitMQ的基本概念. RabbitMQ架构 说是架构其实更像是应用场景下的架构(自己画的有点丑,勿嫌弃) 从图中 ...

  7. SpringCloud升级之路2020.0.x版-16.Eureka架构和核心概念

    本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford Eureka 目前 ...

  8. tomcat架构之-----基本概念

    一直都没有搞明白tomcat中server.service.Engine.Host.Context概念的意义,最近认真看了<Tomcat 6 Developer Guide>,有了进一步的 ...

  9. 简单记录下SpringCloud的微服务架构和一些概念

    一.微服务的注册与发现——Eureka 和许多分布式设计一样,分布式的应用一般都会有一个服务中心,用于记录各个机器的信息.微服务架构也一样,我们把一个大的应用解耦成这么多个那么多个服务,那么在想要调用 ...

随机推荐

  1. C++中的常量指针和指针常量

    1.概述: const Type * pointer;常量指针(const在*之前,与类型的位置无要求),所指向的地址上的数据是常量,而指向的地址可以变化. Type * const pointer: ...

  2. BZOJ 2200: [Usaco2011 Jan]道路和航线

    Description Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇 (1 <= T <= 25,000),编号为1T.这些城镇之间通过R条 ...

  3. Win如何查看某个端口被谁占用并停掉

    第一步在我们的电脑上按win+R键打开运行,输入cmd, 第二步进去命令提示符之后,输入“netstat -ano”,按回车键,查出所有端口,如下图所示: 第三步如果我们想找8089端口,输入nets ...

  4. Windbg命令脚本流程控制语句详解

    在Windbg命令脚本一文里,我们介绍了命令脚本语言的的组成要素,在本文里将对语句进行展开的讲解.这些语句主要是流程控制的语句,比如我们常见的条件分子和循环语句等. ; (命令分隔符) 分号(:)字符 ...

  5. Mysql 创建只读账户

    mysql 创建只读账户: 1.查询所有账号信息 SELECT DISTINCT a.`User`,a.`Host`,a.password_expired,a.password_last_change ...

  6. P1071 潜伏者

    //Pro:NOIP2009 T1 P1071 潜伏者 #include<iostream> #include<cstdio> #include<cstring> ...

  7. 第03组 Alpha冲刺(1/4)

    队名:不等式方程组 组长博客 作业博客 团队项目进度 组员一:张逸杰(组长) 过去两天完成的任务: 文字/口头描述: 制定了初步的项目计划,并开始学习一些推荐.搜索类算法 GitHub签入纪录: 暂无 ...

  8. 博客之旅的开始-----什么是Python ? ? ?

    1 .到底什么是Python?你可以在回答中与其他技术进行对比(也鼓励这样做). 答案下面是一些关键点: Python是一种解释型语言.这就是说,与C语言和C的衍生语言不同,Python代码在运行之前 ...

  9. TypeScript规则整理

    介绍我在初学 TS 开发项目中遇到的一些问题,希望对你有所帮助~   因为我们的JavaScript是弱类型语言,如果项目过大,或者团队人数很多,不仅代码风格不统一,以后还会很难维护       Ty ...

  10. python unittest套件加载用例时,出现No tests were found,Empty test suite

    错误信息: 之前运行好好的脚本,突然报No tests were found,Empty test suite,详情错误信息如下所示: Launching pytest with arguments ...