02、Kafaka 简介

2024-05-07 12:28
文章标签 02 简介 kafaka

本文主要是介绍02、Kafaka 简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

02、Kafka 简介

1、 Kafka 简介

Apache Kafka 是一个分布式的发布-订阅消息系统,最初由 LinkedIn 公司开发,并在 2010 年贡献给了 Apache 软件基金会,成为一个顶级开源项目。Kafka 设计之初是为了满足高吞吐量、可扩展性、持久性、容错性以及高并发的需求,它非常适合用于实时数据流的处理,包括日志聚合、事件源、流式处理等场景。

Kafka 的架构包括以下几个关键组件:

  1. 生产者(Producer):负责发布消息到 Kafka 的主题(Topic)。
  2. 消费者(Consumer):订阅一个或多个主题,并从 Kafka 集群中拉取(Pull)数据进行消费。
  3. Broker:Kafka 集群中的服务器,负责存储生产者写入的消息。
  4. 主题(Topic):Kafka 中的消息分类,每个主题可以分成多个分区(Partition)以支持数据的水平扩展和并行处理。
  5. 分区(Partition):是主题的一个子集,可以分布在不同的 Broker 上以实现负载均衡。
  6. 副本(Replica):为了保证数据的可靠性,每个分区都有多个副本,其中一个是领导者(Leader),其他的是追随者(Followers)。
  7. ZooKeeper:Kafka 集群依赖 ZooKeeper 来管理集群中的节点状态、分区状态以及副本状态。

Kafka 的主要特点包括:

  • 高吞吐量和低延迟:Kafka 能够以极低的延迟处理高吞吐量的数据。
  • 持久性和可靠性:消息被持久化到磁盘,并且支持数据备份以防止数据丢失。
  • 可扩展性:Kafka 集群支持热扩展,可以轻松添加更多的 Broker 来扩展系统。
  • 容错性:允许集群中的节点失败而不会丢失数据。
  • 高并发:支持数千个客户端同时读写。

Kafka 常用于以下场景:

  • 日志收集:集中收集各种服务的日志,提供统一的日志分析接口。
  • 消息系统:解耦生产者和消费者,提供异步处理能力。
  • 用户活动跟踪:记录用户的各种活动,如浏览、搜索、点击等,供实时监控分析或离线分析挖掘。
  • 流式处理:与如 Spark Streaming 和 Storm 等流处理系统结合使用。
  • 事件源:作为事件源,记录系统中发生的所有事件。

Kafka 的设计思想和架构使其成为了大数据处理领域中一个非常流行的工具。

2、 Kafka 的设计目标

Kafka 的设计目标主要围绕以下几个核心点:

  1. 高吞吐率:Kafka 旨在实现高吞吐量的消息处理,即使在非常廉价的商用机器上也能做到单机支持每秒 100K 条以上消息的传输。
  2. 消息持久化:Kafka 提供了以时间复杂度为 O(1) 的方式进行消息持久化的能力,保证了对 TB 级以上数据也能保证常数时间复杂度的访问性能。
  3. 完全分布式:Kafka 支持消息分区以及分布式消费,并保证分区内的消息顺序,同时支持 Producer、Broker、Consumer 的水平扩展。
  4. 同时支持在线和离线数据处理:Kafka 能够同时满足实时数据处理和离线批处理的需求。
  5. 在线水平扩展(Scale out):Kafka 支持在线水平扩展,可以轻松地通过增加更多的服务器来扩展系统。
  6. 容错性:Kafka 通过副本和分区机制提供了容错性,能够在出现机器故障时保证系统的可靠性和数据的不丢失。
  7. 高并发:Kafka 支持数千个客户端同时读写,适合大规模分布式系统。
  8. 解耦和扩展性:Kafka 允许系统的不同组件以消息为中心进行通信,从而实现解耦,同时提供了系统的可扩展性。
  9. 端到端的精确处理:Kafka 通过与外部存储系统的协作,提供了端到端的精确一次处理语义(Exactly once),尽管这通常需要额外的机制来实现。
  10. 灵活性和峰值处理能力:Kafka 能够使关键组件顶住突发的访问压力,同时保持系统的灵活性。

Kafka 的设计哲学和目标使其成为了一个在大数据处理领域非常流行的工具,尤其适用于需要高吞吐量、数据持久化和分布式系统的场景。

3、 Kafka 的核心概念

image-20240506112254438

