关于kafka

1.为什么需要消息队列

举个经典的例子。

你是一个网购达人,经常在网上购物。快递小哥到了你的小区后,立刻给你打电话说:“你的快递到了,请马上来取。”

但你是一个合格的牛马,在上班,不方便取快递,只能等下班才能取快递。那快递小哥总不能一直傻等着你下班吧,他还有很多其他人的快递要送。不管是你请假拿快递,还是小哥干等着你来取快递,这都会影响效率。

因此,快递柜、快递站应用而生,他的身份就是消息队列。它充当了一个缓冲区的角色,快递小哥按照自己的时间安排送快递,我们按照自己的时间安排取快递,如此一来,就解决了快递员和你之间的时间差沟通效率问题。

总结一下,消息中间件出现带来的好处:
1、 解耦
  快递小哥手上有很多快递需要送,他每次都需要先电话一一确认收货人是否有空、哪个时间段有空,然后再确定好送货的方案。这样完全依赖收货人了!如果快递一多,快递小哥估计的忙疯了……如果有了快递站,快递小哥只需要将同一个小区的快递放在同一个快递站,然后通知收货人来取货就可以了,这时候快递小哥和收货人就实现了解耦!

2、 异步
  快递小哥打电话给我后需要一直在你楼下等着,直到我拿走你的快递他才能去送其他人的。快递小哥将快递放在快递站后,又可以干其他的活儿去了,不需要等待你到来而一直处于等待状态。提高了工作的效率。

3、 削峰
  假设双十一我买了不同店里的各种商品,而恰巧这些店发货的快递都不一样,有中通、圆通、申通、各种通等……更巧的是他们都同时到货了!中通的小哥打来电话叫我去北门取快递、圆通小哥叫我去南门、申通小哥叫我去东门。我一时手忙脚乱……此时,一个菜鸟驿站就解决了这些问题。

2.什么是kafka,应用场景

kafka是基于发布/订阅的分布式消息系统。具有消息持久化速度快、高吞吐、高容错、易扩展的特点。

kafka的作用和好处是:解耦、异步、削峰

Kafka的主要应用场景有:

  1. 消息队列:用作高吞吐量的消息系统,将消息从一个系统传递到另一个系统。
  2. 日志收集:集中收集日志数据,然后通过Kafka传递到实时监控系统或存储系统。
  3. 流计算:处理实时数据流,将数据传递给实时计算系统,如Apache Storm或Apache Flink。
  4. 事件溯源:记录事件发生的历史,以便稍后进行数据回溯或重新处理。

3.kafka的集群架构

 推荐视频:详细原理_哔哩哔哩_bilibili

3.1架构图

3.2.kafka基本架构包括的组件及作用

Kafka 的基本架构主要包括四个组件:Producer(生产者)、Consumer(消费者)、Broker(消息代理)和 Zookeeper(协调器)

  1. Producer(生产者):负责将数据发布到 Kafka 的特定 Topic 上。它会根据要求将数据以不同的分区策略分布到各个分区里。
  2. Consumer(消费者):从 Kafka 的 Topic 中读取数据。消费者可以属于某个消费组(Consumer Group),这样可以让多个消费者平衡负载读取数据。
  3. Broker(消息代理):是 Kafka 的核心。Kafka 集群由一个或多个服务器组成,每个服务器被称为 Broker。Broker 负责接收消息、记录消息、响应消费者请求等。
  4. Zookeeper(协调器):用于 Kafka 的分布式协调和管理任务,比如存储 Broker 的元数据信息、管理集群成员关系、主题配置、选举 Leader。Zookeeper 确保 Kafka 集群的高可用性和一致性。

