数据处理方法及装置、存储介质、电子设备与流程

文档序号:31563908发布日期:2022-09-20 19:20阅读:75来源:国知局
数据处理方法及装置、存储介质、电子设备与流程

1.本公开涉及计算机网络技术领域,尤其涉及一种数据处理方法与数据处理装置、计算机可读存储介质及电子设备。


背景技术:

2.在现有技术中,游戏场景内通常会使用一个arq(automatic repeat-request,自动重传请求)协议,可能是tcp(transmission control protocol传输控制协议)或kcp协议。这些协议能够对抗网络乱序和丢包,arq协议能够向上层提供一个稳定的数据流。所有的arq协议对丢包的容忍其实都非常低的。
3.通常,解决高丢包率的方法就是冗余重复发送。但是,冗余重复发送会带来流量浪费的问题。进而,通过fec(forward error correction,前向纠错或前向纠错码)以更少的流量消耗换来更大的冗余。但是,fec在实际使用中有一个问题是如何选取n和k。对于高丢包场景下,过大的k/n组合下丢包率依然不可接受,arq协议依然会面临高延时低带宽的问题。对于无丢包场景下,过小的k/n组合下会浪费许多无用的流量。
4.鉴于此,本领域亟需开发一种新的数据处理方法及装置。
5.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

