分布式通信

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

可靠组播
一种实现方式是发送者向一个组中所有 成员发送消息,然后等待每一个成员的 回复。
北京邮电大学
2.4 远程调用RPC
RPC使用过程调用实现远程通信,在 传统的过程化程序设计语言环境中,它 的语义类似于本地过程调用的语义,因 此,它可向应用层用户提供良好的接口。
Client进程 ←→ Client’s Stub ←→ Server’s Stub ←→ Server进程
两进程不共享内存空间 不同的系统中 在同一系统中,每个进程有自己的内存
消息通常是通过OS提供的基本通信原语 用消息包或帧的形式发送的。通信原语有 以下两种
阻塞原语(又称为同步原语) 非阻塞原语(又称为异步原语)
北京邮电大学
2.2 消息传递
阻塞原语
消息被发送时,发送的进程被阻塞(即 挂起),直到消息传送完毕,其后的命 令才能继续执行 阻塞原语实现进程不再阻塞的2种方法
Sockets
通过网络的通信,不是共享数据结构或 文件。
北京邮电大学
2.3 组通信
组通信的用途
具有冗余结构的系统 在分布式系统中查找 多副本的更新
组通信的特性
原子性
定序
北京邮电大学
2.3 组通信
不可靠组播
组通信最简单的实现方式就是不可靠组 播,即简单地向每个目标发送一条消息。
北京邮电大学
2.4 远程调用RPC
程序员不知道调用的是一个远程过程, 还是一个本地过程,这需要有相应的 支持机制,将一台计算机上语言级调 用自动转化为另一台计算机上相应的 语言级调用,实现变量和结果的传送。 调用者阻塞,等待返回值,而不是仅 仅一个确认值。与各种程序设计语言 一样,对参数数目和数据类型有限制
北京邮电大学
2.4 远程调用RPC
RPC与本地调用的区别
数据表示问题
• 如果RPC是在两种异构的机器上进行的,不同机器 数据表示可能不同,包括机器的字长等。
指针
• 在不具备共享地址空间的情况下,RPC不可能允许 在网络范围内传递指针。
故障
• 调用者和被调用者都可能在调用期间发生故障
北京邮电大学
2.4 远程调用RPC
对于故障,由于调用者无法知道到底出现了那种 情况,因此,系统需要提供一些基本的保护机制 来确保RPC的正确效果。不同RPC实现方案定义 的这种效果或RPC语义是有差别的,以下是几种 常用的RPC调用语义。 At- Most -Once (最多一次) • 相同RPC的重复调用,服务器不处理。 At- least -Once (至少一次) • RPC将被执行至少一次,可能多次。 Last -of-Many-Call (最近调用) • 每个调用包含一个标识,client接收最近调用 者的返回值。
消息传递(同步)适合于C/S模型
北京邮电大学
2.2 消息传递
C/S模型的几个设计问题
寻址 阻塞和非阻塞原语 有缓冲和无缓冲原语 可靠和非可靠原语
管道
两进程间的通信通过内核在有限大小的 缓冲区上实现,这类原语通过系统调用 实现。当缓冲区满时,引起阻塞。
北京Baidu Nhomakorabea电大学
2.2 消息传递
北京邮电大学
2.4 远程调用RPC
RPC系统的实现问题
RPC协议族
• 面向连接的 面向非连接的 • 选择标准通用协议,还是专门为RPC设计 的协议 • 信包和报文的长度
程序员对所选方法的熟悉程度 进程间通信机制的透明性,程序员知道 得细节越少,出错得机会也就越少 系统所支持的方法 考虑系统的扩充 支持进程的迁移,不同文件系统的进程 间通信 通信机制的标准化问题 通信机制的有效性
北京邮电大学
2.2 消息传递
消息传递,物理上复制要共享的数据到另 外一个进程的地址空间 下列情况,一般不常用消息传递
• 轮询 :利用测试原语,测试缓冲区的相关信 息(状态),忙等待 • 中断 : 也可以在非阻塞原语种利用 • 如果轮询一直不成功,或者一直无中断,这 样会无限阻塞下去 ,因此要有计时器,缺省 的设置,或者程序员控制
北京邮电大学
2.2 消息传递
阻塞send & receive
Procedure A Begin Instructions …… send (B, message) // where B is the destination // waiting for acknowledgment received send acknowledgment next instructions …… End Procedure B Begin Instructions …… receive (A, message) // where A is the source // waiting for message // received message next instructions …… End
分布式通信
Outline
第二章 分布式通信
北京邮电大学
第二章
分布式通信
2.1 各种通信方式 2.2 消息传递 2.3 组通信 2.4 远程调用RPC
北京邮电大学
2.1 各种通信方式
单处理机进程间通信
单处理机系统中进程间的通信无疑是 利用共享存储器
分布式系统之间的通信
分布式系统中,由于缺少共享存储器, 系统中的通信都是基于消息传递的
北京邮电大学
2.1 各种通信方式
进程间通信的实现方法
可以是低级的,涉及系统调用,或者通 过语言级的支持实现
进程间通信方法主要有
消息传递、管道、sockets、RPC、共享 内存
对象之间的通信手段
CORBA、 DCOM
北京邮电大学
2.1 各种通信方式
选择进程间通信方法主要考虑的问题
北京邮电大学
2.1 各种通信方式
分布式系统实现进程间通信注意问题
无共享存储器,不能借助共享变量的方法 机器间消息传递的可靠性低于机器内信息传递 的可靠性 系统内任意两台机器未必直接连接,往往需要 中转 系统内的各台机器型号可能不同 通信的实现与系统结构、通信线路 结构、通信介质的物理性能等有密切关系
相关文档
最新文档