分布式实时系统的本质是什么?
分布式实时系统由问题域或解决方案域(或两者)强加的两组具有挑战性的属性组成。
分散式
分布式系统通过通信机制将多个具有本地属性的独立计算实体联系起来。因此,算法和其他设计组件必须考虑同步和故障模型。Deutsch 的分布式计算的八个谬误中包含了对分布式计算问题的有用总结(并非完全客观)。(请参阅这个有用的说明。)所有这些都有助于在(实时)分布式设计中考虑;每个都是基本设计和实施问题的出发点:
- 网络可靠
- 延迟为零
- 带宽是无限的
- 网络很安全
- 拓扑不变
- 有一名管理员
- 运输成本为零
- 网络是同质的
即时的
实时系统是将操作完成的及时性作为系统功能要求和正确性度量的一部分的系统。(我在这里打开了一个 SO 问题试图澄清这一点。)实际上,几乎所有系统都可能被认为是“软”实时的,因为通常对操作的及时性有不言而喻的要求/期望。我们保留实时术语,有时由软或硬限定,用于在不满足时间限制时不正确的系统。请注意,上述谬误中总结的许多问题都与及时性相交。(另见实时标签维基)
值得注意的是,RT(和 DRT)系统存在于一系列需求中,其中一个极端是“确定性”(或传统上是硬实时)。然而,许多系统具有非常重要的时间限制,但这些限制仍然是非确定性的。特别是在 DRT 系统的上下文中,将活动紧迫性的概念与活动优先级分开也是有用的。在延迟和故障是真实且重要的因素的大型系统中,计算和通信资源的显式管理以影响及时性和其他设计要求变得更加重要,这两个维度的分离变得重要。
实时创作分布式
- 明确的及时性要求——要求是什么,它们如何映射到活动,它们是否真正的跨节点及时性要求,时间约束将如何在设计和实现中明确表示,以及如何检测、报告和恢复故障?
- 时间同步——实现时钟同步的要求和机制是什么?关于时钟同步的维基;许多应用程序只需要NTP;更严格的要求可能需要特殊的硬件(例如IRIG-B)或方法。
- 同步要求——系统同步的同步假设约束和要求是什么?这与时钟同步有关,但不相同。Doug Jensen 对形式模型的一些思考;关于异步系统和同步的维基百科;SO关于部分事件排序的问题;
- 设计模式——什么是移动部件,它们在传输过程中是如何关联的?(特别是,这些关系如何影响及时性?)
- 中间件——你将如何编码系统的分布式方面?示例包括 Real-Time CORBA(这是OIS 的一个很好的页面)或DDS。
- 时间限制——您将如何在系统中记录、衡量和实施时间限制?
- 部分故障——实时系统通常具有可靠性要求。分布式系统的独特方面之一是可能出现被称为“部分”故障的整类故障,这可能是由于真正的崩溃/通信故障或必须被视为故障的及时性错误。 SO关于故障转移方法的问题;
- RTOS——将采用什么实时操作系统?
几个参考
有关 DRT 系统的相当传统的介绍,请查看Kopetz 的书。要获得更动态的视图,推荐 Jensen 的作品和他的网站。在 Java 领域,我建议阅读出色的“可靠分布式编程简介”。它没有解决及时性问题的全部领域,但确实以一种特别清晰的方式解决了部分故障。
最近,(不可靠的)故障检测器的概念已经成为一种有用的同步构造,为 DRT 系统提供有用的理论推理和实用的制定/设计/构造技术。关于该主题的开创性论文是关于快速故障检测器对实时容错系统的影响,作者是 Aguilera、Le Lann 和 Toueg。这篇论文是沉重的雪橇,但奖励每一盎司的智力投资。