10.11.5.1 HistoryQoS
HistoryQoS
是 Fast DDS 中的一个重要配置,控制当实例的值发生变化时如何处理这些变化,以及最终如何将数据传递给现有的 DataReaders。它决定了在存在多个样本时应该如何保留和丢弃旧的值。
属性说明:
: 描述:指定历史策略,定义 Fast DDS 如何管理实例的样本。
可选值:
- KEEP_LAST:
- 解释:Fast DDS 将只尝试保留最新的实例值,并丢弃较旧的值。适合于对时间敏感且只需要最新状态信息的场景。
- KEEP_ALL:
- 解释:Fast DDS 尝试维护并交付该实例的所有值给现有的 DataReaders。这意味着无论何时实例发生更改,所有以往的数据都会被保存并能够提供给订阅者。
- KEEP_LAST:
默认值:
KEEP_LAST
。这意味着如果未明确指定,系统会优先保留最新样本,并删除过期数据。
: 描述:这是与
ResourceLimitsQos
的<max_samples_per_instance>
元素相一致的重要参数,用于指定要保留的最大样本数量。类型:uint32_t(无符号整型)。
限制条件:
- 必须满足
<depth> <= <max_samples_per_instance>
,即深度(待保留的数据量)不能超过每个实例允许的最大样本数。
- 必须满足
默认情况下,深度设置为 1,这意味着仅保留最近的一次更新,如果使用
KEEP_LAST
策略,则只有最后一次的信息会被存储。
应用场景:
- 使用
KEEP_LAST
时非常适用于实时应用程序,例如传感器数据读取或实时监控,这些场景下通常只关心最新的数据。 - 使用
KEEP_ALL
则适合需要完整历史记录以进行后续分析或回放功能的数据流,例如日志记录系统或金融交易监控系统。在这种情况下,需要合理配置<depth>
和相关资源限制,以确保系统不会因存储过多数据而导致性能问题。
通过正确地配置这些参数,可以有效地优化系统性能、降低延迟以及提升数据处理能力,使其更好地符合特定应用需求。
内容由零声教学AI助手提供,问题来源于学员提问