一种数据发送方法、装置和可读介质制造方法及图纸

技术编号:22137816 阅读:14 留言:0更新日期:2019-09-18 11:13
本发明专利技术公开了一种数据发送方法、装置和可读介质,涉及数据处理技术领域,本发明专利技术公开的方法和装置中,数据源在获取到待发送数据包后,将待发送数据包的版本号放入版本号缓存队列的队尾,当确定出版本号缓存队列中并包发送窗口中版本号的数量达到拼包阈值时,将相应数量的待发送数据包合并成一个拼包数据包发送给订阅者,与逐个向订阅者发送待发送数据包相比,订阅者一次就可以从接收队列中读取多个数据包,从而减少了读取数据包的时间和节省了读取数据包所占用的资源,使得订阅者有较多的资源处理数据包和提供业务服务,从而加快了数据包的处理速度,进而也就降低了同步数据时产生的延时,尤其适用于订阅者所处进程负载较高的场景。

A Data Transmission Method, Device and Readable Media

【技术实现步骤摘要】
一种数据发送方法、装置和可读介质
本专利技术涉及数据处理
,尤其涉及一种数据发送方法、装置和可读介质。
技术介绍
为了提升承载的玩家数量,网络游戏服务器通常会按功能拆分为多个服务进程。不同的进程负责不同的玩法功能以及数据存储。不同玩法模块之间又紧密关联,一个进程的玩法往往会依赖其他玩法进程中的数据。而大部分网络游戏非常强调玩家交互的实时性,玩家请求的处理时延必须要小于感官上的反应时间,否则会导致游戏体验的卡顿。这就要求玩法的计算逻辑和依赖的数据在同一个进程中,避免跨进程数据查询增加额外的请求处理延迟。所以,需要把一个进程的数据同步到依赖该数据的其他进程中。每个进程会维护其依赖数据的数据缓存,在查询数据的时候只需要查询本进程中的数据缓存。现有的数据同步方法为:结合图1所示,负责玩法模块的进程的数据源在收到数据修改时,采用广播的方式将修改的数据发送给订阅者,订阅者为依赖该玩法模块产生的数据的其它进程。订阅者只有在接收并处理数据之后才会向数据源发送确认,然而由于不同的订阅者承载不同的玩法,而有些玩法CPU开销比较大时,会导致提供这些玩法的订阅者处于高负载状态,进而导致接收并处理数据源发送的同步数据的速度变慢,从而造成较多的数据堆积在订阅者的接收队列中,造成数据同步延时增加的情况。因此,如何降低进程间同步数据时产生的延时成为现有技术中亟待解决的问题之一。
技术实现思路
本专利技术实施例提供一种数据发送方法、装置和可读介质,用以减少现有技术中进程间同步数据时的延时。第一方面,本专利技术实施例提供一种数据发送方法,包括:数据源获取待发送数据包;并根据先入先出的顺序,将获取的待发送数据的版本号放入版本号缓存队列的队尾;当确定出所述版本号缓存队列中落入并包发送窗口中的版本号的数量达到拼包阈值时,将相应数量的待发送数据包合并为一个拼包数据包发送给订阅者,所述拼包数据包的包头中携带有数量信息,以使订阅者根据所述数量信息,将所述拼包数据包拆分成相应数量的数据包;并将拆分后的数据包写入到订阅者所在进程的数据缓存中。这样,与逐个向订阅者发送待发送数据包相比,订阅者一次就可以从接收队列中读取多个数据包,从而减少了读取数据包的时间和节省了读取数据包所占用的资源,使得订阅者有较多的资源来处理数据包和提供业务服务,从而加快了数据包的处理速度,进而也就降低了同步数据时产生的延时,尤其在订阅者所处进程负载较高时,采用本专利技术提供的方法,可以防止订阅者长时间处于慢消费状态,此外,通过引入版本号缓存队列,根据版本号缓存队列中落入到并包发送窗口中版本号的数量确定是否达到拼包阈值,只有当达到拼包阈值时才发送拼包数据包,这样可以让订阅者有较多时间处理已发送但未确收的数据包,加快订阅者处理数据包的速度。。较佳地,所述版本号缓存队列中预发送窗口中落入已发送但未被订阅者确收的数据包的版本号;所述方法,还包括:每次接收到订阅者的数据包确收指示时,同步滑动所述预发送窗口和并包发送窗口,使得被确收的数据包的版本号移出所述预发送窗口;并当有数据包的版本号从所述并包发送窗口补入到所述预发送窗口时,若确定出补入预发送窗口的版本号对应的数据包未发送,则将补入预发送窗口的版本号对应的待发送数据包发送给订阅者。由于订阅者在处理完数据包后会向订阅者发送确收指示,为了实时监控订阅者的数据处理状态,在接收到确收指示后,需要滑动版本号缓存队列中预发送窗口和并包发送窗口,这样根据当前版本号缓存队列中落入预发送窗口和并包发送窗口中版本号的数量,准确确定出订阅者当前的消费能力。可选地,所述数据源用于从第一进程中获取所述待发送数据包,以及所述订阅者用于将接收到的数据包写入到第二进程的数据缓存中。本专利技术中数据源和订阅者可以应用于同一服务器中数据相互依赖的多进程间的数据同步。优选地,所述预发送窗口的大小为:y=max(0.1*WPS,(RTT+tdelay)*WPS)其中,y表示所述预发送窗口的大小;WPS表示每秒写入待发送数据包的速度;RTT表示往返延时;tdelay表示订阅者单次发送对至少两个数据包进行处理的确收指示所造成的延时。由于订阅者在向数据源发送确收指示时,是在处理完一个数据包或者处理完多个数据包后才发送的,这样一来会存在确收延时,而通过对预发送窗口的大小进行配置,可以避免确收带来的延时导致数据源提早采用拼包发送方式发送拼包数据包这一情况的发生。可选地,若接收到的确收指示为订阅者每处理一个数据包后发送的,则所述预发送窗口的大小为:y=max(0.1*WPS,RTT*WPS)其中,y表示预发送窗口的大小;WPS表示每秒写入待发送数据包的速度;RTT表示往返延时。由于数据源发送待发送数据包到订阅者,以及订阅者返回确收指示之间会产生RTT延时,为了保证数据源在预发送窗口被填满时可以收到预发送窗口内第一个版本号对应的待发送数据包的确收指示,可以让预发送窗口正常滑动,从而也就避免了数据源过早采用拼包发送方式发送数据包导致的延迟。第二方面,本专利技术实施例提供另一种数据发送方法,包括:订阅者从接收队列中获取数据源发送的拼包数据包,所述拼包数据包为数据源在获取待发送数据包后根据先入先出的顺序,将获取的待发送数据包的版本号放入版本号缓存队列的队尾;当确定出所述版本号缓存队列中落入并包发送窗口中的版本号的数量达到拼包阈值时,将相应数量的待发送的数据包进行合并得到的,所述拼包数据包的包头中携带有数量信息;根据所述数量信息,将所述拼包数据包拆分成相应数量的数据包;并将拆分后的数据包写入到订阅者所在进程的数据缓存中。订阅者在接收到拼包数据包时,根据拼包数据包的包头中携带的数量信息,将所述拼包数据包拆分成相应数量的数据包;并将拆分后的数据包写入到订阅者所在进程的数据缓存中,由于数据源采用拼包方式发生拼包数据包,使得订阅者有较多的资源来处理数据包和提供业务服务,从而加快了数据包的处理速度,进而也就降低了同步数据时产生的延时,尤其在订阅者所处进程负载较高时,采用本专利技术提供的方法,可以防止订阅者长时间处于慢消费状态。优选地,所述方法,还包括:向数据源发送确收指示,所述确收指示中携带有已确收的数据包的版本号。通过在向数据源发送的确收指示中携带已确收的数据包的版本号,使得数据源根据确收指示中携带的版本号,滑动版本号缓存队列中预发送窗口和并包发送窗口,这样根据当前版本号缓存队列中落入预发送窗口和并包发送窗口中版本号的数量,准确确定出订阅者当前的消费能力。第三方面,本专利技术实施例提供一种数据发送装置,包括:获取单元,用于获取待发送数据包;第一处理单元,用于根据先入先出的顺序,将获取的待发送数据包的版本号放入版本号缓存队列的队尾;发送单元,用于当确定出所述版本号缓存队列中落入并包发送窗口中的版本号的数量达到拼包阈值时,将相应数量的待发送数据包合并为一个拼包数据包发送给订阅者,所述拼包数据包的包头中携带有数量信息,以使订阅者根据所述数量信息,将所述拼包数据包拆分成相应数量的数据包;并将拆分后的数据包写入到订阅者所在进程的数据缓存中。较佳地,所述版本号缓存队列中预发送窗口中落入已发送但未被订阅者确收的数据包的版本号;以及所述装置,还包括:滑动单元,用于每次接收到订阅者的数据包确收指示时,同步滑动所述预发送窗口和并包发送窗口,使得本文档来自技高网...

