Apache Pulsar工作原理

Apache Pulsar的功能特性、组件介绍、和Kafka对比 1. 层级储存Infinite Stream: 以流的方式永久保存原始数据分区的容量不再受限制充分利用云存储或现有的廉价存储(例如HDFS)数据统⼀表征:客户端无需关心数据究竟存储在哪⾥2. Pulsar IO(Connector)连接器Pulsar IO分为输入(Input)和输出(Output)两个模块,用于解决Pulsar与周边系统的集成问题目前支持非常多的连接集成操作: 例如HDFS 、Spark、Flink 、Flume 、ES 、HBase等。 阅读详情

在本文中,我们将介绍ApachePulsar的设计,以便更好地设计故障场景。这篇文章不是为那些想了解如何使用ApachePulsar的人写的,而是为那些想了解它是如何工作的人写的。我一直在努力以一种简单易懂的方式对其架构进行清晰的概述。

主要的声明包括:

  • 保证不会丢失消息(如果采用了建议的配置,并且您的整个数据中心不会被烧毁)
  • 强排序保证
  • 可预测的读写延迟

Apache Pulsar选择一致性而不是可用性,其姊妹项目BookKeeper和ZooKeeper也是如此。尽一切努力使其具有很强的一致性。

我们将看看Pulsar的设计,看看这些说法是否有效。

多层抽象

ApachePulsar具有主题和订阅的高级概念,最低级别的数据存储在二进制文件中,这些二进制文件将分布在多台服务器上的多个主题的数据交织在一起。中间是无数的细节和运动部件。我个人认为,如果我将Pulsar架构划分为不同的抽象层,那么理解它就更容易了,所以这就是我在本文中要做的。

让我们沿着层层往下走。

第1层-主题、订阅和游标

这篇文章不是关于可以使用Apache Pulsar构建的消息传递体系结构的。我们将只介绍主题、订阅和游标的基本内容,但不会深入了解Pulsar支持的更广泛的消息传递模式。

消息存储在主题中。从逻辑上讲,主题是一个日志结构,每条消息都有一个偏移量。Apache Pulsar使用术语游标来描述偏移量的跟踪。制作人将他们的信息发送到给定的主题,Pulsar保证,一旦信息被确认,它就不会丢失(除了一些超级糟糕的灾难或糟糕的配置)。

消费者通过订阅使用来自主题的消息。订阅是一个逻辑实体,它跟踪光标(当前使用者偏移量),并根据订阅类型提供一些额外的保证:

  • 独家订阅-一次只有一个消费者可以通过订阅阅读主题
  • 共享订阅-竞争消费者可以通过同一订阅同时阅读主题。
  • 故障转移订阅-用户的活动/备份模式。如果活动consumer消费者死亡,则备份将接管。但从来没有两个活跃的消费者同时存在。

一个主题可以有多个附加订阅。订阅不包含数据,只包含元数据和光标。

Pulsar提供了排队和日志语义,允许消费者将Pulsar主题视为在消费者确认后删除消息的队列,或者消费者可以在需要时回放光标的日志。下面的存储模型是相同的-一个日志。

如果未对主题(通过其命名空间)设置数据保留策略,则在附加订阅的所有游标都通过其偏移量后,将删除消息。也就是说,邮件已在附加到该主题的所有订阅上得到确认。

但是,如果存在覆盖主题的数据保留策略,则消息在通过策略边界(主题大小、主题中的时间)后将被删除。

也可以发送过期的消息。如果这些消息在未确认的情况下超过TTL,则会将其删除。这意味着可以在任何消费者有机会阅读它们之前将其删除。过期只适用于未确认的消息,因此更适合于事物的排队语义方面。

TTL分别应用于每个订阅,这意味着“删除”是一种逻辑删除。实际删除将根据其他订阅和任何数据保留策略中发生的情况在以后进行。

消费者一个接一个地或累积地确认他们的信息。累积确认将更好地提高吞吐量,但会在使用者失败后引入重复的消息处理。但是,累积确认不适用于共享订阅,因为确认基于偏移量。但是,使用者API允许批处理确认,这些批处理确认最终将得到相同数量的确认,但RPC调用更少。这可以提高共享订阅上竞争消费者的吞吐量。

最后,还有一些与Kafka主题类似的分区主题。不同的是,Pulsar中的分区也是主题。就像kafka一样,生产者可以循环发送消息,使用散列算法或显式选择分区。

这是对高级概念的旋风式介绍,我们现在将深入探讨。请记住,这不是从10000英尺的高度对Apache Pulsar的入门介绍,而是从1000英尺的高度看它是如何在下面工作的。

第2层-逻辑存储模型

现在Apache BookKeeper进入了现场。我将在Apache Pulsar的上下文中讨论BookKeeper,尽管BookKeeper是一个通用的日志存储解决方案。

首先,Apache BookKeeper跨节点集群存储数据。每个BookKeeper节点称为一个BookKeeper。其次,Pulsar和BookKeeper都使用ApacheZooKeeper来存储元数据和监视节点健康状况。

一个主题实际上是一系列Ledgers。Ledger本身就是一个日志。因此,我们从一系列子日志(分类账)组成一个父日志(主题)。

Ledger附加到主题,entries(消息或消息组)附加到Ledgers。Ledgers一旦关闭,就不可更改。Ledgers是作为一个整体删除的,也就是说,我们不能删除单个条目,而是作为一个整体删除Ledgers。

Ledgers本身也被分解成碎片。片段是BookKeeper集群中最小的分布单元(根据您的观点,条带化可能会使该声明无效)。

主题

