问题描述
数据分布式服务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。
这是确定性的,它提供给应用程序的消息根据使用它的系统的要求来确定其“实时”性。