[发明专利]一种分布式系统中消息的传递方法有效
申请号: | 201110328318.9 | 申请日: | 2011-10-25 |
公开(公告)号: | CN102368700A | 公开(公告)日: | 2012-03-07 |
发明(设计)人: | 张攀勇;袁重桥;赵力;邵宗有;刘新春;苗艳超;王勇 | 申请(专利权)人: | 曙光信息产业(北京)有限公司 |
主分类号: | H04L1/18 | 分类号: | H04L1/18;H04L1/16;H04L12/24 |
代理公司: | 北京安博达知识产权代理有限公司 11271 | 代理人: | 徐国文 |
地址: | 100084 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分布式 系统 消息 传递 方法 | ||
技术领域
本发明涉及并行文件系统的通信系统,特别涉及一种分布式系统中的高可靠消息传输领域。
背景技术
分布式系统中通信系统作为系统各节点之间的通信基础,具有重要的意义。由于分布式系统中的节点和网络设备相互独立,在任意时间均可能出现故障,同时节点之间的消息传输路径涉及到多个部分,包括通信系统的消息缓冲区,系统的消息发送缓冲区,网卡和交换机的硬件缓冲,系统的接收缓冲区,通信系统的接收缓冲区,在系统出现故障时,无法确定通信消息位于何处。
在一次分布式系统的一次通信中,分为通信发起方和通信接收方,通信发起方发起通信操作,通信接收方接收消息并针对消息内容进行处理,并发送处理完成消息给通信发起方,通知通信发起方处理完成。通信消息从消息发送方发送到消息接收方需要经过消息发送方,通信层发送缓冲,网卡硬件缓冲,交换机硬件输入、输出缓冲,网卡硬件缓冲,通信层接收缓冲,最终到达消息接收方。通信发起方发送的通信操作和通信接收方应答的处理完成消息都需要经过上述通信路径。当系统出现故障的时候,通信消息可能存在于任意一个地方,可能存在于发送路径中,接收方缓冲区中,或者已经被接收方处理,但是没有完成处理应答。也可能是接收方接收并处理完成,应答消息丢失,应答消息处于通信层缓冲区,网卡或者交换机的硬件缓冲区中。在系统出现故障之后,一般的可靠性处理方式为进行通信重建,然后重新发送未正确处理的消息。但对于不能重复执行的通信来说,由于通信请求方无法获知通信消息是否被通信服务方所接收并执行,如果此时通信发起方再次发送相同的通信消息,会导致通信接收方出现未知的系统状态,从而使得分布式系统出现不一致的状态。传统的解决方法为在应用层上处理,使得应用层的通信变得复杂。
同时,消息传输的顺序性在分布式系统中非常重要,为了保证通信的顺序性,一般在应用层实现保证通信的序。当网络出现故障之后,维持该顺序性变得非常复杂,需要提供一种可靠的网络层,提供可靠的消息传输顺序保障。
另一方面,由于节点内部的传输通路可能存在故障,即便网络上传输保证了可靠性,也不能保证应用一级的端到端的数据一致性,需要一种通信过程中内存到内存级的可靠消息传输机制。在这种背景下,本专利提出了一种高可靠的消息传输方法,保证了应用层的消息传输接口简洁性的前提下,提供了内存到内存级可靠的消息传输。
发明内容
本发明的目的是解决分布式系统中消息传输的可靠性问题,提供了一种分布式系统中高可靠的消息传输方法。
为了解决在系统故障的时候,通信发起方对一次通信操作的状态未知的问题,本发明提出了一种基于端到端的差错控制机制和校验机制,能够在故障的时候确定消息的状态,并保证网络传输消息的顺序性和正确性。
一种分布式系统中消息的传递方法,
在通信通路的两端分别维护一个消息序号和预期消息序列号,在连接第一次建立的时候,通信双方首先通过控制消息同步消息序号为0,同时通信双方同步预期消息序列号为0;
对于每次发送的消息,首先获取连接的消息序号,将该消息序号填充到发送消息的控制消息头部中,发送消息成功后,更新发送消息的发送时间,将该消息放入待确认发送消息队列中,等待来自接收方的确认;
接收方在接收到消息之后,检查消息头上的消息序号是否与当前的预期消息序号匹配;
发送方在接收到接收方返回的确认消息,根据消息号将待发送队列上消息号小于等于该消息号的消息,确认发送完成,通知上层发送完成,同时更新待发送方的待确认消息号为确认消息号;如果确认消息号在待发送队列上未找到待确认消息,则认为该消息已被确认,直接丢弃该确认消息;
发送方的待发送队列中的请求如果在固定时间中没有被应答,则认为发送消息丢失,重新发送该消息,等待应答消息;
在出现故障之后,发送方和接收方协商待确认消息号以及发送消息号,如果发现接收方的待确认消息号大于发送方的待确认消息号,则表示存在已经接收,但是发送方未确认的消息号,发送方同步待确认消息号为接收方的待确认消息号,同时将待发送消息队列中消息号在接收方预期消息号和发送方发送消息号-1之间的消息进行重发。
优选的,在检查消息头上的消息序号是否与当前的预期消息序号匹配时,
如果消息序号小于预期消息序号,则认为该消息已经发送完成,丢弃收到的消息,并向发送方返回确认消息,确认号为当前预期消息序号-1;
如果消息序号大于预期消息序号,则将该消息插入待接收消息队列中,等待预期消息;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于曙光信息产业(北京)有限公司,未经曙光信息产业(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110328318.9/2.html,转载请声明来源钻瓜专利网。