其他名词解释:

  • Topic:Topic 是特定类型的消息流。Kafka 中的消息被归类为不同的主题,生产者将数据发送到特定的主题,消费者从特定的主题读取数据。
  • Partition:每个 Topic 可以分成多个 Partition(分区),以便于扩展和提高并行处理能力。每个 Partition 都是一个有序的、不可变的消息序列,并且可以持续地添加消息。
  • Leader and Follower:在 Partition 的副本中,有一个副本是 Leader,其他副本则是 Followers。Leader 副本负责处理所有针对该 Partition 的读写请求,Follower 副本会同步 Leader 的数据作为备份。
  • Replication:每一个分区都有多个副本,副本的作用是做备胎。当主分区(Leader)故障的时候会选择一个备胎(Follower)上位,成为Leader。在kafka中默认副本的最大数量是10个,且副本的数量不能大于Broker的数量,follower和leader绝对是在不同的机器,同一机器对同一个分区也只可能存放一个副本(包括自己)。
  • Offset:Offset 是 Partition 中每条消息的唯一标识符,它是一个单调递增的整数。消费者通过 Offset 来追踪其消费进度。
  • Consumer Group:一组 Consumers 可以组成一个 Consumer Group,用于共同消费同一个 Topic 下的消息。Kafka 确保每条消息只会被同一个 Consumer Group 中的一个 Consumer 处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/78104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务即时通信系统(十二)---入口网关子服务

目录 功能设计 模块划分 业务接口/功能示意图 服务实现流程 网关HTTP接口 网关WebSocket接口 总体流程 服务代码实现 客户端长连接管理封装(connectionManage.hpp) proto文件的编写 身份鉴权proto 事件通知proto 各项请求的URL的确定 服务端完成入口网关服务类…

存储器层次结构:理解计算机记忆的金字塔

存储器层次结构:理解计算机记忆的金字塔 在计算机系统中,“速度”与“成本”常常处于对立面。为了在速度与成本之间取得平衡,计算机体系结构采用了一种名为“存储器层次结构(Memory Hierarchy)”的设计思想。本文将通…

HTTP 错误 500.19 - Internal Server Error

1.HTTP 错误 500.19 - Internal Server Error NetCore项目托管到IIS后,报错如下: 原因是因为IIS中没有安装AspNetCoreModuleV2导致的, 1.打开IIS 2.选中服务器根节点,找到模块,双击进入,确认模块中是否存…

【c++】【STL】stack详解

目录 stack类的作用什么是容器适配器stack的接口构造函数emptysizetoppushpopswap关系运算符重载 stack类的实现 stack类的作用 stack是stl库提供的一种容器适配器,也就是我们数据结构中学到的栈,是非常常用的数据结构,特点是遵循LIFO&#…

K8s学习与实践

