【1】 Kafka快速入门-从原理到实践
文章目录
- 🔍 一、引言
- 📜 二、Kafka 的历史
- 🏗️ 三、Kafka 的核心结构
- 🖥️ (一)Broker
- 📋 (二)Topic
- 📄 (三)Partition
- 📤 (四)Producer
- 📥 (五)Consumer
- 🐒 (六)Zookeeper
- 💡 四、Kafka 的重点概念
- 📨 (一)消息
- 📏 (二)偏移量(Offset)
- 🔄 (三)副本(Replica)
- 👥 (四)消费者组(Consumer Group)
- 📝 (五)分区策略
- 📈 五、Kafka 的重点使用场景
- 💻 (一)大数据处理
- 🌊 (二)实时流处理
- 📄 (三)日志收集与聚合
- 💬 (四)消息系统
- 📋 六、Kafka 的工作模式
- 🔌 (一)点对点模式
- 📣 (二)发布/订阅模式
- 🐍 七、Python 如何使用 Kafka 进行操作
- 📥 (一)安装 Kafka-Python 库
- 📤 (二)生产者示例
- 📥 (三)消费者示例
- 📝 (四)高级用法
- 📋 八、总结
🔍 一、引言
在当今大数据和分布式系统的时代,消息队列扮演着至关重要的角色。Kafka 作为一款高性能、分布式的消息队列系统,广泛应用于众多企业级架构中。它能够处理海量的实时数据,实现系统间的松耦合,为大数据处理、实时流处理、日志收集等多种场景提供了强大的支持。本文将深入探讨 Kafka 的历史、核心结构、重点概念、使用场景、工作模式以及在 Python 中的使用方法,旨在为读者全面理解和应用 Kafka 提供丰富的知识和实践指导。
📜 二、Kafka 的历史
Kafka 最初由 LinkedIn 开发,旨在解决其内部大规模数据处理和实时消息传递的需求。随着时间的推移,Kafka 的高性能、可扩展性和可靠性等优点逐渐被业界认可,于 2011 年开源,并迅速成为 Apache 软件基金会的顶级项目。如今,Kafka 已经被众多知名企业广泛采用,如 Netflix、Uber、Airbnb 等,成为构建现代分布式系统不可或缺的一部分。
🏗️ 三、Kafka 的核心结构
🖥️ (一)Broker
Broker 是 Kafka 集群中的核心节点,负责存储和转发消息。一个 Kafka 集群可以包含多个 Broker,它们协同工作以实现高可用性和水平扩展性。每个 Broker 都有自己的唯一标识符,并且存储着一部分主题(Topic)的数据。
📋 (二)Topic
Topic 是消息的逻辑分类,类似于数据库中的表。生产者(Producer)将消息发送到特定的 Topic,而消费者(Consumer)则从 Topic 中订阅并接收消息。一个 Topic 可以被划分为多个分区(Partition),以实现并行处理和高吞吐量。
📄 (三)Partition
Partition 是 Topic 的物理细分,每个 Partition 是一个有序的、不可变的消息序列。消息在 Partition 中按照先进先出(FIFO)的顺序存储和读取。不同的 Partition 可以分布在不同的 Broker 上,从而实现数据的分布式存储和负载均衡。每个 Partition 都有一个主副本(Leader Replica)和多个从副本(Follower Replica),主副本负责处理读写请求,从副本用于数据备份和故障恢复。
📤 (四)Producer
Producer 是消息的生产者,它负责将消息发送到 Kafka 的 Topic 中。Producer 可以根据指定的分区策略将消息发送到特定的 Partition,例如基于消息的键值进行哈希分区,或者按照轮询的方式将消息均匀分布到各个 Partition。
📥 (五)Consumer
Consumer 是消息的消费者,它从 Kafka 的 Topic 中订阅并接收消息。多个 Consumer 可以组成一个消费者组(Consumer Group),同一消费者组中的 Consumer 共同消费一个 Topic 中的消息,每个 Partition 只能被同一个消费者组中的一个 Consumer 消费,这样可以实现消息的负载均衡和水平扩展。消费者通过定期向 Kafka 集群发送心跳来维持其在消费者组中的成员资格,并获取新的消息。
🐒 (六)Zookeeper
Zookeeper 在 Kafka 集群中起着协调和管理的作用。它负责维护集群的元数据信息,如 Broker 的注册信息、Topic 的配置信息、Partition 的分配信息以及消费者组的状态信息等。Kafka 依赖 Zookeeper 实现集群的动态扩展、故障恢复和负载均衡等功能。
💡 四、Kafka 的重点概念
📨 (一)消息
消息是 Kafka 中数据传输的基本单元,它由键(Key)、值(Value)和时间戳(Timestamp)等组成。键可以用于指定消息的分区策略,值则是实际传输的数据内容。时间戳记录了消息产生的时间,对于一些基于时间的操作和处理非常重要。
📏 (二)偏移量(Offset)
偏移量是消费者在 Partition 中消费消息的位置标记。消费者通过记录自己消费到的偏移量,可以在下次启动时从上次停止的位置继续消费,从而实现消息的持久化消费和故障恢复。偏移量是一个单调递增的整数,每个 Partition 都有自己独立的偏移量序列。
🔄 (三)副本(Replica)
如前所述,Kafka 的 Partition 有主副本和从副本之分。主副本负责处理读写请求,从副本则不断从主副本同步数据,以保持数据的一致性。当主副本所在的 Broker 发生故障时,Kafka 会自动从从副本中选举一个新的主副本,从而保证服务的可用性。
👥 (四)消费者组(Consumer Group)
消费者组是 Kafka 实现消费者负载均衡和水平扩展的重要机制。同一消费者组中的消费者共同消费一个 Topic 的消息,每个 Partition 只能被同一个消费者组中的一个消费者消费。不同消费者组之间相互独立,它们可以同时消费同一个 Topic 的消息,从而实现不同
相关文章:
【1】 Kafka快速入门-从原理到实践
文章目录 🔍 一、引言📜 二、Kafka 的历史🏗️ 三、Kafka 的核心结构🖥️ (一)Broker📋 (二)Topic📄 (三)Partition📤 (四)Producer📥 (五)Consumer🐒 (六)Zookeeper💡 四、Kafka 的重点概念📨 (一)消息📏 (二)偏移量(Offset)🔄 (…...
go语言中的map类型详解
在Go语言中,map是一种内建的数据结构,提供了键值对(key-value)的存储方式。map通常用于实现快速的查找和关联数组,适合在需要根据键来高效查找值的场景下使用。 基本概念 map是一个无序的集合,它存储了键…...
GBase 8a MPP Cluster V9安装部署
GBase 8a MPP Cluster V9安装部署 安装环境准备 节点角色操作系统地址配置GBASE版本gbase01.gbase.cnGCWARE,COOR,DATACentOS 7.9192.168.20.1422C4GGBase 8a MPP Cluster V9 9.5.3.28.12gbase02.gbase.cnGCWARE,COOR,DATACentOS 7.9192.168.20.1432C4GGBase 8a MPP Cluster …...
静态库、动态库、framework、xcframework、use_frameworks!的作用、关联核心SDK工程和测试(主)工程、设备CPU架构
1.1库的概念 库:程序代码的集合,编译好的二进制文件加上头文件供使用,共享程序代码的一种方式。 1.2库的分类 根据开源情况分为:开源库(能看到具体实现)、闭源库(只公开调用的的接口…...
C++ | Leetcode C++题解之第552题学生出勤记录II
题目: 题解: class Solution { public:static constexpr int MOD 1000000007;vector<vector<long>> pow(vector<vector<long>> mat, int n) {vector<vector<long>> ret {{1, 0, 0, 0, 0, 0}};while (n > 0) {…...
网站架构知识之Ansible(day020)
1.Ansible架构 Inventory 主机清单:被管理主机的ip列表,分类 ad-hoc模式: 命令行批量管理(使用ans模块),临时任务 playbook 剧本模式: 类似于把操作写出脚本,可以重复运行这个脚本 2.修改配置 配置文件:/etc/ansible/ansible.cfg 修改配置文件关闭主机Host_key…...
K8s使用nfs
改动点 ip和路径改为自己的 --- apiVersion: v1 kind: ServiceAccount metadata:name: nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: nfs-client --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata:nam…...
【大数据学习 | kafka高级部分】kafka的kraft集群
首先我们分析一下zookeeper在kafka中的作用 zookeeper可以实现controller的选举,并且记录topic和partition的元数据信息,帮助多个broker同步数据信息。 在新版本中的kraft模式中可以这个管理和选举可以用kafka自己完成,而不再依赖zookeeper。…...
爬虫策略规避:Python爬虫的浏览器自动化
网络爬虫作为一种自动化获取网页数据的技术,被广泛应用于数据挖掘、市场分析、竞争情报等领域。然而,随着反爬虫技术的不断进步,简单的爬虫程序往往难以突破网站的反爬虫策略。因此,采用更高级的爬虫策略,如浏览器自动…...
Hive 实现查询用户连续三天登录记录
标题:Hive 实现查询用户连续三天登录记录 在数据分析和处理中,经常会遇到需要查询特定条件数据的情况。本文将介绍如何使用 Hive 来查询用户连续三天登录的所有数据记录。 一、问题背景 我们有一个用户登录记录表,其中包含用户的登录日期信…...
OceanBase 4.3.3 功能解析:列存副本
OceanBase 从4.3.0 版本开始,引入了列式存储的支持。用户可以根据业务的具体需求,选择创建列存表、行存表或是行列混存表。无论选择哪种表类型,在不同的Zone内,租户使用的副本模式都是一致的。详见官网文档: https://w…...
2.Python解释器
python解释器程序,用来翻译python代码,并提交给计算机执行。 上一篇博客就是安装了python解释器程序 写一个python文件,在文件中写入多行代码并执行: 进入python后,输入exit()命令退出...
鸿蒙与团结引擎c#与ts简单交互
目录 团结中调用ts代码 鸿蒙中调用团结代码 首先在团结创建代码,需要将代码添加到场景物体中 devecoStudio端编写ts代码 在index页面添加一个测试按钮 团结中调用ts代码 团结引擎 - 手册: Call TypeScript plug-in code from C# scripts 注册函数要跟文件名一致 在u…...
Any 的原理以及实现
序言 在 C17 的更新中引入了一个特别有意思的类型,它提供了一种通用的方式来存储任何类型的数据而不需要提前指定类型, 该类型就是 any。 any 允许你将任意类型的数据存储在一个容器中,并且能够在运行时动态地访问该数据。话不多说…...
SQLI LABS | Less-35 GET-Bypass Add Slashes (we dont need them) Integer Based
关注这个靶场的其它相关笔记:SQLI LABS —— 靶场笔记合集-CSDN博客 0x01:过关流程 输入下面的链接进入靶场(如果你的地址和我不一样,按照你本地的环境来): http://localhost/sqli-labs/Less-35/ 话不多说…...
RNN(循环神经网络)详解
1️⃣ RNN介绍 前馈神经网络(CNN,全连接网络)的流程是前向传播、反向传播和参数更新,存在以下不足: 无法处理时序数据:时序数据长度一般不固定,而前馈神经网络要求输入和输出的维度是固定的&a…...
【AI抠图整合包及教程】探索SAM 2:图像与视频分割领域的革新者
在人工智能的浩瀚星空中,Meta公司的Segment Anything Model 2(SAM 2)犹如一颗璀璨的新星,以其前所未有的图像与视频分割能力,照亮了计算机视觉领域的新航道。SAM 2不仅继承了其前身SAM在零样本分割领域的卓越表现&…...
DevExpress中文教程 - 如何使用AI模型检查HTML编辑中的语法?
DevExpress .NET MAUI多平台应用UI组件库提供了用于Android和iOS移动开发的高性能UI组件,该组件库包括数据网格、图表、调度程序、数据编辑器、CollectionView和选项卡组件等。 目前许多开发人员正在寻找多种方法将AI添加到解决方案中(这通常比想象的要…...
python包管理工具pip和conda的使用对比
python包管理工具pip和conda的使用对比 总述1. pip使用2. conda注意虚拟环境之间的嵌套,这个会导致安装包后看不到包,实际是安装到了base环境里 未完待续 总述 pip相对于conda,对应包的依赖关系管理不强,坏处是容易造成包冲突,好…...
Linux案例:DNS服务器配置
Linux案例:DNS服务器配置 实验一:正向解析 服务端配置: [rootserver ~]# setenforce 0 [rootserver ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.70.131/24 ipv4.gateway 192.168.70.2 ipv4.dns 114.114.114.11…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
