免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1289 | 回复: 0
打印 上一主题 下一主题

"分布式系统:原理与泛型"——通信(1) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-20 09:45 |只看该作者 |倒序浏览
通信,毫无疑问是分布式系统的核心之一。从OS的角度来看,这种通信指的是进程间通信(IPC),当然,由于分布式系统中的进程可能分布在不同的OS中或者不同的物理机器中,这种进程间通信应该不依赖于“相互通信的进程是在一个同一个OS上”这种事实,所以,不是OS提供的所有的进程间通信机制都可以使用(例如,共享内存的方式通常就不能用于分布式系统中)。在分布式系统中,我们指的通信通常都直接或者间接地基于底层网络技术中的消息传递机制。<div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp;不同的进程为了能够通信,它们之间必须有一套协商好的规则,用于指定如何通信、消息的格式和语义。这种规则就是我们常说的“协议”。例如,互联网使用最为广泛的协议是TCP/IP协议。</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp;为了控制通信系统的复杂性,通信系统的构建以及对应的协议通常都是分层的。国际标准化组织曾经给出了一个OSI参考模型及其协议。在OSI中的协议基本上已经没有任何使用了,但是,OSI参考模型仍然有“模型”的价值。在OSI参考模型中,通信系统被分为了7层,每层都有自己的主要任务和响应的通信协议。每层利用下一层提供的服务,实现自己,向上一层提供服务。OSI这7层分别是:</div><div>&nbsp;&nbsp; &nbsp; &nbsp;1. 物理层:规定通信的硬件及电器特性,主要任务是在直连的两个节点之间传递bit;</div><div>&nbsp;&nbsp; &nbsp; &nbsp;2. 数据链路层:主要任务是在直连的两个节点之间无错地传递bit,它通常会将bit分组成frame,并以frame为单位传输,在每个frame后增加校验(如crc32),用于保证所有的bit都正确地到达了目的(如果某个frame出错,则自动重传);</div><div>&nbsp;&nbsp; &nbsp; &nbsp;3. 网络层:这一层对应于IP层,它的主要任务是路由。在网络中,并不是每两个节点都直连,如果非直连的两个节点要互相通信,就需要在中间节点将数据包进行转发,最终到达目的节点,而寻址、转发(或者说路由)就是这一层的主要工作;</div><div>&nbsp;&nbsp; &nbsp; &nbsp;4. 传输层:这一层对应于TCP层,它的主要任务是提供网络中两个节点之间的传输服务。其实,有了这一层,基本的网络服务就有了,这也是TCP/IP协议向应用程序提供服务的层。</div><div>&nbsp;&nbsp; &nbsp; &nbsp;5. 会话层:主要用来管理会话(session)、提供同步机制等,TCP/IP不定义这一层,但这一层的功能在很多时候是需要的,很多通信中间件会定义自己的会话层协议。</div><div>&nbsp;&nbsp; &nbsp; &nbsp;6. 表示层:这一层的主要作用是规定消息本身的格式、语义等,同样,TCP/IP不定义这一层,但是很多中间件会定义这一层。</div><div>&nbsp;&nbsp; &nbsp; &nbsp;7. 应用层:这一层主要包含应用程序以及应用程序特定的协议,如http、ftp、email等。</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp;通信,可以从不同的角度分类。</div><div>&nbsp;&nbsp; &nbsp; &nbsp;面向连接和无连接:面向连接的通信,在实际传输消息之前,会首先在通信的双方之间建立连接,这里面包含一系列的协商,如TCP是通过三次握手建立连接的。传输消息之后,还需要释放之前建立的连接。而无连接的通信则不需要建立和释放连接,发送者可以随时将构造好的消息发出。</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp;持久通信和瞬时通信:在持久通信中,通信机制本身会对消息进行持久存储,直到它被传递给目的。所以,发送者在submit消息给传输服务之后,后续的消息传递就由传输服务接管。在这种通信中,消息的发送者和接收这不必同时存在(同时处于执行状态)。例如,电子邮件是典型的持久通信。而瞬时通信则刚好相反,消息的发送者和接收者必须同时存在才能进行,传输服务仅仅提供临时的对消息的存储。一旦发送者退出或者接收者退出,传输就会失败。例如,电话是典型的瞬时通信。</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp;同步通信和异步通信:在一次消息发送的过程中,可能存在几个不同的同步点。一、消息的发送者同步提交,在这种情况下,消息的发送者会阻塞,直到消息被成功提交给传输服务;二、消息的发送者会同步发送,在这种情况下,消息的发送者会阻塞,直到消息被接收者成功接收;三、消息的发送者会同步到请求结束,在这种情况下,消息的发送者会阻塞,直到消息的接收者接收、处理消息、并且处理的结果返回到发送者。</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp;另外,通信还可以根据消息之间的关系分为离散消息和流式数据两类。例如,对于一般的http请求,每个消息都是相对独立的,这种就称为离散消息;对于流媒体而言,一组消息按照指定的顺序排序后构成一个有意义的数据流,这称为流式数据。</div><div><br></div>
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP