DDS / RTPS数据分发服务定义的任何“实时”约束是什么?

问题描述

数据分布式服务DDS / RTPS被提升为“实时”中间件/应用程序的标准,至少是实时Pub-Sub的RTPS状态。但是,在阅读规范时,我没有发现有关实时需求(例如经典的软/硬实时方面)的明确定义或约束。

RTPS定义了一些使DDS尽可能高效的方法,但是将其作为“ 实时发布/订阅”出售并不是真正精确的恕我直言。

当然,有很多涉及DDS的项目/产品,其性能可以满足其实时需求。但这仍然取决于DDS的供应商实施和与DDS不相关的实际系统设置。

我是否想念DDS中有关实时方面的任何内容

我分别在规格中找到了一些相关的章节:

  • DDS 2.2.3支持的QoS
  • RTPS 8.7.2 DDS QoS参数
  • RTPS 8.4.2.1.3所有实现的时序特性必须可调。

但是我真的看不到对实现要求的明确定义(例如RTPS 8.4.2.1)。

相同的逻辑:C / C ++非常适合高性能和实时应用程序,但是没有人将“实时编程语言”作为其标准规范的标题

解决方法

不确定“经典的硬/软实时”的定义在哪里或如何应用。

硬实时由需求定义,并由两个方面组成。 A)结果的精确度,以及B)系统需要多少时间来生成答案,达到A点所要求的精确度。这些精确度是由系统体系结构定义的,而不是由硬性或软性定义的实时(为完整起见,所以您知道我在说什么,通常,“软”实时意味着您可以任意违反两个方面中的一个-及时的严密回答,或者即使迟到也要正确)

那么DDS如何实现“硬实时”?它是确定性的,并且具有正确的QoS设置,将向应用程序宣布/未满足应用程序所需的硬实时约束。然后由应用程序确定是否可以接受。

如果您说您需要的答案正确至5%(即100的95次中有95次可能是错误的),而我要等到宇宙热死为止才能提供第一个答案,那么对于我要满足那些严格的实时约束。

反之,如果您说您需要一个正确的无穷小数点答案,并且需要在产生它的事件发生前30秒钟回答,那么世界上没有任何系统可以提供该答案,因此在该系统中,没有什么是硬RT。

这是确定性的,它提供给应用程序的消息根据使用它的系统的要求来确定其“实时”性。