当前位置:网站首页>Pulsar 主题压缩
Pulsar 主题压缩
2022-07-01 02:20:00 【swadian2008】
目录
Pulsar 以高度可扩展的消息数据持久存储为主要目标。Pulsar 主题使您能够持久存储所需数量的未确认消息,同时保留消息顺序。默认情况下,Pulsar 存储在某个主题上生成的所有未确认或未处理的消息。对于许多 Pulsar 场景来说,在一个主题上存储许多未确认的消息是必要的,但对于Pulsar 用户来说,在整个消息的日志中“回放”也将变得非常耗时。
有关主题压缩的更实用指南,请参阅 Topic compaction cookbook.
对于某些场景,消费者不需要主题日志的完整“图像”。它们可能只需要几个值去构建更“浅”的日志图像,甚至可能只需要最新的值。对于这些类型的场景,Pulsar 提供了主题压缩。当您对某个主题使用压缩时,Pulsar 会遍历主题的消息积压日志,并移除旧的消息,也就是说,它会按每个键遍历主题,只留下与该键关联的最新消息。
Pulsar的主题压缩功能:
- 允许通过主题日志更快地“回放”
- 仅适用于持久主题
- backlog 达到一定大小时自动触发,也可以通过命令行手动触发。See the Topic compaction cookbook
- 在概念和操作上不同于保留(retention)策略和到期(expiry)策略。相比如主题压缩策略,保留(retention)会优先执行。如果 retention 已从主题的消息积压中删除消息,则该消息也将无法从压缩的主题分类帐(ledger)中读取。
主题压缩示例:股票行情
Pulsar 压缩主题的一个示例场景是股票行情主题。在股票代码主题中,每条消息都带有一个时间戳的美元价值,用于购买股票(消息键包含股票符号,例如 AAPL 或 GOOG)。对于股票行情,您可能只关心股票的最新价值,而对历史数据不感兴趣(即,您不需要构建每个键的主题消息序列的完整图像)。在这种情况下,压缩是非常有益的,因为它可以避免消费者需要在费解的消息中回放。
How topic compaction works
当通过 CLI 触发主题压缩时(via the CLI),Pulsar将从头到尾遍历整个主题。对于每个 Key,压缩程序将保留该 Key 最新的记录。// CLI : 命令行界面(英语:command-line interface,缩写:CLI
之后,broker 将创建一个新的分类账(BookKeeper ledger),并对主题中的每条消息进行第二次迭代。对于每条消息的Key,如果Key与最新的数据匹配,则该Key的有效负载数据、消息ID和元数据都将写入新创建的分类帐(ledger)。如果Key与最新的数据不匹配,则将跳过该消息并将其保留。如果任何给定消息的有效负载为空(对一条消息的 key 赋空值),它将被跳过并被视为已删除(类似于 key-value 数据库中的墓碑概念->即暂时标记删除)。当第二次迭代主题结束时,会关闭新创建的分类账(BookKeeper ledger),并将以下两个内容写入主题的元数据:分类账ID(BookKeeper ledger)和上次压缩消息的消息ID(称为主题的压缩范围 compaction horizon)。一旦写入此元数据,压缩就完成了。
在压缩操作初始化之后,无论何时对压缩范围和压缩的积压消息(compacted backlog)进行任何形式更改,都会通知该主题的 broker,比如:
启用了读取压缩的客户端(consumers and readers)尝试从主题中读取消息,并且:
- 像正常一样读取主题(如果消息ID大于或等于压缩范围)或者
- 从压缩范围开始读取(如果消息ID小于压缩范围)
边栏推荐
- [punch in questions] integrated daily 5 questions sharing (phase I)
- [JS adds attributes to elements: setAttribute; classlist.remove; classlist.add;]
- Fast understanding of forward proxy and reverse proxy
- P6773 [NOI2020] 命运(dp、线段树合并)
- 7-2 punch in reward DP for puzzle a
- 端口号和进程号的区别?
- Pytorch - - Basic Reference North Deux élèves du secondaire peuvent comprendre [Rétropropagation et Gradient descendant]
- 如何在智汀中實現智能鎖與燈、智能窗簾電機場景聯動?
- (总结一)Halcon基础之寻找目标特征+转正
- Windows quick add boot entry
猜你喜欢
In the fourth week of June, the list - flying melon data up main growth ranking list (BiliBili platform) was released!
Ernie-gram, 显式、完备的 n-gram 掩码语言模型,实现了显式的 n-gram 语义单元知识建模。
機器學習10-信念貝葉斯分類器
int和位数组互转
House change for agricultural products? "Disguised" house purchase subsidy!
手机edge浏览器无法打开三方应用
(总结一)Halcon基础之寻找目标特征+转正
5款主流智能音箱入门款测评:苹果小米华为天猫小度,谁的表现更胜一筹?
LabVIEW calculates the camera image sensor resolution and lens focal length
SWT / anr problem - storagemanagerservice stuck
随机推荐
P6773 [noi2020] destiny (DP, segment tree merging)
SWT / anr problem - SWT caused by too long dump time
QML control type: tooltip
AS400 large factory interview
halcon变量窗口的图像变量不显示,重启软件和电脑都没用
How to add a condition for an associated table in an SQL statement [null value required or not required]
Ernie gram, an explicit and complete n-gram mask language model, implements explicit n-gram semantic unit knowledge modeling.
(翻译)使用眉状文本提高标题点击率
522. 最长的特殊序列 II
Zero foundation self-study SQL course | window function
SQL语句关联表 如何添加关联表的条件 [需要null值或不需要null值]
CorelDRAW 2022 Chinese Simplified 64 bit direct download
7-2 punch in reward DP for puzzle a
Leetcode interview question 17.10 Main elements
Template: globally balanced binary tree
ANR问题的分析与解决思路
(summary I) Halcon Foundation's target finding features + becoming a regular
手机上怎么开户?还有,在线开户安全么?
小程序云开发之--微信公众号文章采集篇
Selenium classic interview question - multi window switching solution