6.本公开的目的在于提供一种数据处理方法、数据处理装置、计算机可读存储介质及电子设备,进而至少在一定程度上克服由于相关技术的限制而导致的无法自适应不同场景进行编解码的技术问题。
7.本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
8.根据本发明实施例的第一个方面,提供一种数据处理方法,所述方法包括:
9.获取原始数据以及与所述原始数据对应的冗余数据数量,并对所述原始数据进行数据拆分处理得到拆分数据数量;
10.确定与所述原始数据对应的编码方式策略,并根据所述拆分数据数量或所述冗余数据数量对所述编码方式策略进行策略指定处理确定目标编码方式;
11.按照所述目标编码方式对所述原始数据进行数据编码处理得到编码数据。
12.在本发明的一种示例性实施例中,所述确定与所述原始数据对应的编码方式策略,包括:
13.确定与所述原始数据对应的编码方式策略为对所述原始数据进行线性编码。
14.在本发明的一种示例性实施例中,所述确定与所述原始数据对应的编码方式策略,包括:
15.若所述拆分数据数量为目标数量,确定所述原始数据的编码方式为第一编码;
16.若所述冗余数量为目标数量,确定所述原始数据的编码方式为第二编码;
17.若所述冗余数据数量或所述拆分数据数量不为目标数量,确定所述原始数据的编码方式为第三编码。
18.在本发明的一种示例性实施例中,所述第一编码为复制编码,所述第二编码为异或编码,所述第三编码为里德索罗门编码。
19.在本发明的一种示例性实施例中,所述按照所述目标编码方式对所述原始数据进行数据编码处理得到编码数据,包括:
20.在伽罗华域中,按照所述目标编码方式对所述原始数据进行数据编码处理得到编码数据。
21.在本发明的一种示例性实施例中,在所述按照所述目标编码方式对所述原始数据进行数据编码处理得到编码数据之后,所述方法还包括:
22.从目标协议层传输所述编码数据。
23.在本发明的一种示例性实施例中,所述从目标协议层传输所述编码数据,包括:
24.对所述拆分数据数量和所述冗余数据数量进行数量求和计算得到总计数量,并根据所述拆分数据数量、所述总计数量和所述目标编码方式生成数据头协议;
25.对所述数据头协议和所述编码数据进行数据组装处理得到数据包,并从目标协议层利用网络通信协议传输所述数据包,以使所述目标协议层的上一网络层接收所述数据包。
26.在本发明的一种示例性实施例中,在所述使所述目标协议层的上一网络层接收所述数据包之后,所述方法还包括:
27.获取所述数据包中的数据头协议和所述编码数据,并获取与所述编码数据对应的编码数据数量;
28.若所述编码数据数量大于或等于所述拆分数据数量,按照所述数据头协议中的所述目标编码方式对所述编码数据进行数据解码处理复原所述原始数据。
29.根据本发明实施例的第二个方面,提供一种数据处理装置,包括:
30.数据拆分模块,被配置为获取原始数据以及与所述原始数据对应的冗余数据数量,并对所述原始数据进行数据拆分处理得到拆分数据数量;
31.策略制定模块,被配置为确定与所述原始数据对应的编码方式策略,并根据所述拆分数据数量或所述冗余数据数量对所述编码方式策略进行策略指定处理确定目标编码方式;
32.编码处理模块,被配置为按照所述目标编码方式对所述原始数据进行数据编码处理得到编码数据。
33.根据本发明实施例的第三个方面,提供一种电子设备,包括:处理器和存储器;其中,存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现上述任意示例性实施例中的数据处理方法。
34.根据本发明实施例的第四个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意示例性实施例中的数据处理方法。
35.由上述技术方案可知,本公开示例性实施例中的数据处理方法、数据处理装置、计
算机存储介质及电子设备至少具备以下优点和积极效果:
36.在本公开的示例性实施例提供的方法及装置中,确定与原始数据对应的编码方式策略,使得多种编码方式兼容在同一个目标层协议中,为对原始数据进行数据编码处理提供了理论基础和支持。更进一步的,按照从编码方式策略中选择出的目标编码方式对原始数据进行数据编码处理,提出了一种自适应的目标编码方式设计,满足了不同环境和场景下最低带宽浪费和最低最丢包率的需求。
37.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
38.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
39.图1示出了相关技术中使用arq协议的丢包情况的示意图;
40.图2示意性示出本公开示例性实施例中一种数据处理方法的流程示意图;
41.图3示意性示出了本公开示例性实施例中数据拆分处理的方法的流程示意图;
42.图4示意性示出本公开示例性实施例中确定编码方式策略的方法的流程示意图;
43.图5示意性示出了本公开示例性实施例中xor编码作为目标编码方式的编解码的逻辑示意图;
44.图6示意性示出本公开示例性实施例中传输编码数据的方法的流程示意图;
45.图7示意性示出本公开示例性实施例中生成的数据头协议的结构示意图;
46.图8示意性示出本公开示例性实施例中数据解码处理的方法的流程示意图;
47.图9示意性示出本公开示例性实施例中一种数据处理装置的结构示意图;
48.图10示意性示出本公开示例性实施例中一种用于实现数据处理方法的电子设备;
49.图11示意性示出本公开示例性实施例中一种用于实现数据处理方法的计算机可读存储介质。
具体实施方式
50.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
51.本说明书中使用用语“一个”、“一”、“该”和“所述”用以表示存在一个或多个要素/组成部分/等;用语“包括”和“具有”用以表示开放式的包括在内的意思并且是指除了列出
的要素/组成部分/等之外还可存在另外的要素/组成部分/等;用语“第一”和“第二”等仅作为标记使用,不是对其对象的数量限制。
52.此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。
53.在现有技术中,游戏场景内通常会使用一个arq协议,可能是tcp或kcp协议。这些协议能够对抗网络乱序和丢包,arq协议能够向上层提供一个稳定的数据流。所有的arq协议对丢包的容忍其实都非常低的。
54.图1示出了相关技术中使用arq协议的丢包示意图,如图1所示,在发送方a向接收方b传输时,假设一个信道存在50%的丢包率。
55.在第一次传输时,在超过一个rto(最大重传超时)的情况下,接收方b并未接收到发送方a发送的消息,因此判断丢包。
56.在第二次传输时,当接收方b接收到发送方a发的消息时,向发送方a反悔了一个ack(acknowledge character,确认字符)消息,但是在超过一个rto时,发送方a未接收到接收方b发送的ack消息,也判断为丢包。
57.在第三次传输时,接收方b接收到发送方a发的消息之后,还在一个rto时间内,发送方a也接收到接收方b发送的ack消息,确定发送成功。
58.在图1所示的例子中,无论tcp,还是kcp哪种arq协议都会在丢包率越高的信道中拥有更高的延时和更低的带宽。
59.丢包率是通信中一个重要的指标。但是,在高丢包率的情况下,arq协议是无法应对的。而在这种情况下可以使用fec协议解决高丢包率,那就是使用冗余发送的方法。
60.假如已知丢包率是30%,当a给b发送消息x时,可以向信道发送两个x,这样丢包率就从30%降低到了9%。同理,在b每次回复ack时回复两条ack,这样丢包率也会降低到9%。
61.但是,这样存在一个明显的问题就是流量的浪费。现在相当于以多一倍的带宽换取低一半的丢包率。因为丢包率下降了,时延也会下降一些。
62.但是,9%的丢包率还是太高,如果想进一步大幅度降低丢包率,可以把一个数据包发送4次,这样丢包率就会下降到0.81%。此时,延时显著的下降,丢包率导致的延时上升的问题得到了解决,但是因此带来的多3倍的带宽的代价也需要解决。
63.fec是增加数据通讯可信度的方法。在单向通讯信道中,一旦错误被发现,其接收器将无权再请求传输。fec是利用数据进行传输冗余信息的方法,当传输中出现错误,将允许接收器再建数据。
64.和重复发送的原理一样,当fec发送时会附加一些冗余包,即使丢失一些数据包也能够复原出原始数据。但是,不同之处在于,此时能够以更少的流量消耗换来更大的冗余。相当于用特殊的方式拆分数据就能够获得更高效的冗余效率。
65.在fec协议中,通常会将原始数据拆分成k份,然后,附加m份冗余,形成n份数据向信道中发送。在接收方收到大于或等于k个数据时就可以复原出原始数据。
66.其中,m=n-k,所以使用(k,n)来描述一个fec的拆分,假设信道的丢包率是p,则总体丢包率的公式为:
67.68.在之前30%丢包率计算过程中,假设一个fec协议是(4,7),亦即收到7个包中的4个就可以复原出原始数据,那么丢包率会变成12.6%。而当fec协议为(3,7)时,上层的丢包率就会降低为2.8%。
69.fec协议的优化效果是显著的,但是在实际使用中存在一个问题就是如何选取n和k。
70.通常,一个常见的方案就是固定一个n和一个k,例如固定信道fec协议为(5,7),并且在fec的上层使用一个arq协议,将arq协议的消息拆分发送,以降低丢包率。然后,再将收到的消息组合成完整的消息之后传送给上层arq协议。
71.这样对arq协议来说,就相当于运行在一个丢包率更低的信道之上。这样可以稳定的降低丢包率对延时和带宽的影响。
72.但是,这也会引起两个问题。其中,对于高丢包场景下,在过大的k/n组合下,丢包率依然不可接受,arq协议依然会面临高延时低带宽的问题。对于无丢包场景下,在过小的k/n组合下回浪费许多无用的流量。
73.由于每个用户的环境和场景都是不一样的,所以固定的k和n并不好选择。
74.针对相关技术中存在的问题,本公开提出了一种数据处理方法。图2示出了数据处理方法的流程图,如图2所示,数据处理方法至少包括以下步骤:
75.步骤s210.获取原始数据以及与原始数据对应的冗余数据数量,并对原始数据进行数据拆分处理得到拆分数据数量。
76.步骤s220.确定与原始数据对应的编码方式策略,并根据拆分数据数量或冗余数据数量对编码方式策略进行策略指定处理确定目标编码方式。
77.步骤s230.按照目标编码方式对原始数据进行数据编码处理得到编码数据。
78.在本公开的示例性实施例中,确定与原始数据对应的编码方式策略,使得多种编码方式兼容在同一个目标层协议中,为对原始数据进行数据编码处理提供了理论基础和支持。更进一步的,按照从编码方式策略中选择出的目标编码方式对原始数据进行数据编码处理,提出了一种自适应的目标编码方式设计,满足了不同环境和场景下最低带宽浪费和最低最丢包率的需求。
79.下面对数据处理方法的各个步骤进行详细说明。
80.在步骤s210中,获取原始数据以及与原始数据对应的冗余数据数量,并对原始数据进行数据拆分处理得到拆分数据数量。
81.在本公开的示例性实施例中,该原始数据可以是在目标协议层中,等待传输至传输层的数据。值得说明的是,传输至传输层时所用的传输协议为tcp/ip(transmission control protocol/internet protocol,传输控制协议/网际协议)协议。其中,目标协议层可以是fec层。
82.fec是增加数据通讯可信度的方法。在单向通讯信道中,一旦错误被发现,其接收器将无权再请求传输。fec是利用数据进行传输冗余信息的方法,当传输中出现错误,将允许接收器再建数据。
83.fec层可以被放置在arq协议的底层,亦即传输层和网络层之间。
84.在原始数据的传输中,传输的原始数据的单元是字符串。其中,每个字符都有可能因为干扰等原因导致接收方,亦即传输层接收错误。
85.举例而言,当fec发送的原始数据是abcdefg时,接收方可能受到的是abddefg,在原本的传输场景中纠错码需要识别到哪个字符有误,并且实际传输的字符应该是哪个等内容。
86.虽然错误码的产生可能会由于传输错误或者丢包导致未接收到的错误两种情况。但是,基于tcp/ip设计的协议底层数据不是字符串,而是ip包。并且,因为ip层以下自带多重校验,所以基于tcp/ip之上的数据是不会存在错误码的情况,只会存在丢包的情况。
87.因此,在传输的基本单元变成ip包时,对原始数据的错误码的分析方式也要切换。
88.进一步的,可以获取与该原始数据对应的冗余数据数量。该冗余数据数量可以是fec层发送时附加的冗余数据的份数。
89.其中,该冗余数据数量可以是通过fec层的丢包率和传输层要求的丢包率确定的。举例而言,当底层的fec层的丢包率为30%,上层的传输层要求的丢包率不超过5%时,可以将fec层对原始数据的数据拆分的数量上限设定为30。因此,将n等于30,按照公式(1)计算满足上层丢包率要求的k;将n等于29,按照公式(1)计算满足上层丢包率要求的k;将n等于28,按照公式(1)计算满足上层丢包率要求的k;
……
;将n等于2,按照公式(1)计算满足上层丢包率要求的k。
90.通过对n的遍历可以得到满足丢包率要求的多组(n,k),然后按照公式(2)计算冗余比例:
[0091][0092]
在计算出冗余比例之后,可以从中选择冗余比例最小的(n,k)。并且,该冗余比例最小的(n,k)还要满足消耗带宽不能超过三倍的要求。
[0093]
进一步的,对原始数据进行数据拆分处理得到拆分数据数量。该拆分数据数量可以用n表示。
[0094]
图3示出了数据拆分处理的方法的流程示意图,如图3所示,对于原始数据s,可以将该原始数据s拆分成四份,n=4。具体的,拆分的四份数据分别是s1、s2、s3、s4。并且,由于已经确定冗余数据数量,还能生成对应的两份冗余数据,分别是z1、z2。
[0095]
在步骤s220中,确定与原始数据对应的编码方式策略,并根据拆分数据数量或冗余数据数量对编码方式策略进行策略指定处理确定目标编码方式。
[0096]
在本公开的示例性实施例中,在确定冗余数据数量和拆分数据数量之后,可以确定与原始数据对应的编码方式策略。
[0097]
在可选的实施例中,确定与原始数据对应的编码方式策略为对原始数据进行线性编码。
[0098]
继续参考图3,两份冗余数据z1、z2可以分别表示成z1=a1*s1+b1*s2+c1*s3+d1*s4和z2=a2*s1+b2*s2+c2*s3+d2*s4。
[0099]
因此,对原始数据进行编码的策略只能是对原始数据进行线性编码的编码方式。
[0100]
在可选的实施例中,图4示出了确定编码方式策略的方法的流程示意图,如图4所示,该方法至少包括以下步骤:在步骤s410中,若拆分数据数量为目标数量,确定原始数据的编码方式为第一编码。
[0101]
其中,目标数量可以是1。当k=1时,可以选择第一编码的方式对原始数据进行数
据编码处理。
[0102]
在步骤s420中,若冗余数量为目标数量,确定原始数据的编码方式为第二编码。
[0103]
其中,目标数量还为1。当m=1时,可以选择第二编码的方式对原始数据进行数据编码处理。
[0104]
在步骤s430中,若冗余数据数量或拆分数据数量不为目标数量,确定原始数据的编码方式为第三编码。
[0105]
当冗余数据数量和拆分数据数量任意一个数量都不等于目标数量1时,可以选择第三编码的方式对原始数据进行数据编码处理。
[0106]
在可选的实施例中,第一编码为复制编码,第二编码为异或编码,第三编码为里德索罗门编码。
[0107]
具体的,当k=1时,选择正常的复制编码方式对原始数据进行数据编码处理,那么,所有的冗余数据都是原始数据的拷贝数据。
[0108]
当m=1时,可以选择xor(异或)编码。由于xor编码只能产生一份冗余数据,并且xor编码的计算效率极高,因此,当冗余数据数量有特殊要求时,可以使用xor编码实现。
[0109]
在除k=1或m=1的情况下,都可以选择rs(reed-solomon,里德索罗门)编码。rs编码可以产生任意份冗余数据,并且在众多编码方式中,rs编码最为灵活。
[0110]
但是由于rs编码的计算量最大,并且在数据解码过程中需要进行矩阵求逆,还要计算矩阵乘法,因此,rs编码作为一种保底编码方式,在(n,k)没有特殊编码要求的情况下使用。
[0111]
除此之外,当m=2时,还可以选择用于raid的v2-code编码。
[0112]
并且,evenodd编码、blaum-roth编码、liberation-codes编码和star阵列码编码等线性编码方式均适用于制定编码方式策略,本示例性实施例对此不做特殊限定。
[0113]
在本示例性实施例中,通过制定与原始数据对应的编码方式策略,为对原始数据进行数据编码处理提供理论支持。
[0114]
在确定编码方式策略之后,可以根据拆分数据数量或冗余数据数量在编码方式策略中选择对应的目标编码方式。
[0115]
具体的,当原始数据有任意多份,但是仅支持单份冗余,亦即m=1时,选择xor编码作为目标编码方式。
[0116]
图5示出了xor编码作为目标编码方式的编解码的逻辑示意图,如图5所示,原始数据为“elvis”的字符串,对应的plaintext(明文)为69、108、118、105和115,并且key(密钥)为196、207、195、134和172,那么,按照xor编码方式对原始数据进行数据编码处理可以得到ciphertext(密文)为236、163、181、239和223。
[0117]
进一步的,在数据解码处理过程中,假如丢失了原文数据的明文,但是接收到ciphertext为236、163、181、239和223,key为196、207、195、134和172,可以按照xor编码方式对编码数据进行数据解码处理,还原出原始数据的明文为69、108、118、105和115,那么,原始数据为“elvis”的字符串。
[0118]
因此,xor编码在数据编码处理过程中,可以利用z=s1^s2^s3的方式得到编码数据。其中,^为异或计算符。在数据解码处理过程中,加入丢失了s3,但是接收到了z、s1和s2,则可以按照s3=s1^s2^z的方式还原出原始字符串。
[0119]
值得说明的是,在数据解码处理的过程中,当接收到原始数据时,则无需进行数据解码处理。
[0120]
当在除k=1或m=1的情况下,选择rs编码作为目标编码方式时,可以使用vrs或crs进行数据编码处理。
[0121]
其中,vrs使用的是范德蒙矩阵,crs使用的是柯西矩阵。并且,crs在求逆时比vrs要快一个数量级。vrs的计算复杂度为o(n^3),crs的计算复杂度为o(n^2)。
[0122]
在步骤s230中,按照目标编码方式对原始数据进行数据编码处理得到编码数据。
[0123]
在本公开的示例性实施例中,在确定目标编码方式之后,可以按照目标编码方式对原始数据进行数据编码处理。
[0124]
在可选的实施例中,在伽罗华域中,按照目标编码方式对原始数据进行数据编码处理得到编码数据。
[0125]
由于两份冗余数据可以表示成常量与拆分数据的计算求和的方式,并且,由于要传输的拆分数据满足1字节(0-255之间),那么计算求和之后,冗余数据可能会溢出一字节,因此,可以将按照目标编码方式对原始数据进行数据编码处理的过程放在伽罗华域内实现(galois field),以得到不会溢出的编码数据,以满足传输要求。
[0126]
并且,在得到编码数据之后,还可以传输该编码数据。
[0127]
在可选的实施例中,从目标协议层传输编码数据。
[0128]
由于数据编码处理过程是在fec层完成的,还可以从该fec层将得到编码数据传输至上一网络层,亦即传输层。
[0129]
在可选的实施例中,图6示出了传输编码数据的方法的流程示意图,如图6所示,该方法至少包括以下步骤:在步骤s610中,对拆分数据数量和冗余数据数量进行数量求和计算得到总计数量,并根据拆分数据数量、总计数量和目标编码方式生成数据头协议。
[0130]
在得到拆分数据数量k和冗余数据数量m之后,可以对拆分数据数量k和冗余数据数量m进行求和得到总计数量n。
[0131]
图7示出了生成的数据头协议的结构示意图,如图7所示,0-8字节中包括v、c、n、k、frg、sn和los,8-16字节包括ts和len。
[0132]
其中,v为version,表征协议版本。
[0133]
c为code type,表征编码方式。其中,c=0时,无编码,亦即目标编码方式为复制编码;c=1时,目标编码方式为xor编码;c=2时,目标编码方式为rs编码。
[0134]
n为本消息被拆分的总数量,亦即总计数量。
[0135]
k为本消息拆分中数据长度,亦即拆分数据数量。
[0136]
frg为本段在拆分数据中的编号。
[0137]
los为发送方的接收丢包率,单位为千分之一。
[0138]
sn为消息编号。
[0139]
ts为发送时间戳。
[0140]
len为本段的数据长度。
[0141]
在步骤s620中,对数据头协议和编码数据进行数据组装处理得到数据包,并从目标协议层利用网络通信协议传输数据包,以使目标协议层的上一网络层接收数据包。
[0142]
继续参考图7,data部分为编码数据部分。在传统的fec协议中,不对协议部分和编
码部分进行区分,协议部分和编码部分是一个整体。但是,在该数据头协议中将数据头协议和编码数据区分为两个部分,通过数据组装的方式组装成数据包。
[0143]
这种数据协议头能够通过code type去做每条消息单独的编码区分,以支持多种编码混合在一起,并且能够进行混合发送。
[0144]
因此,在得到数据包之后,可以将数据包从目标协议层通过tcp/ip协议发送至上一网络层,亦即传输层。
[0145]
进一步的参考图3,在得到四份对原始数据的拆分后数据和两份冗余数据之后,可以拥有六份数据,并且对每份数据封装一个数据协议头就可以作为tcp/ip的数据包发出。
[0146]
在本示例性实施例中,通过拆分数据数量、总计数量和目标编码数据生成数据头协议之后,能够得到数据包进行传输,数据头协议的生成方式与传统协议头构成不同,支持多种编码方式的数据的混合传输,从传输方面兼容了多种编码方式得到的编码数据。
[0147]
更进一步的,上一网络层收到目标协议层发送的数据包之后,还能够对该数据包进行数据解码处理。
[0148]
在可选的实施例中,图8示出了数据解码处理的方法的流程示意图,如图8所示,该方法至少包括以下步骤:在步骤s810中,获取数据包中的数据头协议和编码数据,并获取与编码数据对应的编码数据数量。
[0149]
传输层在接收到数据包之后,可以获取到数据包中的数据头协议和编码数据。并且,还可以获取与该编码数据对应的编码数据数量。该编码数据数量可以表征传输层接收到的编码数据的份数。
[0150]
在步骤s820中,若编码数据数量大于或等于拆分数据数量,按照数据头协议中的目标编码方式对编码数据进行数据解码处理复原原始数据。
[0151]
当编码数据数量大于或等于拆分数据数量时,才可以按照数据头协议中的目标编码数据对编码数据进行数据解码处理复原出原始数据,否则是复原不出原始数据的。
[0152]
举例而言,继续参考图3,当两份冗余数据为z1、z2,对原始数据进行数据拆分处理到的拆分的四份数据为s1、s2、s3、s4时,可能在传输过程中由于丢包导致丢失s3、s4,只接收到s1、z1、s2、z2,那么,要想复原出原始数据就是基于公式(3)所示的数学原理:
[0153][0154]
数据解码处理的过程其实就是一个多元一次方程的过程,原始数据拆分成了几份就需要收到几份编码数据,因为每份数据对应的是一个方程,m元1次方程需要m个方程组才能求解。
[0155]
在本示例性实施例中,通过编码数据数量和拆分数据数量的比较结果能够复原出原始数据,复原方式简单准确,并且能够达到稳定数据的效果。
[0156]
通过arq协议发出的每个消息会被拆分,拆分过程就是通过获取到的信道的丢包率计算合适的n、k和m。其中,m=n-k,k是数据份数,表征将数据拆分成k份,并且追加m份数据,总共获得n份数据,发送给对方。
[0157]
在对端接收到消息时,获得的数据超过k份即可复原出原始数据,并达到稳定数据
的效果。
[0158]
其中,该理论的核心在于不同于传统的固定编解码方式,而是每次通过n、k和m计算出最合适的编码方式。
[0159]
在本公开的示例性实施例中的数据处理方法,确定与原始数据对应的编码方式策略,使得多种编码方式兼容在同一个目标层协议中,为对原始数据进行数据编码处理提供了理论基础和支持。更进一步的,按照从编码方式策略中选择出的目标编码方式对原始数据进行数据编码处理,提出了一种自适应的目标编码方式设计,满足了不同环境和场景下最低带宽浪费和最低最丢包率的需求。
[0160]
此外,在本公开的示例性实施例中,还提供一种数据处理装置。图9示出了数据处理装置的结构示意图,如图9所示,数据处理装置900可以包括:数据拆分模块910、策略制定模块920和编码处理模块930。其中:
[0161]
数据拆分模块910,被配置为获取原始数据以及与原始数据对应的冗余数据数量,并对原始数据进行数据拆分处理得到拆分数据数量;
[0162]
策略制定模块920,被配置为确定与原始数据对应的编码方式策略,并根据拆分数据数量或冗余数据数量对编码方式策略进行策略指定处理确定目标编码方式;
[0163]
编码处理模块930,被配置为按照目标编码方式对原始数据进行数据编码处理得到编码数据。
[0164]
在本发明的一种示例性实施例中,所述确定与所述原始数据对应的编码方式策略,包括:
[0165]
确定与所述原始数据对应的编码方式策略为对所述原始数据进行线性编码。
[0166]
在本发明的一种示例性实施例中,所述确定与所述原始数据对应的编码方式策略,包括:
[0167]
若所述拆分数据数量为目标数量,确定所述原始数据的编码方式为第一编码;
[0168]
若所述冗余数量为目标数量,确定所述原始数据的编码方式为第二编码;
[0169]
若所述冗余数据数量或所述拆分数据数量不为目标数量,确定所述原始数据的编码方式为第三编码。
[0170]
在本发明的一种示例性实施例中,所述第一编码为复制编码,所述第二编码为异或编码,所述第三编码为里德索罗门编码。
[0171]
在本发明的一种示例性实施例中,所述按照所述目标编码方式对所述原始数据进行数据编码处理得到编码数据,包括:
[0172]
在伽罗华域中,按照所述目标编码方式对所述原始数据进行数据编码处理得到编码数据。
[0173]
在本发明的一种示例性实施例中,在所述按照所述目标编码方式对所述原始数据进行数据编码处理得到编码数据之后,所述方法还包括:
[0174]
从目标协议层传输所述编码数据。
[0175]
在本发明的一种示例性实施例中,所述从目标协议层传输所述编码数据,包括:
[0176]
对所述拆分数据数量和所述冗余数据数量进行数量求和计算得到总计数量,并根据所述拆分数据数量、所述总计数量和所述目标编码方式生成数据头协议;
[0177]
对所述数据头协议和所述编码数据进行数据组装处理得到数据包,并从目标协议
层利用网络通信协议传输所述数据包,以使所述目标协议层的上一网络层接收所述数据包。
[0178]
在本发明的一种示例性实施例中,在所述使所述目标协议层的上一网络层接收所述数据包之后,所述方法还包括:
[0179]
获取所述数据包中的数据头协议和所述编码数据,并获取与所述编码数据对应的编码数据数量;
[0180]
若所述编码数据数量大于或等于所述拆分数据数量,按照所述数据头协议中的所述目标编码方式对所述编码数据进行数据解码处理复原所述原始数据。
[0181]
上述数据处理装置900的具体细节已经在对应的数据处理方法中进行了详细的描述,因此此处不再赘述。
[0182]
应当注意,尽管在上文详细描述中提及了数据处理装置900的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0183]
此外,在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
[0184]
下面参照图10来描述根据本发明的这种实施例的电子设备1000。图10显示的电子设备1000仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0185]
如图10所示,电子设备1000以通用计算设备的形式表现。电子设备1000的组件可以包括但不限于:上述至少一个处理单元1010、上述至少一个存储单元1020、连接不同系统组件(包括存储单元1020和处理单元1010)的总线1030、显示单元1040。
[0186]
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1010执行,使得所述处理单元1010执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的步骤。
[0187]
存储单元1020可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)1021和/或高速缓存存储单元1022,还可以进一步包括只读存储单元(rom)1023。
[0188]
存储单元1020还可以包括具有一组(至少一个)程序模块1025的程序/实用工具1024,这样的程序模块1025包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0189]
总线1030可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
[0190]
电子设备1000也可以与一个或多个外部设备1200(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1000交互的设备通信,和/或与使得该电子设备1000能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口1050进行。并且,电子设备1000还可以通过网络适配器1060与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1060通过总线1030与电子设备1000的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1000使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁
带驱动器以及数据备份存储系统等。
[0191]
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。
[0192]
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的步骤。
[0193]
参考图11所示,描述了根据本发明的实施例的用于实现上述方法的程序产品1100,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0194]
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0195]
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0196]
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
[0197]
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0198]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者
适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1