【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…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
字符串哈希+KMP
P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...
【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验
2024年初,人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目(一款融合大型语言模型能力的云端AI编程IDE)时,技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力,TRAE在WayToAGI等…...
Linux操作系统共享Windows操作系统的文件
目录 一、共享文件 二、挂载 一、共享文件 点击虚拟机选项-设置 点击选项,设置文件夹共享为总是启用,点击添加,可添加需要共享的文件夹 查询是否共享成功 ls /mnt/hgfs 如果显示Download(这是我共享的文件夹)&…...
python读取SQLite表个并生成pdf文件
代码用于创建含50列的SQLite数据库并插入500行随机浮点数据,随后读取数据,通过ReportLab生成横向PDF表格,包含格式化(两位小数)及表头、网格线等美观样式。 # 导入所需库 import sqlite3 # 用于操作…...
linux设备重启后时间与网络时间不同步怎么解决?
linux设备重启后时间与网络时间不同步怎么解决? 设备只要一重启,时间又错了/偏了,明明刚刚对时还是对的! 这在物联网、嵌入式开发环境特别常见,尤其是开发板、树莓派、rk3588 这类设备。 解决方法: 加硬件…...
简单聊下阿里云DNS劫持事件
阿里云域名被DNS劫持事件 事件总结 根据ICANN规则,域名注册商(Verisign)认定aliyuncs.com域名下的部分网站被用于非法活动(如传播恶意软件);顶级域名DNS服务器将aliyuncs.com域名的DNS记录统一解析到shado…...