一、Kubernetes 核心原理 1. Kubernetes 设计哲学 Kubernetes(k8s)是一个开源的容器编排平台,旨在自动化容器化应用的部署、扩展和管理。其核心设计围绕以下目标: 声明式配置:用户描述期望状态(如 YAML …

Umi-OCR项目(1)

最近接触到了一个项目,我在想能不能做出点东西出来。 目标:识别一张带表格的图片,要求非表格内容和表格内容都要识别得很好,并且可视化输出为word文档。 下面是第一步的测试代码,测试是否能够调用ocr能力。 import re…

Mioty|采用报文分割(Telegram Splitting)以提高抗干扰能力的无线通信技术【无线通信小百科】

1、什么是Mioty 在物联网(IoT)快速发展的背景下,低功耗广域网(LPWAN)技术成为连接海量设备的关键。LPWAN具有低功耗、低成本、广覆盖和强抗干扰能力等特点,使其特别适用于大规模、远距离、低数据速率的IoT…

TCP三次握手、四次挥手+多线程并发处理

目录 一、三次握手建立连接 1.1 标记位 1.2 三次握手的过程 二、四次挥手断开连接 三、模拟服务器和客户端收发数据 四、多线程并发处理 五、TCP粘包问题 5.1 什么是TCP粘包? 5.2 TCP粘包会有什么问题? 5.3 TCP粘包的解决方法? 一、三…

使用HunyuanVideo搭建文本生视频大模型

1.摘要 HunyuanVideo是一个全新的开源视频基础模型,其视频生成性能堪比领先的闭源模型,甚至超越它们。我们采用了多项模型学习的关键技术,通过有效的模型架构和数据集扩展策略,我们成功训练了一个拥有超过 130 亿个参数的视频生成…

LabVIEW圆锥滚子视觉检测系统

基于LabVIEW平台的视觉检测系统提高圆锥滚子内组件的生产质量和效率。通过集成高分辨率摄像头和先进的图像处理算法,系统能够自动识别和分类产品缺陷,从而减少人工检查需求,提高检测的准确性和速度。 ​​ ​ 项目背景 随着制造业对产品质…

mac 基于Docker安装minio服务器

在 macOS 上基于 Docker 安装 MinIO 是一个高效且灵活的方案,尤其适合本地开发或测试环境。以下是详细的安装与配置步骤,结合了最佳实践和常见问题的解决方案: 一、安装 Docker Desktop 下载安装包 访问 Docker 官网,下载适用于 …

EchoMimicV2 部署记录

在这里插入代码片# 虚拟环境配置 pip install pip -U pip install torch2.5.1 torchvision0.20.1 torchaudio2.5.1 xformers0.0.28.post3 --index-url https://download.pytorch.org/whl/cu124 pip install torchao --index-url https://download.pytorch.org/whl/nightly/cu1…

数据升降级:医疗数据的“时空穿梭“系统工程(分析与架构篇)

一、核心挑战与量化分析 1. 版本演化困境的深度解析 (1) 格式断层的结构化危机 数据转换黑洞:某医疗信息平台(2021-2023)统计显示: 数据类型CDA R1→R2转换失败率R2→FHIR转换失败率关键失败点诊断记录28.4%19.7%ICD编码版本冲突(18.7%)用药记录15.2%12.3%剂量单位标准化…

个人开发免费好用

聊一聊 现在输入法非常多,有时候都不知道哪个更好用。 其实,只有多尝试,才能找到适合自己的。 今天给大家分享一款输入法,用起来比较顺手,大家可以试试。 软件介绍 BL输入法 这是一款绿色纯净,安全放心…

Windows查看和修改IP,IP互相ping通

Windows系统 查看IP地址 winr 输入cmd 打开终端使用 ipconfig 或 ipconfig -all 命令查看当前网络 IPV4地址 Windows系统 修改IP地址 自动获取IP(DHCP): 打开 控制面板,点击 网络和Internet。点击 网络和共享中心。选择 更改适配…

【IP101】图像处理基础:从零开始学习颜色操作(RGB、灰度化、二值化、HSV变换)

🎨 颜色操作详解 🌟 在图像处理的世界里,颜色操作就像是一个魔术师的基本功。今天,让我们一起来解锁这些有趣又实用的"魔法"吧! 📚 目录 通道替换 - RGB与BGR的"调包"游戏灰度化 - 让…

windows系统搭建自己的ftp服务器,保姆级教程(用户验证+无验证)

前言 最近在搭建环境时,我发现每次都需要在网上下载依赖包和软件,这不仅耗时,而且有时还会遇到网络不稳定的问题,导致下载速度慢或者中断,实在不太方便。于是,我产生了搭建一个FTP服务器的想法。通过搭建FT…

蓝桥杯 7. 晚会节目单

晚会节目单 原题目链接 题目描述 小明要组织一台晚会,总共准备了 n 个节目。然而晚会时间有限,他只能从中选择 m 个节目。 这 n 个节目是按照小明设想的顺序给定的,顺序不能改变。 小明发现观众对于晚会的喜欢程度与前几个节目的好看程度…

JavaScript如何实现类型判断?

判断一个数据的类型,常用的方法有以下几种: typeofinstanceofObject.prototype.toString.call(xxx) 下面来分别分析一下这三种方法各自的优缺点 typeof typeof的本意是用来判断一个数据的数据类型,所以返回的也是一个数据类型。但是会遇到下…

哈希表笔记(四)Redis对比Java总结

文章目录 一、基础结构对比数据结构定义Java HashMapRedis字典 主要区别与设计思路 二、关键操作API对比初始化Java HashMapRedis字典 添加元素Java HashMapRedis字典 查找元素Java HashMapRedis字典 删除元素Java HashMapRedis字典 扩容/重哈希操作Java HashMapRedis字典 三、…