[发明专利]一种分布式系统中消息的传递方法有效
申请号: | 201110328318.9 | 申请日: | 2011-10-25 |
公开(公告)号: | CN102368700A | 公开(公告)日: | 2012-03-07 |
发明(设计)人: | 张攀勇;袁重桥;赵力;邵宗有;刘新春;苗艳超;王勇 | 申请(专利权)人: | 曙光信息产业(北京)有限公司 |
主分类号: | H04L1/18 | 分类号: | H04L1/18;H04L1/16;H04L12/24 |
代理公司: | 北京安博达知识产权代理有限公司 11271 | 代理人: | 徐国文 |
地址: | 100084 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分布式 系统 消息 传递 方法 | ||
1.一种分布式系统中消息的传递方法,其特征在于:
在通信通路的两端分别维护一个消息序号和预期消息序列号,在连接第一次建立的时候,通信双方首先通过控制消息同步消息序号为0,同时通信双方同步预期消息序列号为0;
对于每次发送的消息,首先获取连接的消息序号,将该消息序号填充到发送消息的控制消息头部中,发送消息成功后,更新发送消息的发送时间,将该消息放入待确认发送消息队列中,等待来自接收方的确认;
接收方在接收到消息之后,检查消息头上的消息序号是否与当前的预期消息序号匹配;
发送方在接收到接收方返回的确认消息,根据消息号将待发送队列上消息号小于等于该消息号的消息,确认发送完成,通知上层发送完成,同时更新待发送方的待确认消息号为确认消息号;如果确认消息号在待发送队列上未找到待确认消息,则认为该消息已被确认,直接丢弃该确认消息;
发送方的待发送队列中的请求如果在固定时间中没有被应答,则认为发送消息丢失,重新发送该消息,等待应答消息;
在出现故障之后,发送方和接收方协商待确认消息号以及发送消息号,如果发现接收方的待确认消息号大于发送方的待确认消息号,则表示存在已经接收,但是发送方未确认的消息号,发送方同步待确认消息号为接收方的待确认消息号,同时将待发送消息队列中消息号在接收方预期消息号和发送方发送消息号-1之间的消息进行重发。
2.如权利要求1所述的方法,其特征在于:在检查消息头上的消息序号是否与当前的预期消息序号匹配时,
如果消息序号小于预期消息序号,则认为该消息已经发送完成,丢弃收到的消息,并向发送方返回确认消息,确认号为当前预期消息序号-1;
如果消息序号大于预期消息序号,则将该消息插入待接收消息队列中,等待预期消息;
如果消息序号等于预期消息号,则将该消息提交给接收方处理,搜索待接收消息队列,是否存在预期消息号之后连续的消息,如果存在,一并提交给接收方处理,更新最新的预期消息号为提交的最新消息号N+1;最后向发送方返回确认消息,确认消息号为提交的最新的消息号N。
3.如权利要求1所述的方法,其特征在于:所述发送方在消息发送之间,使用消息校验算法计算消息校验值,并将该校验值附加到发送消息头中,进行消息发送。
4.如权利要求3所述的方法,其特征在于:所述校验算法采用MD5或CRC。
5.如权利要求1所述的方法,其特征在于:所述接收方在接收到消息之后,直到消息完全接收到接收缓冲区的内存之后,才开始计算消息的校验值,如果发现计算出来的消息校验值和消息头中间携带的发送方校验值不匹配,则认为消息在传递路径上传输错误,直接将该消息丢弃,不进行差错控制步骤中的接收操作,发送NAK消息给发送方,携带该错误的消息号。
6.如权利要求1所述的方法,其特征在于:所述发送方在接收到NAK消息,则获知接收方接收该消息错误,在待确认发送消息队列中找到消息号相同的消息,进行消息重发,继续等待发送消息的消息确认。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于曙光信息产业(北京)有限公司,未经曙光信息产业(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110328318.9/1.html,转载请声明来源钻瓜专利网。