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++编译原理 ------ C++编译器与链接器工作原理

    原文:https://blog.csdn.net/zyh821351004/article/details/46425823 第一篇:      首先是预编译,这一步可以粗略的认为只做了一件事情,那就 ...

  2. 4个MySQL优化工具AWR,帮你准确定位数据库瓶颈!(转载)

    对于正在运行的mysql,性能如何,参数设置的是否合理,账号设置的是否存在安全隐患,你是否了然于胸呢? 俗话说工欲善其事,必先利其器,定期对你的MYSQL数据库进行一个体检,是保证数据库安全运行的重要 ...

  3. BZOJ 3309: DZY Loves Math 莫比乌斯反演+打表

    有一个神奇的技巧——打表 code: #include <bits/stdc++.h> #define N 10000007 #define ll long long #define se ...

  4. High scalability with Fanout and Fastly

    转自:http://blog.fanout.io/2017/11/15/high-scalability-fanout-fastly/ Fanout Cloud is for high scale d ...

  5. Docker 安装ubuntu服务器

    ### 1. 安装ubuntu ```docker pull ubuntudocker run -it -d --name ubuntu_test -p 2222:22 ubuntu ``` ### ...

  6. html5获取用户当前位置

    支持地理定位的浏览器有IE9+.Firefox 3.5+ .Opera 10.6+ .Safari 5+ .Chrome.iOS 版Safari.Android版WebKit. navigator.g ...

  7. 处理 MySQL 因为 SLAVE 崩溃导致需要手动跳过 GTID 的问题 | 关于 GTID

    今天发生了与之前某篇博客相似的问题,有同学在不同步的 binlog 库中使用语句 database.table 命令对表进行 drop 导致 master 丢弃该表但是从库并未能同步到该操作.并且后续 ...

  8. Spring Boot 支持 HTTPS 如此简单,So easy!

    这里讲的是 Spring Boot 内嵌式 Server 打 jar 包运行的方式,打 WAR 包部署的就不存在要 Spring Boot 支持 HTTPS 了,需要去外部对应的 Server 配置. ...

  9. MySQL8.0报错Can't connect to MySQL server on 'localhost' (10061)的解决办法

    MySQL8.0报错Can't connect to MySQL server on 'localhost' (10061)的解决办法 事情的起因     今天课堂上要展示小组项目,需要用一个软件叫W ...

  10. 信用卡号码格式验证-C#实现

    /// <summary> /// Is valid? /// </summary> /// <param name="context">Val ...