【技术保护点】
1.一种数据发送方法,其特征在于,包括:数据源获取待发送数据包;并根据先入先出的顺序,将获取的待发送数据包的版本号放入版本号缓存队列的队尾;当确定出所述版本号缓存队列中落入并包发送窗口中的版本号的数量达到拼包阈值时,将相应数量的待发送数据包合并为一个拼包数据包发送给订阅者,所述拼包数据包的包头中携带有数量信息,以使订阅者根据所述数量信息,将所述拼包数据包拆分成相应数量的数据包;并将拆分后的数据包写入到订阅者所在进程的数据缓存中。

【技术特征摘要】
1.一种数据发送方法,其特征在于,包括:数据源获取待发送数据包;并根据先入先出的顺序,将获取的待发送数据包的版本号放入版本号缓存队列的队尾;当确定出所述版本号缓存队列中落入并包发送窗口中的版本号的数量达到拼包阈值时,将相应数量的待发送数据包合并为一个拼包数据包发送给订阅者,所述拼包数据包的包头中携带有数量信息,以使订阅者根据所述数量信息,将所述拼包数据包拆分成相应数量的数据包;并将拆分后的数据包写入到订阅者所在进程的数据缓存中。2.如权利要求1所述的方法,其特征在于,所述版本号缓存队列中预发送窗口中落入已发送但未被订阅者确收的数据包的版本号;以及所述方法,还包括:每次接收到订阅者的数据包确收指示时,同步滑动所述预发送窗口和并包发送窗口,使得被确收的数据包的版本号移出所述预发送窗口;并当有数据包的版本号从所述并包发送窗口补入到所述预发送窗口时,若确定出补入预发送窗口的版本号对应的数据包未发送,则将补入预发送窗口的版本号对应的待发送数据包发送给订阅者。3.如权利要求1或2所述的方法,其特征在于,所述数据源用于从第一进程中获取所述待发送数据包,以及所述订阅者用于将接收到的数据包写入到第二进程的数据缓存中。4.如权利要求2所述的方法,其特征在于,所述预发送窗口的大小为:y=max(0.1*WPS,(RTT+tdelay)*WPS)其中,y表示所述预发送窗口的大小;WPS表示每秒写入待发送数据包的速度;RTT表示往返延时;tdelay表示订阅者单次发送对至少两个数据包进行处理的确收指示所造成的延时。5.如权利要求2所述的方法,其特征在于,若接收到的确收指示为订阅者每处理一个数据包后发送的,则所述预发送窗口的大小为:y=max(0.1*WPS,RTT*WPS)其中,y表示预发送窗口的大小;WPS表示每秒写入待发送数据包的速度;RTT表示往返延时。6.一种数据发送装置,其特征在于,包括:获取单元,用于获取待发送数据包;第一处理单元,用于根据先入先出的顺序,将获取的待发送数据包的版本号放入版本号缓存队列的队尾;发送单元,用于当确定出所述版本号缓存队列中落入并包发送窗口中的版本号的数量达到...

【专利技术属性】
技术研发人员:汪胜蕾
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1