《分布式系统概念与设计》 4.7 小结

  本章第一部分说明了网络传输协议提供了两个可能被应用协议构造的块,这两个协议之间存在一种有趣的权衡:UDP提供一种简单的消息传递设施,它存在遗漏故障,消息丢失的风险,但是不会带来内在的性能障碍损失;另一方面,TCP可以保证消息传送的可靠性,但是是以增加额外消息,高延迟和存储开销作为代价。

第二部分介绍了三种可选的编码方式。COBRA和它的前身采用的编码方式需要接收者具备这些组件各个类型的先验知识(事先知道数据类型)才能使用。相反,当java序列化数据时,它包括了所有数据的类型信息,允许接受者通过这些信息完全地进行重构。xml和java类似,包括了全部的内容的类型信息。另一个大的区别是,COBRA编码数据项需要数据项具体的类型(用 iDL),以便生成编码和解码的方法,而java使用反射来生成序列化对象和对串行格式就行解编码。生成XML可以使用很多不同的手段,这取决于上下文。例如,许多编程语言,包括java,提供了再xml和语言级对象之间进行转换的处理器。

组播消息用来在 进程组成员之间进行通讯。IP组播为 局域网和互联网提供了组播服务。这种形式的组播与UDP数据报具有相同的故障语意,尽管它会有遗漏故障的风险,但是它对于许多组播应用来说,的确是一个很有用的工具。一些有更高要求的应用,特别是,组播传递应该是原子的,那就意味着,一个消息如果不是全部传递,那就是全部都不传递。组播进一步的需求与消息的顺序有关,最严格的要求是组所有的成员都要按照相同的顺序接收所有消息。

覆盖网络可以支持组播,但是在某些情况下不支持I如P组播。通常情况下,覆盖网络提供网络架构虚拟化服务,例如,UDP和TCP,这就允许专用网络可以下载底层网络基础设施之上进行创建。通过产生更多应用特定网络的抽象。覆盖网络部分解决了与Saltzer的端到端争论的有关问题。

本章最后给出了一个MPI实例的研究,它是由高性能计算社区开发的,具有灵活支持消息传递和多路消息传递的特性。

你可能感兴趣的:(分布式系统概念与设计,进程间通信)