Kafka 的核心概念包括以下几个方面:

  1. 生产者(Producer)
    • 负责创建和发送消息到 Kafka 集群中的特定主题。
  2. 消费者(Consumer)
    • 从 Kafka 集群中的主题拉取(pull)消息进行处理。
  3. Broker
    • Kafka 集群中的一个节点,负责维护和管理消息数据。
  4. 主题(Topic)
    • 消息的分类单位,生产者将消息发送到主题,消费者从主题读取消息。
  5. 分区(Partition)
    • 主题可以被划分为一个或多个分区,以支持大规模数据的并行处理和负载均衡。
  6. 副本(Replica)
    • 为了提高消息的可靠性,每个分区都有多个副本,其中一个副本是领导者(Leader),其他副本是追随者(Followers)。
  7. 领导者(Leader)
    • 分区中的一个副本作为领导者,负责处理所有对该分区的读写请求。
  8. 追随者(Follower)
    • 分区中的其他副本作为追随者,复制领导者中的数据以提供冗余。
  9. ZooKeeper
    • Kafka 集群使用 ZooKeeper 来管理集群的元数据以及进行领导者选举等操作。
  10. 消费组(Consumer Group)
    • 消费者可以组成一个组,以便能够并行地消费消息。每个分区只能由消费组中的一个消费者消费。
  11. 消息(Message)
    • Kafka 中的基本数据单元,包含有效载荷(payload)和元数据(如键和时间戳)。
  12. 偏移量(Offset)
    • 消息在分区中的序列号,用于追踪消息的位置和确保消息顺序。
  13. 持久性(Durability)
    • Kafka 提供了持久化消息的机制,确保消息不会因为系统故障而丢失。
  14. 可扩展性(Scalability)
    • Kafka 支持在线水平扩展,可以通过增加更多的 Broker 来扩展系统。
  15. 流处理(Stream Processing)
    • Kafka 支持流处理,允许对实时数据流进行处理和分析。
  16. 消息保留策略(Retention Policy)
    • Kafka 允许设置消息的保留时间或大小,超过限制后,旧的消息将被删除。
  17. 高吞吐量(High Throughput)
    • Kafka 设计用于高吞吐量的消息处理,即使在廉价的硬件上也能实现高性能。

这些核心概念共同构成了 Kafka 强大的消息系统,使其在分布式系统中的数据传输和处理方面表现出色。

4、 Kafka 的核心 API

Kafka 提供了几个核心的 API,以支持不同类型的数据处理和应用场景:

  1. Producer API
    • 允许应用程序向一个或多个 Kafka 主题发送消息记录。生产者可以批次发送消息以提高效率。
  2. Consumer API
    • 允许应用程序订阅一个或多个主题并处理生成的记录流。消费者可以从主题读取数据。
  3. Streams API
    • 允许应用程序作为一个流处理器,从一个或多个主题中消费输入流,并为其生成输出流,有效将输入流转换为输出流。
  4. Connector API
    • 允许构建和运行可重用的生产者或消费者,将 Kafka 主题连接到现有的应用程序或数据系统,如关系型数据库。

这些 API 使得 Kafka 不仅可以作为简单的消息队列使用,还可以构建复杂的流处理应用程序。客户端和服务器之间的通信是通过简单、高性能、语言无关的 TCP 协议完成的,此协议已版本化并保持与旧版本的向后兼容性。Kafka 提供了多种语言的客户端库,以支持不同的编程环境。

这篇关于02、Kafaka 简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/967346

相关文章

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

Git 的特点—— Git 学习笔记 02

文章目录 Git 简史Git 的特点直接记录快照,而非差异比较近乎所有操作都是本地执行保证完整性一般只添加数据 参考资料 Git 简史 众所周知,Linux 内核开源项目有着为数众多的参与者。这么多人在世界各地为 Linux 编写代码,那Linux 的代码是如何管理的呢?事实是在 2002 年以前,世界各地的开发者把源代码通过 diff 的方式发给 Linus,然后由 Linus

【Tools】AutoML简介

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 AutoML(自动机器学习)是一种使用机器学习技术来自动化机器学习任务的方法。在大模型中的AutoML是指在大型数据集上使用自动化机器学习技术进行模型训练和优化。

SaaS、PaaS、IaaS简介

云计算、云服务、云平台……现在“云”已成了一个家喻户晓的概念,但PaaS, IaaS 和SaaS的区别估计还没有那么多的人分得清,下面就分别向大家普及一下它们的基本概念: SaaS 软件即服务 SaaS是Software-as-a-Service的简称,意思是软件即服务。随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。 它是一种通过Internet提供

MySQL record 02 part

查看已建数据库的基本信息: show CREATE DATABASE mydb; 注意,是DATABASE 不是 DATABASEs, 命令成功执行后,回显的信息有: CREATE DATABASE mydb /*!40100 DEFAULT CHARACTER SET utf8mb3 / /!80016 DEFAULT ENCRYPTION=‘N’ / CREATE DATABASE myd

GPU 计算 CMPS224 2021 学习笔记 02

并行类型 (1)任务并行 (2)数据并行 CPU & GPU CPU和GPU拥有相互独立的内存空间,需要在两者之间相互传输数据。 (1)分配GPU内存 (2)将CPU上的数据复制到GPU上 (3)在GPU上对数据进行计算操作 (4)将计算结果从GPU复制到CPU上 (5)释放GPU内存 CUDA内存管理API (1)分配内存 cudaErro