Udp组播方法、系统、发送装置及接收装置的制造方法_2

文档序号:9618638阅读:来源:国知局
息分配消息序列号。
[0045]优选地,所述发送装置获取待发送的消息,并为所述待发送的消息分配消息序列号具体为:
[0046]发送装置获取待发送的消息,并根据调用者信息为所述待发送的消息分配消息序列号。
[0047]在本发明实施例中,采用消息序列号与分片序列号两级序列号的方式,其中,消息序列号直接暴露于外层,与调用者相关联,可与调用者应用层的消息编号进行统一,从而支持任意范围的消息序列号的数据丢包侦测与恢复。
[0048]在步骤S202中,发送装置将待发送的消息划分为多个消息分片,并为每个消息分片分配分片序列号。
[0049]图3示出了本发明实施例提供的UDP组播方法中消息序列号与分片序列号的示意图。参照图3,每个消息序列号对应于多个分片序列号,即消息序列号与分片序列号是一对多的关系,每个消息序列号对应于多个消息分片。例如,消息序列号为n,对应的分片序列号包括0至m。
[0050]在步骤S203中,发送装置将消息分片发送至接收装置,消息分片携带有发送装置的唯一标识符、消息序列号以及分片序列号。
[0051]发送装置按照消息分片的分片序列号的先后顺序依次发送某一消息序列号对应的所有消息分片。
[0052]在这里,通过在消息分片中携带发送装置的唯一标识符,从而在多个发送装置同时发送同种数据时,接收装置可根据两级序列号对多个发送装置的数据进行去重,从而在某个发送装置的进程异常掉线或者出错时进行容错,提高了 UDP组播的稳定性。此外,在接收装置申请重传数据时,接收装置根据发送装置的基本信息,通过轮询调度(Round-RobinScheduling)的方式向多个发送装置中的其中一个发送装置进行申请,起到了负载分摊的作用。
[0053]在步骤S204中,接收装置建立二级缓存区,并通过二级缓存区对消息分片进行缓存。
[0054]在本发明实施例中,接收装置建立二级缓存区,用于对接收到的序列号超前的偏离数据进行缓存,以保证数据包推送的有序性、连续性,从而在网络发生数据乱序跳包或丢包等异常情况时根据消息序列号对超前的消息分片进行缓存,待缺失的消息分片被接收到或者通过重传恢复后,一并推送至上层。
[0055]优选地,所述二级缓存区包括第一级缓存区和第二级缓存区,所述第一级缓存区的任意一个数组用于存储任意一个所述消息序列号对应的所有所述分片序列号,所述第二级缓存区的任意一个数组用于存储任意一个所述分片序列号对应的所述消息分片。
[0056]可选地,二级缓存区具体为二级循环缓存区,第一级缓存区为第一级循环缓存区,第二季缓存区为第二级循环缓存区。
[0057]图4示出了本发明实施例提供的UDP组播方法中消息插槽和分片插槽的示意图。参照图4,分片插槽挂载于消息插槽之下,例如,消息插槽包括消息插槽n、消息插槽n+1和消息插槽n+2等,消息插槽η对应的分片插槽包括分片插槽0、分片插槽1和分片插槽2。第一级缓存区包括消息插槽η、消息插槽n+1和消息插槽n+2等,每个消息插槽分别用于存储任意一个消息序列号对应的所有分片序列号;第二级缓存区包括分片插槽0、分片插槽1和分片插槽2,每个分片插槽分别用于存储一个消息分片。需要说明的是,第一级缓存区的最大消息插槽数即为第一级滑动窗口的长度,第二级缓存区的最大分片插槽数即为第二级滑动窗口的长度,第一级滑动窗口的长度与第二级滑动窗口的长度预先配置。通过采用二级缓存区,在发生丢包、跳包等情况时,对序列号超前的消息分片进行缓存,先通过消息序列号在第一级缓存区中通过偏移方式定位消息插槽的位置,再通过分片序列号定位第二级缓存区中分片插槽的位置,待数据重传恢复连续后,通过数组偏移的方式对缓存的数据进行访问、提取及清除。
[0058]在本发明实施例中,通过采用二级缓存区大大降低了发生丢包乱序等异常情况时接收端处理的时间复杂度。在缓存超前的消息分片时,采用二级缓存区的时间复杂度为0(1);若采用平衡二叉树对超前的消息分片进行缓存,则时间复杂度为0(log(N))。在重传恢复时,假设连续缓存的消息分片的数量为m,则采用二级缓存区的时间复杂度为0(m);若采用平衡二叉树一次性顺序遍历并取出连续的m个消息分片,则时间复杂度为0 (mX log (N)) ο
[0059]在步骤S205中,接收装置在任意一个消息序列号对应的所有消息分片接收完成时,从二级缓存区中提取消息序列号对应的所有消息分片。
[0060]优选地,所述UDP组播方法还包括:
[0061]所述接收装置在任意一个所述消息序列号对应的所述消息分片接收超时时,发送所述消息序列号对应的重传请求至所述发送装置。
[0062]可选地,所述接收装置在任意一个所述消息序列号对应的所述消息分片接收超时时,发送所述消息序列号对应的重传请求至所述发送装置具体为:接收装置在任意一个消息序列号对应的消息分片接收超时时,生成重传请求;接收装置记录该次重传请求的生成时间点;接收装置在该次重传请求的生成时间点与上一次发送重传请求的时间点之间的时间间隔大于第一预设值时,发送该次重传请求至发送装置;接收装置在该次重传请求的生成时间点与上一次发送重传请求的时间点之间的时间间隔小于或等于第一预设值时,忽略该次重传请求。其中,第一预设值由接收装置预先配置。
[0063]需要说明的是,在UDP组播的过程中,若有额外的接收装置启动加入,则根据接收装置启动的初始消息序列号,对发送装置已发送的大量缺失数据自动进行重传恢复,在恢复过程中对接收到的发送装置发来的实时数据,根据消息序列号和分片序列号视为偏离数据进行滑动窗口缓存操作。若实时数据超出滑动窗口的长度则直接丢弃。
[0064]应理解,在本发明实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0065]本发明实施例通过采用消息序列号和分片序列号的两级序列号,并在接收端采用二级缓存区,实现了高效的数据丢包侦测,并能处理数据包乱序的异常情况,保证消息的有序推送,从而实现了可靠的UDP组播;通过采用二级缓存区,在发生丢包乱序等异常情况时降低了接收端处理的时间复杂度;通过在消息分片中携带发送装置的唯一标识符,实现了多发送端同时发送同种数据,接收端可根据两级序列号对多个发送端的数据进行去重,从而在某个发送端的进程异常掉线时进行容错,提高了 UDP组播的稳定性。
[0066]图5示出了本发明实施例提供的UDP组播的发送装置的结构框图,该UDP组播的发送装置可以为图1中的发送装置11。为了便于说明,仅示出了与本发明实施例相关的部分。
[0067]参照图5,该UDP组播的发送装置包括:
[0068]消息序列号分配单元51,用于获取待发送的消息,并为所述待发送的消息分配消息序列号;
[0069]分片序列号分配单元52,用于将所述待发送的消息划分为多个消息分片,并为每个消息分片分配分片序列号;
[0070]发送单元53,用于将所述消息分片发送至接收装置,以使所述接收装置通过二级缓存区对所述消息分片进行缓存,所述消息分片携带有所述发送装置的唯一标识符、所述消息序列号以及所述分片序列号。
[0071]本发明实施例通过采用消息序列号和分片序列号的两级序列号,并在接收端采用二级缓存区,实现了高效的数据丢包侦测,并能处理数据包乱序的异常情况,保证消息的有序推送,从而实现了可靠的UDP组播;通过采用二级缓存区,在发生丢包乱序等异常情况时降低了接收端处理的时间复杂度;通过在消息分片中携带发送装置的唯一标识符,实现了多发送端同时发送同种数据,接收端可根据两级序列号对多个发送端的数据进行去重,从而在某个发送端的进程异常掉线时进行容错,提高了 UDP组播的稳定性。
[0072]图6示出了本发明实施例提供的UDP组播的接收装置的结构框图,该UDP组播的接收装置可以为图1中的接收装置12。为了便于说明,仅示出了与本发明实施例相关的部分。
[0073]参照图6,该UDP组播的接收装置包括:
[0074]缓存单元61,用于建立二级缓存区,并通过所述二级缓存区对发送装置发送的消息分片进行缓存,所述消息分片携
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1