热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

kafka教程基本概念

一、基本概念

Kafka™用于构建实时数据流水线和流媒体应用,具有水平可扩展性,容错性,并在数千家公司得到了应用。
流媒体平台(streaming platform)有三个关键功能:
1. 发布和订阅记录流。 在这方面,类似于消息队列或企业消息系统。
2. 以容错方式存储记录流。
3. 实时处理记录流。

Kafka被用于两大类应用程序:
1. 构建可在系统或应用程序之间可靠获取数据的实时流数据流水线;
2. 构建对数据流进行变换或反应的实时流应用程序

重要定义:
1. Kafka以集群方式运行,包含一个或多个服务器上。
2. Kafka以topic形式保存记录。
3. 每条记录由一个键key,一个值value和一个时间戳timestamp组成。

Kafka有4个核心API:
1. Producer API允许应用程序将记录流发布到一个或多个Kafka主题。
2. Consumer API允许应用程序订阅一个或多个主题并处理为其生成的记录流。
3. Streams API允许应用程序充当流处理器,从一个或多个主题消耗输入流,并产生输出流到一个或多个输出主题,有效地将输入流转换为输出流。
4. Connector API允许构建和运行将Kafka主题与现有应用程序或数据系统相连接的可重复使用的生产者或消费者。 例如和关系数据库的连接器可能会捕获表的每个更改。

kafka教程-基本概念
Kafka中客户端与服务器之间的通信使用TCP协议

Topics and Logs

Topic是记录的类别或Feed名称。 Kafka的主题总是多用户的; 也就是说,每个主题可以有零个,一个或多个消费者订阅订阅的数据。
对于每个主题,Kafka集群都会维护一个如下所示的分区日志。
kafka教程-基本概念
每个分区是一个有序的,不可变的记录序列,不断附加到结构化的提交日志中。 每个分区中的记录都被分配一个顺序的id号,称为唯一标识分区内每个记录的偏移量offset
kafka教程-基本概念
Kafka集群保留所有已发布的记录(无论它们是否已被使用 ), 使用可配置的保留期限。 例如,如果保留策略设置为两天,则在发布记录后的两天内,它可以消费,之后它将被丢弃以释放空间。
log的分区有几个目的:
1. 它们允许日志扩展到适合单个服务器的大小。 每个单独的分区必须适合托管它的服务器,但主题可能有很多分区,因此它可以处理任意数量的数据。
2. 一个分区作为并行计算的单位,有利于并行计算

Distribution

日志的分区分布在Kafka集群中的服务器上,每个服务器处理数据并请求共享的分区。 每个分区都跨可配置数量的服务器进行复制,以实现容错。
每个分区有一个服务器充当“leader”,零个或多个服务器充当“followers”。 leader处理分区的所有读取和写入请求,而followers做备份。 如果leader失败,其中一个follower将自动成为新的leader。 每个服务器作为其一些分区的leader,并且其他分支的followers,因此在集群内负载平衡良好。

Producers

生产者将数据发布到他们选择的主题。 生产者负责选择分配哪些记录在主题中哪个分区。 这可以通过循环方式简单地平衡负载,或者可以根据某些语义分区功能(例如基于记录中的某些关键字)来完成。 第二种方式使用地较多!

Consumers

Kafka总结起来就是:
1. Kafka as a Messaging System,与传统的消息队列和企业消息系统的对比
2. Kafka as a Storage System
3. Kafka for Stream Processing

参考文献:
Kafka官网:https://kafka.apache.org/intro.html


推荐阅读
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 在本周的白板演练中,Apache Flink 的 PMC 成员及数据工匠首席技术官 Stephan Ewen 深入探讨了如何利用保存点功能进行流处理中的数据重新处理、错误修复、系统升级和 A/B 测试。本文将详细解释保存点的工作原理及其应用场景。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
author-avatar
鸡__腿孜然小朋友
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有