- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章分布式系统的通信-SJTUCS
第二章 分布式系统的通信
进程间的通信是一切分布式系统的基础,
它基于底层网络提供的底层消息传递机制
• 分层协议
• 远程过程调用
• 远程对象调用
• 面向消息的通信
层次协议 (1)
• OSI 模型中的层、接口和协议
必须在不同层次制订多
种协议,包括从位传输
的底层细节到信息表示 2-1
的高层细节:
• 0,1的电压表示
• 消息的结束位
• 检测消息的丢失或损坏
及其处理
• 数值、字符串及其它数
据项的长度和表示方法
• 面向连接的协议:电话
• 无连接的协议:邮箱
层次协议(2)
• 在网络上传输的典型消息
2-2
远程过程调用
( Remote Procedure Call )
RPC是分布式系统通信处理的事实标准
• 常规过程调用
• 客户存根和服务器存根
• 参数传递
常规过程调用
a) Count=read(fd,buf,nbyte)
b) 本地过程调用中的参数传递:调用read前的堆栈状态
c) 过程调用执行时的堆栈状态
客户存根和服务器存根
• 客户和服务器间的RPC原理
远程过程调用步骤
1. 客户过程以正常的方式调用客户存根
2. 客户存根生成一个消息,然后调用本地操作系统
3. 客户端操作系统将消息发送给远程操作系统
4. 远程操作系统将消息交给服务器存根
5. 服务器存根将参数提取出来,然后调用服务器
6. 服务器执行要求的操作,操作完成后将结果返回给服务器
存根
7. 服务器存根将结果打包成一个消息,然后调用本地操作系
统
8. 服务器操作系统将含有结果的消息发送回客户端操作系统
9. 客户端操作系统将消息交给客户存根
10. 客户存根将结果从消息中提取出来,返回给调用它的客户
过程
参数传递-传递值参(1)
• 通过RPC进行远程计算的步骤
2-8
传递值参 (2)
a) Penum上的原始消息
b) SPARC收到的消息
c) 进行逆转后的消息
传递引用参数
• 对于简单数组和结构:使用复制-还原代替引
用调用
• 很难传递一般意义的指针:如复杂图形的指针
参数说明
RPC双方必须就交换的格式达成一致
• 一个过程
• 相应的消息
远程对象调用
• 使用客户端代理的远程对象的一般组织结构
2-16
面向消息的通信
当远程过程调用和远程对象调用不适用时,
需要面向消息的通信。
• 消息中的持久性和同步性
• 面向消息的暂时通信
• 面向消息的持久通信
消息中的持久性和同步性(1)
• 通信系统的通用结构
2-20
消息中的持久性和同步性(2)
• 在持久通信中,通信双方不必保持运行
• 在暂时通信中,通信系统只在发送者和接收者运行时存储消息
消
文档评论(0)