进程间通信-《分布式系统概念与设计》

Posted by Xsp on January 15, 2018

简介

套接字:对目的计算机上的目标进程所使用的一个特定端口的引用。可以用 (IP地址:端口号)表示 消息传递接口(Message Passing Interface, MPI)是一个标准,为一组具有同步和异步支持的消息传递操作提供API。

互联网协议的API

进程间通信的特征

同步和异步通信

  • 同步通信中,send和receive操作都是阻塞的。
  • 异步通信中,send 非阻塞,只要消息被复制到本地缓冲区,发送进程就可以去执行其他操作。receive有阻塞和非阻塞两种操作, 在不阻塞的情况下,receive在后台提供缓冲区,通过中断或轮询来接收缓冲区满的消息。

在支持多线程的环境中,阻塞型receive的缺点较少。非阻塞的receive需要额外的操作判断是否缓冲区满,较复杂。

套接字

进程间通信是在两个进程各自的一个套接字之间传送消息。

UDP数据报通信

UDP数据报故障模型:

  • 遗漏故障,消息可能丢失
  • 排序,消息未按发送顺序到达

UDP的使用,节省开销。

JAVA 中的API:

  • DatagramSocket
  • DatagramPacket

TCP通信

外部数据表示和编码

外部数据表示:表示结构和简单值的一致的标准。

存储在运行程序中的信息都表示成数据结构,在传输前需转换为字节序列。

三种外部数据表示和编码方法:CORBA公共数据表示、Java序列化、XML.

远程对象引用

与XML无关?

远程对象的标识符,作为远程方法调用的参数传递。

组播通信

单个消息从一个进程发送到一组进程的每个成员。

网络虚拟化:覆盖网络