CST周期边界仿真:揭秘频率选择表面(FSS)单元设计全流程 本文详细解析了CST周期边界仿真在频率选择表面(FSS)单元设计中的应用全流程。从理论基础到工程实践,涵盖了求解器选择、几何建模、边界设置、端口优化等关键步骤,并提供了常见问题排查指南。通过CST仿真技术,工程师能够高效预测FSS的电磁特性,为实际应用提供可靠的设计依据。 阅读详情

相关推荐

nmap、X-Scan漏洞扫描和Metasploit中用永恒之蓝漏洞入侵靶机并上传冰河

利用nmap、X-Scan扫描靶机的漏洞,在Metasploit中用扫描出的永恒之蓝漏洞入侵靶机,建立连接后上传冰河木马控制靶机,最后用冰河陷阱清除靶机的冰河木马,记一次完整的入侵控制实验。

m0_59302403的博客 4409

【AAAI2025】【小目标检测】FBRT-YOLO:更快速、更优的实时航拍图像检测方法

FBRT-YOLO是一种新型实时航拍图像检测方法,针对小目标检测的精度与效率平衡问题提出创新解决方案。该方法通过两个轻量级模块显著提升性能:特征互补映射模块(FCM)将浅层空间位置信息深度整合至网络深层,缓解信息失衡;多核感知单元(MKP)采用多尺度卷积增强多目标感知能力。实验表明,在VisDrone、UAVDT和AI-TOD数据集上,FBRT-YOLO在检测精度和速度方面均优于现有实时检测器,特别适用于资源受限的飞行设备。该模型通过精简网络结构,在保持高性能的同时降低了计算负担,为航拍实时检测提供了高效解

weixin_44184852的博客 2908

Imputation Methods for scRNA Sequencing Data

越来越多的研究者使用单细胞RNA测序(scRNA-seq)技术来表征单细胞水平的转录图谱。他们用它来研究复杂组织的异质性、转录组动力学和未知生物的多样性。然而,在基因表达模式随机性的scRNA-seq数据中普遍存在许多技术和生物学上的噪音。这些数据通常具有高维、稀疏和大量“dropout”值的特点,并且受批处理效应的影响。scRNA-seq数据中大量的“dropout”值严重掩盖了基因之间的重要关系,阻碍了下游分析。因此,scRNA-seq数据dropout值的估算就显得尤为重要。

qq_34179307的博客 543

微观交通流仿真软件:SUMO (Simulation of Urban MObility)_(8).仿真场景创建与编辑

总结文件()包含了仿真过程中的总体统计信息,如车辆生成数、平均速度等。加载总结文件使用Python的提取关键信息通过以上步骤,可以使用SUMO及其相关工具和库创建和编辑交通仿真场景。无论是手动创建、使用工具转换现有数据,还是通过Python脚本自动生成,SUMO都提供了丰富的功能来满足不同需求。此外,Traci库允许在仿真过程中动态调整交通场景,从而实现更精细的控制和优化。最后,通过对输出文件的分析,可以评估仿真结果并进行进一步的改进。

kkchenjj的博客 1271

移植Google Gemini Nano到RK3588 NPU,实现高效边缘推理

在嵌入式 AI 开发中,大家常常会遇到模型在硬件平台上运行时出现性能瓶颈的问题,比如推理速度慢、功耗过高,这严重影响了应用的实时性和稳定性 ,导致性能瓶颈,无法满足如智能安防、工业检测等场景的实时性需求。为了解决这些问题,我们可以将轻量模型移植到具有强大算力的硬件平台上。本文将手把手教你将 Google Gemini Nano(或类似轻量模型)移植到 RK3588 NPU,充分发挥 RK3588 NPU 的 6Tops 算力,实现高效的模型推理,提升嵌入式系统的 AI 处理能力。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 298

Android16 自定义HAL层适配一些VINTF和SELINUX问题修改

在RK里面一般权限矩阵在/rockchip/common/manifests/目录,我这版Android16的代码比较特殊,这里重点修改/device/rockchip/rockchip_generic/manifests/frameworks_compatibility_matrix.xml这个文件,不同的版本注册方式不同,在。hal_ruip_default.te,hal_ruip.te,attributes文件。拓展策略的方式添加,但是在Android16里面发现用不了。发现HAL层服务注册成功了。

tzj1058756809的博客 244

OpenClaw 开机自启配置:Windows/macOS/Linux 全平台技术指南

OpenClaw 开机自启全平台配置指南 本文提供了在Windows、macOS和Linux系统上配置OpenClaw开机自启的完整技术方案。主要内容包括: Windows配置:提供三种方法(Windows服务、任务计划程序、启动文件夹),详细说明服务脚本创建、服务注册和测试流程 macOS配置:使用LaunchAgent实现开机自启,包含配置文件创建和加载方法 Linux配置:通过systemd服务实现,包括服务单元文件创建和启用步骤 系统要求:明确硬件(64位CPU/4GB内存)和软件(各平台操作系统版

一键难忘的博客 2995

webrtc进阶-- FlexFEC 实现原理与调试分析(m80 代码对齐版)

WebRTC 中 FlexFEC 技术解析与调试指南 摘要:本文深入分析 WebRTC 的 FlexFEC(灵活前向纠错)技术实现原理,重点探讨其在 m80 版本中的协商机制、接收侧恢复流程以及 SFU 场景下的特殊处理。文章指出 FlexFEC 通过动态冗余策略提升弱网抗丢包能力,详细解析了编解码器分配、SSRC 映射、包恢复等关键环节,并提供了针对 XR+SFU 场景的调试建议。调试时可重点关注 FEC 包接收与媒体包恢复日志,以验证链路有效性。

HOSTEN的博客 50

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 基于Spring WebFlux和Vault PKI的SSL
下一篇: Dapr与Service Mesh的区别
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值