一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据传输系统、方法、装置、电子设备和存储介质与流程

2023-02-04 14:18:22 来源:中国专利 TAG:


1.本技术涉及数据处理技术领域,特别是涉及一种数据传输系统、方法、装置、电子设备和存储介质。


背景技术:

2.目前,物联网设备被广泛应用,在物联网的应用过程中,物联网设备需要和云端进行数据交互,在进行数据交互之前,需要在云端创建该物联网设备的设备影子。
3.其中,所谓设备影子是指存储在云端的一种数据文件,是物联网设备在云端的虚拟映射,可以用来记录物联网设备的相关数据。示例性的,设备影子可以记录对物联网设备属性的配置,即期望属性值,当需要修改物联网设备的属性值时,可修改设备影子的期望属性值,进而,云服务器可以通过将该期望属性值下发至物联网设备,实现云端对物联网设备状态的管控。
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.读取所述增量下发请求中的所述目标次数,并计算所述目标次数与1的差值;若所
述服务器当前所记录的删除所述指定数组的指定次数等于所述差值,则删除此次接收到所述增量下发请求之前,最近一次所确定的所述指定数组,并将所述指定次数更新为当前所记录的指定次数与1的和值;其中,所述指定次数的初始值为0;
34.在接收到所述下发终止信号后,删除最后一次所确定的所述指定数组。
35.可选的,一种具体实现方式中,
36.所述服务器确定以指定对象数组形式存储在所述设备影子中的待下发数据,包括;
37.接收用户通过用户终端发送的关于所述目标设备的期望属性值,并将所述期望属性值以指定对象数组形式存储到所述设备影子中,作为待下发数据;
38.所述目标设备对所述指定数组进行数据处理,包括:
39.所述目标设备按照所述指定数据进行属性设置。
40.可选的,一种具体实现方式中,
41.所述目标设备,还用于确定以所述指定对象数组形式存储的待上报数据,并向所述服务器发送所述目标设备的设备标识、所述待上报数据的指定信息以及由所述待上报数据中的各个数组的数组标识构成的目标标识数组;其中,所述指定信息包括:所述待上报数据的类型,和/或,所述待上报数据的版本号;
42.所述服务器,还用于接收所述设备标识、所述指定信息和所述目标标识数组;若所记录的所述设备标识对应的数据信息与所述指定信息不一致,和/或,所记录的所述设备标识对应的标识数组与所述目标标识数组不一致,则向所述目标设备发送用于提示所述目标设备上报所述待上报数据的数据上报通知;
43.所述目标设备,还用于接收所述数据上报通知;在未上报的所述待上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组,并向所述服务器上报所述目标数组;
44.所述服务器,还用于接收所述目标数组,将所述目标数组存储到所述目标设备的设备影子中并向所述服务器下发第一应答消息;
45.所述目标设备,还用于接收所述第一应答消息;若检测到存在未上报的所述待上报数据,则返回所述在未上报的所述待上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组的步骤。
46.可选的,一种具体实现方式中,所述确定以所述指定对象数组形式存储的待上报数据,包括:
47.获取待上报且数据量大于所述第二容量的本地数据,并将所述本地数据转换为以指定对象数组形式存储的数据,作为待上报数据。
48.可选的,一种具体实现方式中,
49.所述目标设备,还用于在第一次上报所述目标数据时,向所述服务器上报用于表征第一次进行数据上报的第一信号;
50.若确定所述目标数组后,检测到存在未确定为所述目标数组的所述待上报数据,则在向所述服务器上报所述目标数据时,向所述服务器上报用于表征数据上报中的第二信号;
51.若确定所述目标数组后,检测到不存在未确定为所述目标数组的所述待上报数
据,则在向所述服务器上报所述目标数据时,向所述服务器上报用于表征最后一次进行数据上报的第三信号;
52.所述服务器,还用于接收所述第一信号、所述第二信号或所述第三信号。
53.可选的,一种具体实现方式中,
54.所述目标设备,还用于在检测到运行状态变化时,确定存在数据更新的指定数据;并向所述服务器上报所述指定数据和用于表征进行数据更新的第四信号;其中,所述指定数据的数据量不大于所述目标设备的数据发送缓冲区的第二容量;
55.所述服务器,还用于接收所述指定数据和所述第四信号;利用所述指定数据对所述目标设备的设备影子所存储的数据进行数据更新,并向所述目标设备发送第二应答消息;
56.所述目标设备,还用于接收所述第二应答消息。
57.第二方面,本技术实施例提供了一种数据传输方法,应用于数据传输系统中的服务器,所述数据传输系统还包括目标设备,所述服务器设置有所述目标设备的设备影子;所述方法包括:
58.确定以指定对象数组形式存储在所述设备影子中的待下发数据,并向所述目标设备发送用于提示所述目标设备发送增量下发请求的数据下发通知,以使所述目标设备在接收到所述数据下发通知后,向所述服务器发送所述增量下发请求;其中,所述增量下发请求包括所述目标设备的数据接收缓冲区的第一容量;
59.接收所述增量下发请求,并根据所述增量下发请求,在未下发的所述待下发数据中确定第一数据量之和不大于所述第一容量的指定数组;
60.若不存在未被确定为所述指定数组的所述待下发数组,则向所述目标设备下发携带有指定标识的所述指定数组,以使所述目标设备接收所述指定数组,对所述指定数组进行数据处理,并在检测到所述指定数组携带有所述指定标识时,向所述服务器发送用于表征已接收全部所述待下发数据的下发终止信号;其中,所述指定标识用于表征在下发所述指定数组后,所述服务器不存在未下发的所述待下发数据;
61.若存在未被确定为所述指定数组的所述待下发数组,则向所述目标设备下发所述指定数组,以使所述目标设备接收所述指定数组,对所述指定数组进行数据处理,并在检测到所述指定数组携带未有所述指定标识时,向所述服务器发送新的增量下发请求;
62.接收所述下发终止信号;
63.或者,
64.接收所述新的增量下发请求,并返回根据所述增量下发请求,在未下发的所述待下发数据中确定第一数据量之和不大于所述第一容量的指定数组的步骤。
65.可选的,一种具体实现方式中,所述方法还包括:
66.在所述向所述目标设备发送用于提示所述目标设备发送增量下发请求的数据下发通知之前,提取所述待下发数据中每个数组的数组标识,并基于所提取到的各个数组标识,构建标识列表;
67.所述根据所述增量下发请求,在未下发的所述待下发数据中确定第一数据量之和不大于所述第一容量的指定数组,包括:
68.按照所述标识列表所表征的数组排列顺序,从未下发的所述待下发数据中的第一
个数组开始,依次遍历未下发的所述待下发数据中的各个数组;
69.在每遍历到一个数组时,计算所遍历到的数组的第一数据量之和;
70.在所述第一数据量之和不大于所述第一容量时,遍历下一数组;
71.在所述第一数据量之和大于所述第一容量时,停止遍历,并将所遍历到的各个数组中,除最后一个数组之外的其他数组确定为指定数组。
72.可选的,一种具体实现方式中,所述增量下发请求还包括:所接收到的最后一个数组的指定数组标识;
73.所述按照所述标识列表所表征的数组排列顺序,从未下发的所述待下发数据中的第一个数组开始,依次遍历未下发的所述待下发数据中的各个数组,包括:
74.按照所述标识列表所表征的数组排列顺序,从所述指定数组标识的下一个数组标识所属的数组开始,依次遍历所述待下发数据中的各个数组。
75.可选的,一种具体实现方式中,所述增量下发请求还包括:指定数量;
76.所述根据所述增量下发请求,在未下发的所述待下发数据中确定第一数据量之和不大于所述第一容量的指定数组,包括:
77.遍历未下发的所述待下发数据中的各个数组;在每遍历到一个数组时,确定所遍历到的数组的第一数据量之和以及所遍历到的数组的数量;
78.如果所述第一数据量之和不大于所述第一容量,且所述数量小于所述指定数量,则遍历下一数组;
79.如果所述第一数据量之和不大于所述第一容量,且所述数量等于所述指定数量,则停止遍历,并将所遍历到的各个数组确定为指定数组;
80.如果所述第一数据量之和大于所述第一容量,且所述数量不大于所述指定数量,则停止遍历,并将所遍历到的各个数组中,除最后一个数组之外的其他数组确定为指定数组。
81.可选的,一种具体实现方式中,所述方法还包括:
82.删除所存储的所述指定数组。
83.可选的,一种具体实现方式中,所述增量下发请求还包括:所述目标设备接收所述指定数组的目标次数;
84.所述删除所存储的所述指定数组,包括:
85.读取所述增量下发请求中的所述目标次数,并计算所述目标次数与1的差值;若所述服务器当前所记录的删除所述指定数组的指定次数等于所述差值,则删除此次接收到所述增量下发请求之前,最近一次所确定的所述指定数组,并将所述指定次数更新为当前所记录的指定次数与1的和值;其中,所述指定次数的初始值为0;
86.在接收到所述下发终止信号后,删除最后一次所确定的所述指定数组。
87.可选的,一种具体实现方式中,所述确定以指定对象数组形式存储在所述设备影子中的待下发数据,包括;
88.接收用户通过用户终端发送的关于所述目标设备的期望属性值,并将所述期望属性值以指定对象数组形式存储到所述设备影子中,作为待下发数据。
89.可选的,一种具体实现方式中,所述方法还包括:
90.接收所述目标设备在确定以所述指定对象数组形式存储的待上报数据后,发送的
所述目标设备的设备标识、所述待上报数据的指定信息以及由所述待上报数据中的各个数组的数组标识构成的目标标识数组;其中,所述指定信息包括:所述待上报数据的类型,和/或,所述待上报数据的版本号;
91.若所记录的所述设备标识对应的数据信息与所述指定信息不一致,和/或,所记录的所述设备标识对应的标识数组与所述目标标识数组不一致,则向所述目标设备发送用于提示所述目标设备上报所述待上报数据的数据上报通知,以使所述目标设备在接收到所述数据上报通知后,在未上报的所述待上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组,并向所述服务器上报所述目标数组;
92.接收所述目标数组,将所述目标数组存储到所述目标设备的设备影子中并向所述服务器下发第一应答消息,以使所述目标设备接收所述第一应答消息;
93.接收所述目标设备在检测到存在未上报的所述待上报数据时,在未上报的所述待上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组,并返回所述接收所述目标数组的步骤。
94.可选的,一种具体实现方式中,所述确定以所述指定对象数组形式存储的待上报数据,包括:
95.获取待上报且数据量大于所述第二容量的本地数据,并将所述本地数据转换为以指定对象数组形式存储的数据,作为待上报数据。
96.可选的,一种具体实现方式中,所述方法还包括:
97.接收所述目标设备发送的第一信号、第二信号或第三信号;
98.其中,所述第一信号为:所述目标设备在第一次上报所述目标数据时,向所述服务器上报用于表征第一次进行数据上报的信号;所述第二信号为:所述目标设备在确定所述目标数组后,检测到存在未确定为所述目标数组的所述待上报数据时,在向所述服务器上报所述目标数据时,向所述服务器上报用于表征数据上报中的信号;所述第三信号为:所述目标设备在确定所述目标数组后,检测到不存在未确定为所述目标数组的所述待上报数据时,向所述服务器上报所述目标数据时,向所述服务器上报用于表征最后一次进行数据上报的信号。
99.可选的,一种具体实现方式中,所述方法还包括:
100.接收所述目标设备发送的指定数据和用于表征进行数据更新的第四信号;其中,所述指定数据是所述目标设备在检测到运行状态变化时,确定的存在数据更新的指定数据,所述指定数据的数据量不大于所述目标设备的数据发送缓冲区的第二容量;
101.利用所述指定数据对所述目标设备的设备影子所存储的数据进行数据更新,并向所述目标设备发送第二应答消息,以使所述目标设备接收所述第二应答消息。
102.第三方面,本技术实施例提供了一种数据传输方法,应用于数据传输系统中的目标设备,所述数据传输系统还包括服务器,所述服务器设置有所述目标设备的设备影子;所述方法包括:
103.接收数据下发通知;其中,所述数据下发通知是所述服务器在确定以指定对象数组形式存储在所述设备影子中的待下发数据后,向所述目标设备发送的用于提示所述目标设备发送增量下发请求的通知;
104.向所述服务器发送所述增量下发请求;其中,所述增量下发请求包括所述目标设
备的数据接收缓冲区的第一容量,以使所述服务器在接收所述增量下发请求后,根据所述增量下发请求,在未下发的所述待下发数据中确定第一数据量之和不大于所述第一容量的指定数组,并且,若不存在未被确定为所述指定数组的所述待下发数组,则向所述目标设备下发携带有指定标识的所述指定数组;否则,向所述目标设备下发所述指定数组;其中,所述指定标识用于表征在下发所述指定数组后,所述服务器不存在未下发的所述待下发数据;
105.接收所述指定数组,并对所述指定数据进行数据处理;
106.若检测所述指定数组携带有所述指定标识,则向所述服务器发送用于表征已接收全部所述待下发数据的下发终止信号,以使所述服务器接收所述下发终止信号;
107.否则,返回所述向所述服务器发送所述增量下发请求的步骤。
108.可选的,一种具体实现方式中,所述待下发数据包括:用户通过用户终端发送的关于所述目标设备的期望属性值;
109.所述对所述指定数组进行数据处理,包括:
110.所述按照所述指定数据进行属性设置。
111.可选的,一种具体实现方式中,所述方法还包括:
112.确定以所述指定对象数组形式存储的待上报数据,并向所述服务器发送所述目标设备的设备标识、所述待上报数据的指定信息以及由所述待上报数据中的各个数组的数组标识构成的目标标识数组,以使所述服务器在接收到所述设备标识、所述指定信息和所述目标标识数组后,若所记录的所述设备标识对应的数据信息与所述指定信息不一致,和/或,所记录的所述设备标识对应的标识数组与所述目标标识数组不一致,则向所述目标设备发送用于提示所述目标设备上报所述待上报数据的数据上报通知;其中,所述指定信息包括:所述待上报数据的类型,和/或,所述待上报数据的版本号;
113.接收所述数据上报通知;在未上报的所述待上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组,并向所述服务器上报所述目标数组,以使所述服务器在接收到所述目标数组后,将所述目标数组存储到所述目标设备的设备影子中并向所述服务器下发第一应答消息;
114.接收所述第一应答消息;若检测到存在未上报的所述待上报数据,则返回所述在未上报的所述待上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组的步骤。
115.可选的,一种具体实现方式中,所述确定以所述指定对象数组形式存储的待上报数据,包括:
116.获取待上报且数据量大于所述第二容量的本地数据,并将所述本地数据转换为以指定对象数组形式存储的数据,作为待上报数据。
117.可选的,一种具体实现方式中,所述方法还包括:
118.在第一次上报所述目标数据时,向所述服务器上报用于表征第一次进行数据上报的第一信号;
119.若确定所述目标数组后,检测到存在未确定为所述目标数组的所述待上报数据,则在向所述服务器上报所述目标数据时,向所述服务器上报用于表征数据上报中的第二信号;
120.若确定所述目标数组后,检测到不存在未确定为所述目标数组的所述待上报数据,则在向所述服务器上报所述目标数据时,向所述服务器上报用于表征最后一次进行数据上报的第三信号。
121.可选的,一种具体实现方式中,所述方法还包括:
122.在检测到运行状态变化时,确定存在数据更新的指定数据;其中,所述指定数据的数据量不大于所述目标设备的数据发送缓冲区的第二容量;
123.向所述服务器上报所述指定数据和用于表征进行数据更新的第四信号,以使所述服务器在接收到所述指定数据和所述第四信号后,利用所述指定数据对所述目标设备的设备影子所存储的数据进行数据更新,并向所述目标设备发送第二应答消息;
124.接收所述第二应答消息。
125.第四方面,本技术实施例提供了一种数据传输装置,应用于数据传输系统中的服务器,所述数据传输系统还包括目标设备,所述服务器设置有所述目标设备的设备影子;所述装置包括:
126.数据确定模块:用于确定以指定对象数组形式存储在所述设备影子中的待下发数据,并向所述目标设备发送用于提示所述目标设备发送增量下发请求的数据下发通知,以使所述目标设备在接收到所述数据下发通知后,向所述服务器发送所述增量下发请求;其中,所述增量下发请求包括所述目标设备的数据接收缓冲区的第一容量;
127.请求接收模块,用于接收所述增量下发请求,并根据所述增量下发请求,在未下发的所述待下发数据中确定第一数据量之和不大于所述第一容量的指定数组;
128.数组下发模块,用于在不存在未被确定为所述指定数组的所述待下发数组时,向所述目标设备下发携带有指定标识的所述指定数组,以使所述目标设备接收所述指定数组,对所述指定数组进行数据处理,并在检测到所述指定数组携带有所述指定标识时,向所述服务器发送用于表征已接收全部所述待下发数据的下发终止信号;其中,所述指定标识用于表征在下发所述指定数组后,所述服务器不存在未下发的所述待下发数据;在存在未被确定为所述指定数组的所述待下发数组时,向所述目标设备下发所述指定数组,以使所述目标设备接收所述指定数组,对所述指定数组进行数据处理,并在检测到所述指定数组携带未有所述指定标识时,向所述服务器发送新的增量下发请求;
129.信号接收模块,用于接收所述下发终止信号;或者,接收所述新的增量下发请求,并返回根据所述增量下发请求,在未下发的所述待下发数据中确定第一数据量之和不大于所述第一容量的指定数组的步骤。
130.可选的,一种具体实现方式中,所述装置还包括:
131.标识提取模块,用于在所述向所述目标设备发送用于提示所述目标设备发送增量下发请求的数据下发通知之前,提取所述待下发数据中每个数组的数组标识,并基于所提取到的各个数组标识,构建标识列表;
132.所述请求接收模块具体用于:
133.按照所述标识列表所表征的数组排列顺序,从未下发的所述待下发数据中的第一个数组开始,依次遍历未下发的所述待下发数据中的各个数组;
134.在每遍历到一个数组时,计算所遍历到的数组的第一数据量之和;
135.在所述第一数据量之和不大于所述第一容量时,遍历下一数组;
136.在所述第一数据量之和大于所述第一容量时,停止遍历,并将所遍历到的各个数组中,除最后一个数组之外的其他数组确定为指定数组。
137.可选的,一种具体实现方式中,所述增量下发请求还包括:所接收到的最后一个数组的指定数组标识;
138.所述请求接收模块具体用于:
139.按照所述标识列表所表征的数组排列顺序,从所述指定数组标识的下一个数组标识所属的数组开始,依次遍历所述待下发数据中的各个数组。
140.可选的,一种具体实现方式中,所述增量下发请求还包括:指定数量;
141.所述请求接收模块具体用于:
142.遍历未下发的所述待下发数据中的各个数组;在每遍历到一个数组时,确定所遍历到的数组的第一数据量之和以及所遍历到的数组的数量;
143.如果所述第一数据量之和不大于所述第一容量,且所述数量小于所述指定数量,则遍历下一数组;
144.如果所述第一数据量之和不大于所述第一容量,且所述数量等于所述指定数量,则停止遍历,并将所遍历到的各个数组确定为指定数组;
145.如果所述第一数据量之和大于所述第一容量,且所述数量不大于所述指定数量,则停止遍历,并将所遍历到的各个数组中,除最后一个数组之外的其他数组确定为指定数组。
146.可选的,一种具体实现方式中,所述装置还包括:
147.数组删除模块:用于删除所存储的所述指定数组。
148.可选的,一种具体实现方式中,所述增量下发请求还包括:所述目标设备接收所述指定数组的目标次数;
149.所述数组删除模块,具体用于:
150.读取所述增量下发请求中的所述目标次数,并计算所述目标次数与1的差值;若所述服务器当前所记录的删除所述指定数组的指定次数等于所述差值,则删除此次接收到所述增量下发请求之前,最近一次所确定的所述指定数组,并将所述指定次数更新为当前所记录的指定次数与1的和值;其中,所述指定次数的初始值为0;
151.在接收到所述下发终止信号后,删除最后一次所确定的所述指定数组。
152.可选的,一种具体实现方式中,所述数据确定模块具体用于:
153.接收用户通过用户终端发送的关于所述目标设备的期望属性值,并将所述期望属性值以指定对象数组形式存储到所述设备影子中,作为待下发数据。
154.可选的,一种具体实现方式中,所述装置还包括:
155.标识接收模块:用于接收所述目标设备在确定以所述指定对象数组形式存储的待上报数据后,发送的所述目标设备的设备标识、所述待上报数据的指定信息以及由所述待上报数据中的各个数组的数组标识构成的目标标识数组;其中,所述指定信息包括:所述待上报数据的类型,和/或,所述待上报数据的版本号;
156.通知上报模块:用于在所记录的所述设备标识对应的数据信息与所述指定信息不一致,和/或,所记录的所述设备标识对应的标识数组与所述目标标识数组不一致时,向所述目标设备发送用于提示所述目标设备上报所述待上报数据的数据上报通知,以使所述目
标设备在接收到所述数据上报通知后,在未上报的所述待上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组,并向所述服务器上报所述目标数组;
157.目标数组接收模块,用于接收所述目标数组,将所述目标数组存储到所述目标设备的设备影子中并向所述服务器下发第一应答消息,以使所述目标设备接收所述第一应答消息;
158.目标数组确定模块,用于接收所述目标设备在检测到存在未上报的所述待上报数据时,在未上报的所述待上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组,并返回所述接收所述目标数组的步骤。
159.可选的,一种具体实现方式中,所述确定以所述指定对象数组形式存储的待上报数据,包括:
160.获取待上报且数据量大于所述第二容量的本地数据,并将所述本地数据转换为以指定对象数组形式存储的数据,作为待上报数据。
161.可选的,一种具体实现方式中,所述装置还包括:
162.第二信号接收模块,用于接收所述目标设备发送的第一信号、第二信号或第三信号;
163.其中,所述第一信号为:所述目标设备在第一次上报所述目标数据时,向所述服务器上报用于表征第一次进行数据上报的信号;所述第二信号为:所述目标设备在确定所述目标数组后,检测到存在未确定为所述目标数组的所述待上报数据时,在向所述服务器上报所述目标数据时,向所述服务器上报用于表征数据上报中的信号;所述第三信号为:所述目标设备在确定所述目标数组后,检测到不存在未确定为所述目标数组的所述待上报数据时,向所述服务器上报所述目标数据时,向所述服务器上报用于表征最后一次进行数据上报的信号。
164.可选的,一种具体实现方式中,所述装置还包括:
165.数据接收模块:用于接收所述目标设备发送的指定数据和用于表征进行数据更新的第四信号;其中,所述指定数据是所述目标设备在检测到运行状态变化时,确定的存在数据更新的指定数据,所述指定数据的数据量不大于所述目标设备的数据发送缓冲区的第二容量;
166.数据更新模块,用于利用所述指定数据对所述目标设备的设备影子所存储的数据进行数据更新,并向所述目标设备发送第二应答消息,以使所述目标设备接收所述第二应答消息。
167.第五方面,本技术实施例提供了一种数据传输装置,应用于数据传输系统中的目标设备,所述数据传输系统还包括服务器,所述服务器设置有所述目标设备的设备影子;所述装置包括:
168.通知接收模块,用于接收数据下发通知;其中,所述数据下发通知是所述服务器在确定以指定对象数组形式存储在所述设备影子中的待下发数据后,向所述目标设备发送的用于提示所述目标设备发送增量下发请求的通知;
169.请求发送模块,用于向所述服务器发送所述增量下发请求;其中,所述增量下发请求包括所述目标设备的数据接收缓冲区的第一容量,以使所述服务器在接收所述增量下发
请求后,根据所述增量下发请求,在未下发的所述待下发数据中确定第一数据量之和不大于所述第一容量的指定数组,并且,若不存在未被确定为所述指定数组的所述待下发数组,则向所述目标设备下发携带有指定标识的所述指定数组;否则,向所述目标设备下发所述指定数组;其中,所述指定标识用于表征在下发所述指定数组后,所述服务器不存在未下发的所述待下发数据;
170.数据接收模块:用于接收所述指定数组,并对所述指定数据进行数据处理;在检测所述指定数组携带有所述指定标识时,向所述服务器发送用于表征已接收全部所述待下发数据的下发终止信号,以使所述服务器接收所述下发终止信号;在检测所述指定数组未携带有所述指定标识时,返回所述向所述服务器发送所述增量下发请求的步骤。
171.可选的,一种具体实现方式中,所述待下发数据包括:用户通过用户终端发送的关于所述目标设备的期望属性值;
172.所述数据接收模块具体用于:
173.按照所述指定数据进行属性设置。
174.可选的,一种具体实现方式中,所述装置还包括:
175.待上报数据确定模块,用于确定以所述指定对象数组形式存储的待上报数据,并向所述服务器发送所述目标设备的设备标识、所述待上报数据的指定信息以及由所述待上报数据中的各个数组的数组标识构成的目标标识数组,以使所述服务器在接收到所述设备标识、所述指定信息和所述目标标识数组后,若所记录的所述设备标识对应的数据信息与所述指定信息不一致,和/或,所记录的所述设备标识对应的标识数组与所述目标标识数组不一致,则向所述目标设备发送用于提示所述目标设备上报所述待上报数据的数据上报通知;其中,所述指定信息包括:所述待上报数据的类型,和/或,所述待上报数据的版本号;
176.数组上报模块,用于接收所述数据上报通知;在未上报的所述待上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组,并向所述服务器上报所述目标数组,以使所述服务器在接收到所述目标数组后,将所述目标数组存储到所述目标设备的设备影子中并向所述服务器下发第一应答消息;
177.消息接收模块,用于接收所述第一应答消息;若检测到存在未上报的所述待上报数据,则返回所述在未上报的所述待上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组的步骤。
178.可选的,一种具体实现方式中,所述待上报数据确定模块具体用于:
179.获取待上报且数据量大于所述第二容量的本地数据,并将所述本地数据转换为以指定对象数组形式存储的数据,作为待上报数据。
180.可选的,一种具体实现方式中,所述装置还包括:
181.信号上报模块,用于在第一次上报所述目标数据时,向所述服务器上报用于表征第一次进行数据上报的第一信号;若确定所述目标数组后,检测到存在未确定为所述目标数组的所述待上报数据,则在向所述服务器上报所述目标数据时,向所述服务器上报用于表征数据上报中的第二信号;若确定所述目标数组后,检测到不存在未确定为所述目标数组的所述待上报数据,则在向所述服务器上报所述目标数据时,向所述服务器上报用于表征最后一次进行数据上报的第三信号。
182.可选的,一种具体实现方式中,所述装置还包括:
183.指定数据确定模块,用于在检测到运行状态变化时,确定存在数据更新的指定数据;其中,所述指定数据的数据量不大于所述目标设备的数据发送缓冲区的第二容量;
184.第四信号上报模块,用于向所述服务器上报所述指定数据和用于表征进行数据更新的第四信号,以使所述服务器在接收到所述指定数据和所述第四信号后,利用所述指定数据对所述目标设备的设备影子所存储的数据进行数据更新,并向所述目标设备发送第二应答消息;
185.应答消息接收模块,用于接收所述第二应答消息。
186.第六方面,本技术实施例提供了一种服务器,包括:
187.存储器,用于存放计算机程序;
188.处理器,用于执行存储器上所存放的程序时,实现上述第二方面提供的任一数据传输的方法步骤。
189.第七方面,本技术实施例提供了一种电子设备,包括:
190.存储器,用于存放计算机程序;
191.处理器,用于执行存储器上所存放的程序时,实现上述第三方面提供的任一数据传输的方法步骤。
192.第八方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第二方面提供的任一数据传输的方法步骤和/或上述第三方面提供的任一数据传输的方法步骤。
193.第九方面,本技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第二方面提供的任一数据传输的方法步骤和/或上述第三方面提供的任一数据传输的方法步骤。
194.本技术实施例有益效果:
195.以上可见,应用本技术实施例提供的方案,在服务器将数据下发至目标设备的过程中,服务器可以在确定了以指定对象数组形式存储在设备影子中的待下发数据后,向目标设备发送用于提示目标设备发送增量下发请求的数据下发通知;目标设备在接收到数据下发通知后,向服务器发送增量下发请求,且该增量下发请求包括目标设备的数据接收缓冲区的第一容量;进而,服务器在接收到增量下发请求后,便可以根据该增量下发请求,在未下发的待下发数据中确定第一数据量之和不大于第一容量的指定数组,然后向目标设备下发指定数组;目标设备接收指定数组,对指定数组进行数据处理,然后返回向服务器发送增量下发请求的步骤。如果服务器在根据增量下发请求,在未下发的待下发数据中确定了第一数据量之和不大于第一容量的指定数组后,服务器中不存在未被确定为指定数组的待下发数据了,服务器便可以向目标设备下发携带有指定标识的指定数组,该指定标识用于表征在下发指定数组后,服务器不存在未下发的待下发数据;进而,目标设备在接收到指定数组,并对指定数组进行数据处理后,如果检测到指定数组携带有指定标识,便可以确定已接收到全部待下发数据,进而,便可以向服务器发送用于表征已接收全部待下发数据的下发终止信号;服务器接收所述下发终止信号,数据下发过程结束。
196.基于此,应用本技术实施例提供的方案,在服务器需要下发到目标设备的待下发数据的数据量大于目标设备的数据接收缓冲区的第一容量时,服务器可以采取增量下发的方式,将待下发数据以指定对象数组的形式分批下发至目标设备,并且,每次下发至目标设
备的指定数组的数据量都不大于上述第一容量。这样,由于每次数据均是按照指定对象数组的形式下发的,因此,目标设备可以在接收到指定数组后,即刻对指定数组进行数据处理,以避免占用数据接收缓冲区的空间,进而,便于接收服务器下一次发送的指定数组。因此,本技术实施例提供的方案可以在不增加设备成本的前提下,解决服务器下发数据量大于设备的数据接收缓冲区容量的数据到设备而导致的设备数据接收缓冲区溢出问题。
197.此外,由于目标设备在每次接收到服务器下发的指定数组时,均可以即刻对指定数组进行数据处理,因此,目标设备无需在接收到全部的待下发数据后,对分批接收到的指定数组进行整合,再对整合后的数组进行数据处理,从而,无需增加目标设备的数据处理工作量,可以有效提高目标设备针对待下发数据的处理效率。
附图说明
198.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
199.图1为本技术实施例提供的一种数据传输系统的结构示意图;
200.图2为本技术实施例提供的一种数据传输系统的第一种信息交互示意图;
201.图3为本技术实施例提供的一种数据传输系统的另一种结构示意图;
202.图4为本技术实施例提供的一种数据传输系统的第二种信息交互示意图;
203.图5为本技术实施例提供的一种数据传输系统的第三种信息交互示意图;
204.图6为本技术实施例提供的一种数据传输系统的第四种信息交互示意图;
205.图7为本技术实施例提供的一种数据传输系统的第五种信息交互示意图;
206.图8为本技术实施例提供的一种数据传输系统的第六种信息交互示意图;
207.图9为本技术实施例提供的一种数据传输方法的流程示意图;
208.图10为本技术实施例提供的另一种数据传输方法的流程示意图;
209.图11为本技术实施例提供的一种数据传输装置的结构示意图;
210.图12为本技术实施例提供的另一种数据传输装置的结构示意图;
211.图13为本技术实施例提供的一种服务器的结构示意图;
212.图14为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
213.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员基于本技术所获得的所有其他实施例,都属于本技术保护的范围。
214.相关技术中通过增加物联网设备的数据接收缓冲区容量,来减少数据接收缓冲区溢出的问题。然而,增加数据接收缓冲区容量会增加物联网设备的成本,并且增加数据接收缓冲区容量后,数据接收缓冲区能接收的数据还是有限制的,可能还需要再次增加数据接收缓冲区容量。
215.为了解决上述问题,本技术实施例的提供了一种数据传输系统,该系统包括目标设备和服务器,其中,该服务器设置有该目标设备的设备影子。
216.所谓目标设备的设备影子是在存储在服务器的一种数据文件,是目标设备在服务器的虚拟映射,可以用于记录目标设备的相关数据。
217.其中,该系统适用于各种服务器借助于设备的设备影子向设备进行数据下发,以及设备向服务器上报数据以更新服务器中自身的设备影子的场景。例如,物联网设备和设置有物联网设备的设备影子的云服务器之间的数据传输等。基于此,本技术实施例不对该系统的应用场景进行具体限定。
218.并且,服务器可以通过设置目标设备的设备影子来提供影子服务,且服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是云服务器,但并不局限于此。
219.目标设备可以是手机、网关、智能家电等物联网设备,也可以是任何可以与服务器之间进行数据传输的设备,对此,本技术实施例不做具体限定。
220.其中,在本技术实施例提供的一种数据传输系统中:
221.所述服务器,用于确定以指定对象数组形式存储在所述设备影子中的待下发数据,并向所述目标设备发送用于提示所述目标设备发送增量下发请求的数据下发通知;
222.所述目标设备,用于接收所述数据下发通知,向所述服务器发送所述增量下发请求;其中,所述增量下发请求包括所述目标设备的数据接收缓冲区的第一容量;
223.所述服务器,还用于接收所述增量下发请求;根据所述增量下发请求,在未下发的所述待下发数据中确定第一数据量之和不大于所述第一容量的指定数组;若不存在未被确定为所述指定数组的所述待下发数据,则向所述目标设备下发携带有指定标识的所述指定数组;否则,向所述目标设备下发所述指定数组;其中,所述指定标识用于表征在下发所述指定数组后,所述服务器不存在未下发的所述待下发数据;
224.所述目标设备,还用于接收所述指定数组,并对所述指定数组进行数据处理;若检测所述指定数组携带有所述指定标识,则向所述服务器发送用于表征已接收全部所述待下发数据的下发终止信号,否则,返回所述向所述服务器发送所述增量下发请求的步骤;
225.所述服务器,还用于接收所述下发终止信号。
226.以上可见,应用本技术实施例提供的方案,在服务器将数据下发至目标设备的过程中,服务器可以在确定了以指定对象数组形式存储在设备影子中的待下发数据后,向目标设备发送用于提示目标设备发送增量下发请求的数据下发通知;目标设备在接收到数据下发通知后,向服务器发送增量下发请求,且该增量下发请求包括目标设备的数据接收缓冲区的第一容量;进而,服务器在接收到增量下发请求后,便可以根据该增量下发请求,在未下发的待下发数据中确定第一数据量之和不大于第一容量的指定数组,然后向目标设备下发指定数组;目标设备接收指定数组,对指定数组进行数据处理,然后返回向服务器发送增量下发请求的步骤。如果服务器在根据增量下发请求,在未下发的待下发数据中确定了第一数据量之和不大于第一容量的指定数组后,服务器中不存在未被确定为指定数组的待下发数据了,服务器便可以向目标设备下发携带有指定标识的指定数组,该指定标识用于表征在下发指定数组后,服务器不存在未下发的待下发数据;进而,目标设备在接收到指定数组,并对指定数组进行数据处理后,如果检测到指定数组携带有指定标识,便可以确定已
接收到全部待下发数据,进而,便可以向服务器发送用于表征已接收全部待下发数据的下发终止信号;服务器接收所述下发终止信号,数据下发过程结束。
227.基于此,应用本技术实施例提供的方案,在服务器需要下发到目标设备的待下发数据的数据量大于目标设备的数据接收缓冲区的第一容量时,服务器可以采取增量下发的方式,将待下发数据以指定对象数组的形式分批下发至目标设备,并且,每次下发至目标设备的指定数组的数据量都不大于上述第一容量。这样,由于每次数据均是按照指定对象数组的形式下发的,因此,目标设备可以在接收到指定数组后,即刻对指定数组进行数据处理,以避免占用数据接收缓冲区的空间,进而,便于接收服务器下一次发送的指定数组。因此,本技术实施例提供的方案可以在不增加设备成本的前提下,解决服务器下发数据量大于设备的数据接收缓冲区容量的数据到设备而导致的设备数据接收缓冲区溢出问题。
228.此外,由于目标设备在每次接收到服务器下发的指定数组时,均可以即刻对指定数组进行数据处理,因此,目标设备无需在接收到全部的待下发数据后,对分批接收到的指定数组进行整合,再对整合后的数组进行数据处理,从而,无需增加目标设备的数据处理工作量,可以有效提高目标设备针对待下发数据的处理效率。
229.下面结合附图,对本技术实施例提供的一种数据传输系统进行具体说明。
230.图1为本技术实施例提供的一种数据传输系统的结构示意图,如图1所示,该系统可以包括:服务器101和目标设备102,其中,服务器101中设置有目标设备102的设备影子。
231.服务器101,用于确定以指定对象数组形式存储在设备影子中的待下发数据,并向目标设备发送用于提示目标设备发送增量下发请求的数据下发通知;
232.目标设备102,用于接收数据下发通知,向服务器发送所述增量下发请求;其中,增量下发请求包括所述目标设备的数据接收缓冲区的第一容量;
233.服务器101,还用于接收增量下发请求;根据增量下发请求,在未下发的待下发数据中确定第一数据量之和不大于第一容量的指定数组;若不存在未被确定为指定数组的待下发数据,则向目标设备下发携带有指定标识的指定数组;否则,向目标设备下发指定数组;其中,指定标识用于表征在下发指定数组后,服务器不存在未下发的待下发数据;
234.目标设备102,还用于接收指定数组,并对指定数组进行数据处理;若检测指定数组携带有指定标识,则向服务器发送用于表征已接收全部待下发数据的下发终止信号,否则,返回向服务器发送增量下发请求的步骤;
235.服务器101,还用于接收下发终止信号。
236.如图1所示,本技术实施例中的服务器101和目标设备102之间存在通信连接,其中,通信连接方式可以是5g、wifi、有线等各种通信连接方式,这都是合理的。
237.下面,结合上述数据传输系统中的服务器101和目标设备102的信息交互过程,对图1所示的本技术实施例提供的一种数据传输系统进行具体说明。
238.图2为本技术实施例提供的一种数据传输系统的第一种信息交互示意图,如图2所示,该数据传输系统中的服务器101和目标设备102的信息交互过程可以包括如下步骤s201-s210。
239.s201:服务器101确定以指定对象数组形式存储在设备影子中的待下发数据。
240.服务器101可以确定以指定对象数组的形式存储在设备影子中的待下发数据。
241.可选的,一种具体实现方式中,服务器可以接收用户通过用户终端发送的关于目
标设备的期望属性值,并将该期望属性值以指定对象数组形式存储到设备影子中,作为待下发数据。
242.示例性的,如图3所示,服务器101中的目标设备102的设备影子设置有desired区,该desired区可以存储该目标设备102的desired属性值,也就是期望属性值,用户可以通过用户终端设置并发送关于目标设备102的期望属性值,服务器101可以接收该期望属性值,将该期望属性值以指定对象数组的形式,存储到目标设备102的设备影子的desired区,并将该期望属性值确定为待下发数据。
243.可选的,一种具体实现方式中,上述指定对象数组可以是json对象数组。
244.s202:服务器101向目标设备102发送用于提示目标设备102发送增量下发请求的数据下发通知。
245.在确定了待下发数据后,服务器101便可以向目标设备102发送数据下发通知,该数据下发通知可以用于提示目标设备102向服务器101发送增量下发请求。
246.s203:目标设备102接收数据下发通知。
247.s204:目标设备102向服务器101发送增量下发请求。
248.其中,该增量下发请求包括目标设备102的数据接收缓冲区的第一容量。
249.目标设备102可以接收服务器101发送的数据下发通知,并在接收到数据下发通知后,向服务器101发送增量下发请求,且该增量下发请求携带有目标设备102的数据接收缓冲区的第一容量。
250.s205:服务器101接收增量下发请求,根据增量下发请求,在未下发的待下发数据中确定第一数据量之和不大于第一容量的指定数组。
251.服务器101可以接收目标设备102发送的增量下发请求,然后根据该增量下发请求,在未下发的待下发数据中确定第一数据量之和不大于第一容量的指定数组,也就是说,指定数组的数据量不大于目标设备102的数据接收缓冲区的容量。
252.s206:服务器101中若不存在未被确定为指定数组的待下发数据,则下发携带有指定标识的指定数组;否则,下发所述指定数组。
253.其中,指定标识用于表征在下发该指定数组后,服务器101不存在未下发的待下发数据。
254.服务器101在确定上述指定数组后,可以进一步检测是否存在未被确定为指定数组的待下发数据。
255.其中,如果服务器101检测到不存在未被确定为指定数组的待下发数据,则表明除此次确定的指定数组外,待下发数据中的其他数组都已下发至目标设备102,进而,便可以向目标设备102下发携带有指定标识的指定数组,以告知目标设备102,服务器101在下发完此次确定的指定数组后,将不存在未下发的待下发数据;
256.如果服务器101检测到存在未被确定为指定数组的待下发数据,则表明除此次确定的指定数组外,待下发数据中的仍然存在未下发至目标设备102的待下发数据,进而,目标设备102可以再次发送增量下发请求以请求服务器101中还未下发的待下发数据,因此,服务器101在下发此次确定的指定数组时,可以不在此次确定的指定数组中携带上述指定标识,而直接下发此次确定的指定数组。
257.s207:目标设备102接收指定数组,并对指定数组进行数据处理;
258.目标设备102可以接收服务器101发送的指定数组,并对该指定数组进行数据处理。
259.可选的,一种具体实现方式中,如果目标设备102接收到的指定数组是关于目标设备102的期望属性值,目标设备102对指定数组进行数据处理可以是:目标设备102按照指定数据进行属性设置。基于此,目标设备102可以根据接收到的期望属性值设置自身属性。
260.s208:若指定数组携带有指定标识,目标设备102向服务器101发送用于表征已接收全部待下发数据的下发终止信号。
261.s209:若指定数组未携带有指定标识,目标设备102返回步骤s204。
262.s210:服务器101接收下发终止信号。
263.目标设备102在接收到服务器101下发的指定数组时,可以检测所接收到的指定数组是否携带有上述指定标识,以便于根据检测结果确定是否需要向服务器101再次发送上述增量下发请求。
264.可选的,目标设备102可以同时对所接收到的指定数组进行数据处理,并检测所接收到的指定数组是否携带有上述指定标识;也可以首先对所接收到的指定数组进行数据处理,并在数据处理完成后,再检测所接收到的指定数组是否携带有上述指定标识;还可以首先检测所接收到的指定数组是否携带有上述指定标识,在得到检测结果后,再对所接收到的指定数组进行数据处理;这都是合理的。
265.这样,如果目标设备102检测到接收的指定数组携带有指定标识,则可以确定服务器101已经下发全部待下发数据,从而,可以确定目标设备102已接收到全部待下发数据,因此,目标设备102便可以向服务器101发送用于表征已接收全部待下发数据的下发终止信号。此时,服务器101便可以接收目标设备102发送的下发终止信号。至此,数据下发过程结束。
266.如果目标设备102检测到接收到的指定数组没有携带指定标识,则可以确定服务器101中仍然存在未下发的待下发数据,从而,可以确定目标设备102可以向服务器101发送新的增量下发请求,以请求服务器101中未下发的待下发数据,因此,目标设备102便可以返回步骤s204,继续向服务器101发送增量下发请求,以使得服务器101在再次接收到增量下发请求后,向目标设备102发送指定数组。以此循环,直至目标设备102检测到接收的指定数组携带有指定标识,向服务器101发送下发终止信号,从而,完成数据下发过程。
267.以上可见,应用本技术实施例提供的方案,在服务器需要下发到目标设备的待下发数据的数据量大于目标设备的数据接收缓冲区的第一容量时,服务器可以采取增量下发的方式,将待下发数据以指定对象数组的形式分批下发至目标设备,并且,每次下发至目标设备的指定数组的数据量都不大于上述第一容量。这样,由于每次数据均是按照指定对象数组的形式下发的,因此,目标设备可以在接收到指定数组后,即刻对指定数组进行数据处理,以避免占用数据接收缓冲区的空间,进而,便于接收服务器下一次发送的指定数组。因此,本技术实施例提供的方案可以在不增加设备成本的前提下,解决服务器下发数据量大于设备的数据接收缓冲区容量的数据到设备而导致的设备数据接收缓冲区溢出问题。
268.此外,由于目标设备在每次接收到服务器下发的指定数组时,均可以即刻对指定数组进行数据处理,因此,目标设备无需在接收到全部的待下发数据后,对分批接收到的指定数组进行整合,再对整合后的数组进行数据处理,从而,无需增加目标设备的数据处理工
作量,可以有效提高目标设备针对待下发数据的处理效率。
269.由于待下发数据是以指定对象数组的形式存储在服务器101中的,因此,待下发数据包括多个数组,而每个数组通常可以包括数组标识和数据内容,并且,每个数组的数组标识与该数组唯一对应。可选的,上述数组标识可以是数组的id字段。
270.基于此,可选的,一种具体实现方式中,服务器101向目标设备102发送用于提示目标设备102发送增量下发请求的数据下发通知之前,还可以提取待下发数据中每个数组的数组标识,并基于所提取到的各个数组标识,构建标识列表。
271.相应的,在本具体实现方式中,服务器101根据增量下发请求,在未下发的待下发数据中确定第一数据量之和不大于第一容量的指定数组,便可以包括如下步骤11-14:
272.步骤11:按照标识列表所表征的数组排列顺序,从未下发的待下发数据中的第一个数组开始,依次遍历未下发的待下发数据中的各个数组。
273.步骤12:在每遍历到一个数组时,计算所遍历到的数组的第一数据量之和。
274.步骤13:在第一数据量之和不大于第一容量时,遍历下一数组。
275.步骤14:在第一数据量之和大于第一容量时,停止遍历,并将所遍历到的各个数组中,除最后一个数组之外的其他数组确定为指定数组。
276.在本具体实现方式,服务器101可以将上述标识列表中,各个数组标识的排列顺序,确定为待下发数据中各个数组标识所对应的数组的排列顺序,从而,服务器101在确定指定数组时,可以按照上述标识列表所表征的数组排列顺序,将待下发数据中的每个数组依次确定为指定数组。
277.这样,服务器101在接收到增量下发请求时,便可以按照上述标识列表所表征的数组排列顺序,确定排列在第一位的未下发的待下发数据,从而,服务器便可以按照标识列表所表征的数组排列顺序,从上述未下发的待下发数据中的第一个数组开始,依次遍历未下发的待下发数据中的各个数组。
278.进而,为了使得所确定的指定数组的第一数据量之和不大于上述目标设备102的数据接收缓冲区的第一容量,在遍历到每一个数组时,可以计算当前所遍历到的各个数组的第一数据量之和,并判断所计算得到的第一数据量之和是否不大于上述第一容量。
279.其中,若第一数据量之和不大于上述第一容量,则服务器101可以继续遍历下一数组;
280.若第一数据量之和大于上述第一容量,则说明所遍历到的各个数组不能一次性下发给目标设备102,并且,所遍历到的各个数组中,除最后一个数组之外的其他数组的数据量之和不大于上述第一容量,因此,所遍历到的各个数组中,除最后一个数组之外的其他数组是当前所能下发给目标设备102的数据量最多的数组,这样,便可以停止遍历,并将所遍历到的各个数组中,除最后一个数组之外的其他数组确定为指定数组。
281.示例性的,按照标识列表所表征的数组排列顺序,未下发的待下发数据中数组的排列顺序为:数组1、数组2、数组3和数组4。服务器101从数组1开始,开始进行遍历。当遍历到数组1时,得到数组1的数据量小于第一容量,继续遍历数组2,计算得到数组1和数组2的数据量之和小于第一容量,然后继续遍历数组3,计算得到数组1、数组2和数组3的数据量之和等于第一容量,然后继续遍历数组4,计算得到数组1、数组2、数组3和数组4的数据量之和大于第一容量,于是停止遍历,并将数组1、数组2和数组3确定为指定数组。
282.基于此,应用本技术实施例提供的方案,服务器101可以基于待下发数据中每个数组的数组标识所确定的顺序,确定指定数组,并且所确定的指定数组的数据量不大于目标设备102的数据接收缓冲区的第一容量。
283.可选的,一种具体实现方式中,目标设备102向服务器101发送的增量下发请求中还可以包括所接收到的最后一个数组的指定数组标识,进而,上述步骤11,按照标识列表所表征的数组排列顺序,从未下发的待下发数据中的第一个数组开始,依次遍历未下发的待下发数据中的各个数组,可以包括以下步骤111:
284.步骤111:按照标识列表所表征的数组排列顺序,从指定数组标识的下一个数组标识所属的数组开始,依次遍历待下发数据中的各个数组。
285.其中,可选的,因为服务器101在向目标设备102下发指定数据时,所下发的指定数组是按照上述标识列表所表征的数组排列顺序所确定的,并且,所下发的指定数组中包括各个数组的数组标识,因此,目标设备102在向服务器101发送增量下发请求时,该增量下发请求中可以包括目标设备102所接收到的最后一个数组的指定数组标识。
286.这样,服务器101在接收到目标设备102发送的增量下发请求时,可以确定所接收到的增量下发请求中的指定数组标识,进而,可以确定指定数组标识为所下发的各个数组中最后一个数组的数组标识,从而,服务器101便可以确定在上述标识列表所表征的数组排列顺序中,上述指定数组标识的下一数组标识所对应的数组即为未下发的待下发数据中的第一个数组。因此,服务器101便可以按照标识列表所表征的数组排列顺序,从指定数组标识的下一个数组标识所属的数组开始,依次遍历待下发数据中的各个数组。
287.在一些情况下,目标设备102在向服务器101请求待下发数据时,为了进一步保证服务器101每次所下发的数据的数量不大于上述第一容量,可以限制服务器101每次所下发的数据的个数。
288.基于此,可选的,一种具体实现方式中,目标设备102向服务器101发送的增量下发请求还可以包括指定数量。
289.相应的,在本具体实现方式中,服务器101根据增量下发请求,在未下发的待下发数据中确定第一数据量之和不大于第一容量的指定数组,便可以包括如下步骤21-24:
290.步骤21:遍历未下发的待下发数据中的各个数组;在每遍历到一个数组时,确定所遍历到的数组的第一数据量之和以及所遍历到的数组的数量。
291.步骤22:如果第一数据量之和不大于第一容量,且数量小于指定数量,则遍历下一数组。
292.步骤23:如果第一数据量之和不大于第一容量,且数量等于指定数量,则停止遍历,并将所遍历到的各个数组确定为指定数组。
293.步骤24:如果第一数据量之和大于第一容量,且数量不大于指定数量,则停止遍历,并将所遍历到的各个数组中,除最后一个数组之外的其他数组确定为指定数组。
294.在本具体实现方式中,服务器101在遍历未下发的待下发数据中的各个数组,以确定指定数组时,每遍历到一个数组时,便可以首先确定所遍历到的数组的第一数据量之和以及所遍历到的数组的数量。进而,便可以判断上述第一数据量之和与上述第一容量的数值关系,以及上述数量与上述指定数量的数值关系。
295.其中,如果上述第一数据量之和不大于上述第一容量,且上述数量小于上述指定
数量,则服务器101可以继续遍历下一数组;
296.如果上述第一数据量之和不大于上述第一容量,且上述数量等于上述指定数量,则可以确定此时所遍历到的数组的数量已经满足目标设备102所限制的一次下发的数组的数量,如果继续遍历下一数组,无论所遍历到的数组的第一数据量之和是否大于上述第一容量,所遍历到的数组的数量均将超过目标设备102所限制的一次下发的数组的数量,从而,无法实现下发,因此,服务器101便可以停止遍历,并将所遍历到的各个数组确定为指定数组;
297.如果上述第一数据量之和大于上述第一容量,且上述数量不大于上述指定数量,则可以确定此时所遍历到的数组的数量已经超过上述第一容量,进而,所遍历到的各个数组中,除最后一个数组之外的其他数组的数据量之和不大于上述第一容量,且所遍历到的各个数组中,除最后一个数组之外的其他数组的数量不大于上述指定数量,因此,所遍历到的各个数组中,除最后一个数组之外的其他数组是当前所能下发给目标设备102的数据量最多的数组,这样,便可以停止遍历,并将所遍历到的各个数组中,除最后一个数组之外的其他数组确定为指定数组。
298.示例性的,上述指定数量可以是3,第一容量可以是64k,进而,服务器101遍历未下发的待下发数据中的各个数组,当遍历到第一个数组后,确定第一个数组的数据量为15k,所遍历到的数组的数量为1,15k小于64k,1小于3,服务器101遍历下一数组;当遍历到第二个数组后,确定第一个数组和第二个数组的第一数据量之和为36k,所遍历到的数组的数量为2,36k小于64k,2小于3,服务器101遍历下一数组;当遍历到第三个数组后,确定第一个数组、第二个数组和第三个数组的第一数据量之和为60k,所遍历到的数组的数量为3,60k小于64k,3等于3,也就是第一数据量之和小于第一容量,且数量等于指定数量,这时,服务器101停止遍历,并将遍历到的第一个数组、第二个数组和第三个数组确定为指定数组。
299.为了节省服务器101的存储空间,服务器101在向目标设备102下发指定数组后,通常可以删除所存储的指定数组。
300.可选的,一种具体实现方式中,服务器101还可以删除所存储的指定数组。
301.在本具体实现方式中,服务器101在将所确定的指定数组下发给目标设备102后,服务器101中的已经下发给目标设备102的指定数组对于服务器101而言可以失去应用价值,进而服务器101可以删除已经下发给目标设备102的指定数组,从而释放自身的存储空间。
302.可选的,一种具体实现方式中,目标设备102向服务器101发送的增量下发请求还可以包括目标设备102接收指定数组的目标次数。
303.相应的,在本具体实现方式中,服务器101删除所存储的指定数组,便可以包括如下步骤31-32:
304.步骤31:读取增量下发请求中的目标次数,并计算目标次数与1的差值;若服务器101当前所记录的删除指定数组的指定次数等于该差值,则删除此次接收到增量下发请求之前,最近一次所确定的指定数组,并将指定次数更新为当前所记录的指定次数与1的和值。
305.其中,指定次数的初始值为0。
306.在本具体实现方式中,目标设备102向服务器101发送的增量下发请求中的目标次
数即为目标设备102接收到指定数组的次数,而服务器101当前所记录的指定次数即为服务器删除已下发的指定数组的次数。
307.服务器101在接收到目标设备102发送的增量下发请求时,便可以确定所接收到的增量下发请求中的目标次数,并进一步计算所确定的目标次数与1的差值,进而,确定计算得到的的差值与自身所记录的指定次数的数值关系。
308.其中,如果上述指定次数等于上述差值,则表明服务器101在此次接收到增量下发请求之前,最近一次所确定的指定数组已经发送给目标设备102,且目标设备102已经接收到该指定数组。因此,服务器101便可以删除此次接收到增量下发请求之前,最近一次所确定的指定数组,并更新删除指定数组的次数,也就是将指定次数更新为当前所记录的指定次数与1的和值。
309.也就是说,服务器101可以在接收到目标设备102发送的增量下发请求后,基于该增量下发请求所携带的目标设备102接收指定数组的目标次数,删除上次下发给目标设备102的指定数组。
310.如果上述指定次数不等于上述差值,则可以表明服务器101在此次接收到增量下发请求之前,最近一次所确定的指定数组未成功发送给目标设备102,或者,服务器101在此次接收到增量下发请求之前,还未向目标设备102下发指定数组,例如,在目标设备102第一次向服务器101发送增量下发请求时,所发送的增量下发请求中的目标次数为0,且服务器101所记录的指定次数也0;因此,在上述指定次数不等于上述差值的情况下,服务器101将不进行数据删除操作,并且,服务器101不对所记录的指定次数进行更新。
311.步骤32:在接收到下发终止信号后,删除最后一次所确定的指定数组。
312.下发终止信号是目标设备102在接收到全部待下发数据后向服务器101所发送的信号,也就是说,当服务器101接收到下发终止信号时,可以确定目标设备102已经接收到了全部待下发数据,数据下发过程结束。进而,服务器101便可以在接收到下发终止信号后,删除最后一次所确定的指定数组。
313.基于此,服务器101可以在每次成功将指定数组下发给目标设备102后,删除该下发成功的指定数组,释放该下发成功的指定数组所占用的数据存储空间,以节省数据存储资源。
314.另外,由于服务器101是在每次成功将指定数组下发给目标设备102后,才删除该下发成功的指定数组,因此,如果由于网络异常或者丢包等原因导致目标设备102没有接收指定数组,则服务器101中的该指定数组也不会被删除,进而可以重试尝试下发该指定数组或者等待网络正常后再下发该指定数组。这样,便可以避免由于网络异常或者丢包等原因造成的数据丢失和数据下发失败的情况发生。
315.为了便于理解上述本技术实施例提供的一种数据传输系统中,服务器101向目标设备102下发数据的过程,下面通过一个具体的实例对服务器101向目标设备102下发数据的过程进行举例说明。
316.如图4所示,本技术实施例提供的一种数据传输系统中,服务器101向目标设备102下发数据的过程,可以包括如下步骤401-步骤4015。
317.其中,图4中的设备用于指示目标设备,影子服务用于指示为该设备提供影子服务的服务器。
318.步骤401:用户通过手机app全量设置期望状态值。
319.用户可以通过用户终端,例如手机app,设置设备的期望状态值,影子服务可以接收用户设置的设备的期望状态值。
320.步骤402:影子服务存储期望状态值,数据结构是json对象数组。
321.在接收到用户设置的期望状态值后,影子服务可以将该期望状态值以json对象数组的形式存储到该设备的设备影子中。
322.步骤403:影子服务通知设备来同步期望状态值。
323.影子服务可以提取出期望状态值json对象数组中每个数组的id字段,构成主键id列表,并向设备发送用于提示设备发送增量下发请求的数据下发通知,以通知设备来同步期望状态值。
324.步骤404:设备向影子服务发送增量同步请求:page:0,pagesize:5,lastindex:0,threshold:64k。
325.其中,page用于指示设备接收指定数组的目标次数,pagesize用于指示设备期望获取的数组的最大个数,lastindex用于指示设备所接收到的最后一个数组的id,threshold用于指示设备的数据接收缓冲区容量。
326.进而,page=0代表设备目前接受了0次指定数组,pagesize=5代表设备期望获取的数组个数不超过5个,lastindex=0表示设备所接收到的最后一个数组的id是0,threshold=64k表示设备的数据接收缓冲区容量为64k。
327.步骤405:影子服务确定lastpage不等于page-1,不删除数据,记录lastpage=0。
328.其中,lastpage是影子服务所记录的删除指定数组的次数,且lastpage的初始值为0。
329.由于上述增量同步请求中,page=0,因此,影子服务可以确定page-1不等于lastpage,不删除数据。
330.步骤406:影子服务下发应答报文,包含4条数据,不超过64k,hasnext;1。
331.影子服务读取json对象数组,从数组id=lastindex 1处,也就是从数组id=1处开始遍历数组,在遍历到id=5的数组时,计算得到所遍历到的五个数组的数据量之和大于64k,进而,影子服务将id=1、id=2、id=3和id=4的数组确定为指定数组,将该四个数组下发给设备,由于影子服务中还有未下发至设备的待下发数据,所以下发的应答报文中hasnext=1。
332.步骤407:设备发送增量同步请求,page:1,pagesize:5,lastindex:4,threshold:64k。
333.设备收到影子服务下发的4个数组后,根据该4个数组更新本地状态,并再次向服务器发送增量同步请求:page:1,pagesize:5,lastindex:4,threshold:64k,其中,page=1代表设备目前接收了1次指定数组,pagesize=5代表设备期望获取的数组最大个数为5个,lastindex=4表示设备所接收到的最后一个数组的id是4,threshold=64k表示设备的数据接收缓冲区容量为64k。
334.步骤408:影子服务确定lastpage等于page-1,删除上次已下发对象数组,记录lastpage=1。
335.由于lastpage=0,page=1,page-1=0,lastpage等于page-1,影子服务删除上次
已下发的对象数组,记录lastpage=1。
336.步骤409:影子服务下发应答报文,包含3条数据,不超过64k,hasnext:1。
337.影子服务继续读取json对象数组,从数组id=lastindex 1处,也就是从数组id=5处开始遍历数组,在遍历到id=8的数组时,计算得到所遍历到的四个数组的数据量之和大于64k,进而,影子服务将id=5、id=6和id=7的数组确定为指定数组,将该三个数组下发给设备,由于影子服务中还有未下发至设备的待下发数据,所以下发的应答报文中hasnext=1。
338.步骤4010:重复步骤407、步骤408、步骤409。
339.步骤4011:设备增量同步请求,page:n,pagesize:5,lastindex:m,threshold:64k。
340.设备收到影子服务下发的数组后,根据改下发的数组更新本地状态,并再次向服务器发送增量同步请求page:n,pagesize:5,lastindex:m,threshold:64k,其中,page=n代表设备目前接收了n次指定数组,pagesize=5代表设备期望获取的数组最大个数为5个,lastindex=m表示设备所接收到的最后一个数组的id是m,threshold=64k表示设备的数据接收缓冲区容量为64k。
341.步骤4012:lastpage等于page-1,影子服务删除上次已下发对象数组,记录lastpage=n。
342.影子服务确定lastpage等于page-1,删除上次已下发对象数组,记录lastpage=n。
343.步骤4013:影子服务下发应答报文,包含2条数据,不超过64k,hasnext:0。
344.影子服务继续读取json对象数组,从数组id=lastindex 1处,也就是从数组id=m 1处开始遍历数组,在遍历到id=m 2的数组时,计算得到所遍历到的四个数组的数据量之和小于64k,确定影子服务中不存在未下发至设备的待下发数据,进而,影子服务将id=m 1和id=m 2的数组确定为指定数组,将该两个数组下发给设备,由于影子服务中不存在未下发至设备的待下发数据,所以下发的应答报文中hasnext=0。
345.步骤4014:设备通知影子服务已全部收到,pagesize:0。
346.设备接收影子服务下发的d=m 1和id=m 2的数组,根据该hasnext=0的信号,确定已接收到全部的待下发数据,向影子服务发送下发终止信号pagesize:0,通知影子服务已接收到全部的期望状态值。
347.步骤4015:影子服务删除上次已下发对象数组,流程结束。
348.影子服务接收设备发送的下发终止信号,删除上次已下发指定数组,至此,数据下发流程结束。
349.基于此应用本技术实施例提供的方法,服务器可以获取目标设备的数据接收缓冲区的容量,服务器根据目标设备数据接收缓冲区容量分次下发期望属性值给设备;每次下发的的期望状态值是独立完整的json状态数组,对后续数据没有依赖性,因此,目标设备可以对接收到的部分期望状态值进行处理。从而可以在目标设备接收缓冲区有限的情况下,利用增量下发让目标设备可以接收到大于缓冲区大小的数据,解决数据接收缓冲区溢出问题。
350.在一些情况下,目标设备102中可以存在需要向服务器101上报,以更新服务器101
中目标设备102的设备影子的数据,并且,在目标设备102所需上报的数据较多的情况下,目标设备102无法一次性将全部数据进行上报,从而,目标设备102可以将数据分批存储至数据发送缓冲区,然后,再将存储至数据发送缓冲区的数据上报至服务器101。因此,在目标设备102所需上报的数据的数据量大于上述数据发送缓冲区的第二容量时,目标设备102在分批上报上述数据时,每次上报的数据的数据量不大于上述第二容量。
351.可选的,一种具体实现方式中,如图5所示,该数据传输系统中的服务器101和目标设备102的信息交互过程还可以包括如下步骤s501-s511。
352.s501:目标设备102确定以指定对象数组形式存储的待上报数据。
353.在本具体实现方式中,图5所示的数据传输系统中的服务器101和目标设备102的信息交互过程,是目标设备102将数据上报给服务器101的数据上报过程。在该过程中,目标设备102可以先确定以指定对象数组形式存储的待上报数据。
354.可选的,一种具体实现方式中,如图3所示,目标设备102可以将reported属性值确定为待上报数据并将其发送给服务器101,服务器101可以接收该reported属性值,并将其存储到设备影子的reported区,其中,目标设备的设备影子的reported区可以存储该目标设备上传的reported属性值。
355.可选的,一种具体实现方式中,目标设备可以在每次重启时,确定以指定对象数组形式存储的待上报数据。
356.其中,由于在目标设备102待上报给服务器101的数据中,可能存在部分数据的数据量不大于目标设备102的数据发送缓冲区的第二容量,因此,上报该部分数据给服务器101通常不会导致数据发送缓冲区数据溢出,可以直接将该部分数据上报给服务器101。进而,在确定待上报数据时,可以将数据量大于第二容量的本地数据确定为待上报数据。
357.基于此,可选的,一种具体实现方式中,上述步骤s501,可以包括如下步骤41:
358.步骤41:获取待上报且数据量大于第二容量的本地数据,并将本地数据转换为以指定对象数组形式存储的数据,作为待上报数据。
359.s502:目标设备102发送目标设备的设备标识、待上报数据的指定信息以及由待上报数据中的各个数组的数组标识构成的目标标识数组。
360.其中,指定信息包括:待上报数据的类型,和/或,待上报数据的版本号。
361.在一些情况下,服务器101中可能已经存储有与上述待上报数据相同的数据,因此,为了不重复进行上报,节省服务器101的数据存储空间,目标设备102在确定待上报数据后,还可以进一步确定目标设备102的设备标识、待上报数据的指定信息以及由待上报数据中的各个数组的数组标识构成的目标标识数组,并且,目标设备102可以向服务器101发送所确定的目标设备102的设备标识、待上报数据的指定信息以及由待上报数据中的各个数组的数组标识构成的目标标识数组。
362.其中,目标设备102的设备标识与目标设备102唯一对应,可选的,上述设备标识可以为设备序列号。
363.s503:服务器101接收设备标识、指定信息和目标标识数组。
364.s504:若所记录的设备标识对应的数据信息与指定信息不一致,和/或,所记录的设备标识对应的标识数组与目标标识数组不一致,服务器101向目标设备102发送用于提示目标设备102上报待上报数据的数据上报通知。
365.服务器101可以接收目标设备102发送的上述设备标识、指定信息和目标标识数组,进而,服务器101可以在自身所记录的数据中,查找上述设备标识对应的数据信息和标识数组,并进一步判断所记录的设备标识对应的数据信息与指定信息是否一致,以及,所记录的设备标识对应的标识数组与目标标识数组是否一致。
366.其中,可选的,若所记录的设备标识对应的数据信息与指定信息一致,且所记录的设备标识对应的标识数组与目标标识数组一致,则服务器101可以确定自身已经存储有上述待上报数据,从而,目标设备102可以无需再次上报上述待上报数据。这样,服务器101可以向目标设备102发送用于指示无需进行待上报数据上报的提示信息,从而,目标设备102在接收到上述提示信息后,可以确定无需向服务器101上报上述待上报数据,至此,数据上报过程结束。
367.相应的,若判断出所记录的设备标识对应的数据信息与指定信息不一致,和/或,所记录的设备标识对应的标识数组与目标标识数组不一致,即若判断出存在以下情况中的任一一种:
368.所记录的设备标识对应的数据信息与指定信息不一致、所记录的设备标识对应的标识数组与目标标识数组不一致,以及,所记录的设备标识对应的数据信息与指定信息不一致且所记录的设备标识对应的标识数组与目标标识数组不一致,则服务器101可以确定自身未存储有上述待上报数据,从而目标设备102可以向服务器101上报上述待上报数据。这样,服务器101便可以向目标设备102发送用于提示目标设备102上报上述待上报数据的数据上报通知,以通知目标设备102进行数据上报。
369.s505:目标设备102接收数据上报通知。
370.s506:目标设备102在未上报的待上报数据中确定第二数据量之和不大于目标设备的数据发送缓冲区的第二容量的目标数组。
371.s507:目标设备102向服务器101上报目标数组。
372.目标设备102可以接收服务器101发送的数据上报通知,并在接收到数据上报通知后,在未上报的待上报数据中确定第二数据量之和不大于目标设备102的数据发送缓冲区的第二容量的目标数组,然后向服务器101上报该目标数组。
373.s508:服务器101接收目标数组,并将目标数组存储到目标设备102的设备影子中。
374.s509:服务器101向目标设备102下发第一应答消息。
375.服务器101可以接收目标设备102发送的目标数组,并将目标数组存储到目标设备102的设备影子中,进而,在接收到目标设备102发送的目标数组后,服务器101可以向目标设备102下发第一应答消息。
376.其中,可选的,服务器101可以将目标数组存储到目标设备102的设备影子中,并向目标设备102下发第一应答消息;也可以先将目标数组存储到目标设备102的设备影子中,再向目标设备102下发第一应答消息;还可以先向目标设备102下发第一应答消息,再将目标数组存储到目标设备102的设备影子中,这都是合理的。
377.s510:目标设备102接收第一应答消息。
378.s511:目标设备102若检测到存在未上报的待上报数据,则返回步骤s506。
379.目标设备102在接收到服务器101下发的第一应答消息时,可以确定服务器101已经接收到目标设备102上一次上报的目标数组,进而,目标设备102便可以继续检测是否存
在未上报的待上报数据。
380.其中,如果不存在未上报的待上报数据,则目标设备102可以确定待上报数据已经全部上报至服务器101,至此,该数据上报过程结束。
381.如果存在未上报的待上报数据,则返回步骤s506,继续在未上报的待上报数据中确定第二数据量之和不大于上述第二容量的目标数组,并向服务器101上报所确定的目标数组,依次循环,直至在接收到服务器101发送的第一应答消息时,检测到不存在未上报的待上报数据,从而,该数据上报过程结束。
382.可选的,一种具体实现方式中,目标设备102,还可以在第一次上报目标数据时,向服务器101上报用于表征第一次进行数据上报的第一信号;
383.若确定目标数组后,检测到存在未确定为目标数组的待上报数据,则在向服务器101上报目标数据时,向服务器101上报用于表征数据上报中的第二信号;
384.若确定目标数组后,检测到不存在未确定为目标数组的待上报数据,则在向服务器101上报目标数据时,向服务器101上报用于表征最后一次进行数据上报的第三信号。
385.服务器101,还可以接收目标设备发送的第一信号、第二信号或第三信号。
386.基于此,服务器101可以在每次接收目标数据时,获取到目标设备102的数据上报进程。
387.基于此,应用本技术实施例提供的方案,在目标设备需要上报数据量大于设备的数据发送缓冲区容量的数据到服务器时,目标设备可以采取增量上报的方式,每次上报至服务器的目标数组的数据量都不大于目标设备的数据发送缓冲区的第一容量,分多次将待上报数据上报给服务器,完成数据上报过程。因此,本技术实施例提供的方案可以在不增加设备的数据发送缓冲区容量,也就是在不增加设备成本的前提下,解决目标设备上报数据量大于设备的数据发送缓冲区容量的数据到服务器而导致的设备数据发送缓冲区溢出问题。
388.为了便于理解上述本技术实施例提供的一种数据传输系统中,目标设备102向服务器101上报数据的过程,下面通过一个具体的实例对目标设备102向服务器101上报数据的过程进行举例说明。
389.如图6所示,本技术实施例提供的一种数据传输系统中,目标设备102向服务器101上报数据的过程,可以包括如下步骤601-步骤6012。
390.步骤601:设备重启,读取本地状态,包括json对象数组状态。
391.设备重启后,可以上报本地状态到影子服务,以使设备影子中的数据与设备中的数据保持同步。在上报本地状态到影子服务的过程中,设备可以先读取本地状态,确定要上报的待上报数据,其中上述待上报数据以json对象数组的形式存储在设备中。
392.步骤602:设备向影子服务上报基础信息,包括序列号、version、主键id数组。
393.设备在确定了要上报的待上报数据后,可以向影子服务上报设备和待上报数据的基础信息,包括设备的序列号,待上报数据的版本号,也就是version,还有由待上报数据中每个数组的id字段构成的主键id数组。
394.步骤603:影子服务根据设备序列号查询自身所记录的该设备序列号所对应的设备的数据,判断设备上报的version和id数组是否和所记录的该设备的version和id数组完全一致,若不一致则通知设备上报待上报数据。
395.步骤604:影子服务向设备发送应答报文,告知设备需要上报待上报数据。
396.步骤605:设备向影子服务增量上报待上报数据,optype:0。
397.其中,optype=0表示设备是第一次上报待上报数据,设备可以根据自身数据发送缓冲区的容量来确定每次增量上报的待上报数据,也就是说,如果2个待上报数组的数据量之和小于设备的数据发送缓冲区的容量,3个待上报数组的数据量之和大于设备的数据发送缓冲区的容量,则设备会发送2个数组到影子服务。
398.步骤606:影子服务保存设备增量上报的数据。
399.步骤607:影子服务下发应答报文,ack。
400.影子服务在接收到设备增量上报的数据后,向设备下发应答报文,通知设备已经接收到设备上报的数据。
401.步骤608:设备增量上报,optype:1,表示上报中。
402.设备在接收到影子服务下发的应答报文后,继续向影子服务增量上报数据。
403.步骤609:影子服务收到后,返回应答报文,ack。
404.影子服务在接收到设备增量上报的数据后,向设备下发应答报文,通知设备已经接收到设备上报的数据。
405.步骤6010:重复步骤608和步骤609。
406.步骤6011:设备增量上报,optype:2,表示上报结束,这是最后一个请求。
407.设备继续向影子服务上报待上报数据,且上报的待上报数据携带有optype:2标识,该标识用于指示该次数据上报是最后一次,在该次数据上报完成后,设备中的待上报数据均上报至影子服务。
408.步骤6012:影子服务收到携带有optype:2标识的待上报数据后,向设备下发应答报文,ack。
409.至此,设备向影子服务进行数据上报的过程结束。
410.在一些情况下,目标设备102在自身运行状态发生变化时,可以更改自身的相关数据,从而,目标设备102可以向服务器101上报所更新的数据,以更新服务器101中目标设备102的设备影子。
411.可选的,一种具体实现方式中,如图7所示,该数据传输系统中的服务器101和目标设备102的信息交互过程还可以包括如下步骤s701-s705。
412.s701:目标设备102在检测到运行状态变化时,确定存在数据更新的指定数据。
413.s702:目标设备102向服务器101上报指定数据和用于表征进行数据更新的第四信号。
414.其中,指定数据的数据量不大于目标设备102的数据发送缓冲区的第二容量。
415.目标设备102可以在检测到自身的运行状态发生变化时,可以确定存在数据更新的指定数据,然后向服务器101上报上述指定数据和用于表征进行数据更新的第四信号。
416.示例性的,上述运行状态变化可以是以json对象数组中的部分数组发生变化,其中,目标设备102的运行状态数据以json对象数组的形式存储在目标设备102中,该部分数组的数据量之和不大于目标设备102的数据发送缓冲区的第二容量。
417.s703:服务器101接收指定数据和第四信号,利用指定数据对目标设备102的设备影子所存储的数据进行数据更新。
418.s704:服务器101向目标设备102发送第二应答消息。
419.s705:目标设备102接收第二应答消息。
420.服务器101可以接收目标设备102上报的指定数据和第四信号,进而,在接收到第四信号时,服务器101可以确定所接收到的指定数据是用于对目标设备102的设备影子所存储的数据进行数据更新的数据,从而,服务器101便可以利用指定数据对目标设备102的设备影子所存储的数据进行数据更新,并在更新完成后向目标设备102发送第二应答消息。
421.目标设备102接收服务器101发送的第二应答消息,进而,目标设备102可以确定服务器101已完成利用指定数据对目标设备102的设备影子所存储的数据的更新。
422.基于此,目标设备102在运行状态发生变化时,可以将存在数据更新的指定数据上报给服务器101,从而实现目标设备102运行过程中的目标设备102和服务器101之间的数据同步。另外,由于可以只将存在数据更新的指定数据上报给服务器101,而不是将发生变化的运行状态进行全量上报,还可以节省数据传输资源。
423.为了便于理解上述本技术实施例提供的一种数据传输系统中,目标设备102在运行状态发生变化时向服务器101上报数据的过程,下面通过一个具体的实例对目标设备102在运行状态发生变化时向服务器101上报数据的过程进行举例说明。
424.如图8所示,本技术实施例提供的一种数据传输系统中,目标设备102向服务器101上报数据的过程,可以包括如下步骤801-步骤804。
425.步骤801:设备运行中检测到自身状态发生变化。
426.其中,可以是检测到自身的部分状态发生变化。
427.设备在运行过程中检测到自身状态发生变化时,可以将发生变化的数据确定为待上报数据。
428.步骤802:设备上报发生变化的部分状态,optype:3。
429.由于上述确定的待上报数据的数据量不大于设备的数据接收缓冲区的容量,设备在上报上报发生变化的部分状态时,可以携带有optype:3标识,其中,该optype=3标识表示该发生变化的部分状态可一次上报给影子服务,不需要分多次进行上报。
430.步骤803:影子服务保存设备上报的数据。
431.影子服务可以接收并保存设备上报的发生变化的部分状态。
432.步骤804:影子服务向设备下发应答报文,ack。
433.影子服务在保存完设备上报的发生变化的部分状态后,可以向设备下发应答报文ack,以告知设备该次数据上报结束。
434.如图9所示,本技术实施例还提供了一种数据传输方法,应用于数据传输系统中的服务器,数据传输系统还包括目标设备,服务器设置有目标设备的设备影子;该方法包括如下步骤s901-s904:
435.s901:确定以指定对象数组形式存储在设备影子中的待下发数据,并向目标设备发送用于提示目标设备发送增量下发请求的数据下发通知,以使目标设备在接收到数据下发通知后,向服务器发送增量下发请求。
436.其中,增量下发请求包括目标设备的数据接收缓冲区的第一容量。
437.s902:接收增量下发请求,并根据增量下发请求,在未下发的待下发数据中确定第一数据量之和不大于第一容量的指定数组。
438.s903:若不存在未被确定为指定数组的待下发数组,则向目标设备下发携带有指定标识的指定数组,以使目标设备接收指定数组,对指定数组进行数据处理,并在检测到指定数组携带有指定标识时,向服务器发送用于表征已接收全部待下发数据的下发终止信号;若存在未被确定为指定数组的待下发数组,则向目标设备下发指定数组,以使目标设备接收指定数组,对指定数组进行数据处理,并在检测到指定数组携带未有指定标识时,向服务器发送新的增量下发请求。
439.其中,指定标识用于表征在下发指定数组后,服务器不存在未下发的待下发数据。
440.s904:接收下发终止信号;或者,接收新的增量下发请求,并返回根据增量下发请求,在未下发的待下发数据中确定第一数据量之和不大于第一容量的指定数组的步骤。
441.基于此,应用本技术实施例提供的方案,在服务器需要下发到目标设备的待下发数据的数据量大于目标设备的数据接收缓冲区的第一容量时,服务器可以采取增量下发的方式,将待下发数据以指定对象数组的形式分批下发至目标设备,并且,每次下发至目标设备的指定数组的数据量都不大于上述第一容量。这样,由于每次数据均是按照指定对象数组的形式下发的,因此,目标设备可以在接收到指定数组后,即刻对指定数组进行数据处理,以避免占用数据接收缓冲区的空间,进而,便于接收服务器下一次发送的指定数组。因此,本技术实施例提供的方案可以在不增加设备成本的前提下,解决服务器下发数据量大于设备的数据接收缓冲区容量的数据到设备而导致的设备数据接收缓冲区溢出问题。
442.此外,由于目标设备在每次接收到服务器下发的指定数组时,均可以即刻对指定数组进行数据处理,因此,目标设备无需在接收到全部的待下发数据后,对分批接收到的指定数组进行整合,再对整合后的数组进行数据处理,从而,无需增加目标设备的数据处理工作量,可以有效提高目标设备针对待下发数据的处理效率。
443.可选的,一种具体实现方式中,所述方法还包括:
444.在所述向所述目标设备发送用于提示所述目标设备发送增量下发请求的数据下发通知之前,提取所述待下发数据中每个数组的数组标识,并基于所提取到的各个数组标识,构建标识列表;
445.所述根据所述增量下发请求,在未下发的所述待下发数据中确定第一数据量之和不大于所述第一容量的指定数组,包括:
446.按照所述标识列表所表征的数组排列顺序,从未下发的所述待下发数据中的第一个数组开始,依次遍历未下发的所述待下发数据中的各个数组;
447.在每遍历到一个数组时,计算所遍历到的数组的第一数据量之和;
448.在所述第一数据量之和不大于所述第一容量时,遍历下一数组;
449.在所述第一数据量之和大于所述第一容量时,停止遍历,并将所遍历到的各个数组中,除最后一个数组之外的其他数组确定为指定数组。
450.可选的,一种具体实现方式中,所述增量下发请求还包括:所接收到的最后一个数组的指定数组标识;
451.所述按照所述标识列表所表征的数组排列顺序,从未下发的所述待下发数据中的第一个数组开始,依次遍历未下发的所述待下发数据中的各个数组,包括:
452.按照所述标识列表所表征的数组排列顺序,从所述指定数组标识的下一个数组标识所属的数组开始,依次遍历所述待下发数据中的各个数组。
453.可选的,一种具体实现方式中,所述增量下发请求还包括:指定数量;
454.所述根据所述增量下发请求,在未下发的所述待下发数据中确定第一数据量之和不大于所述第一容量的指定数组,包括:
455.遍历未下发的所述待下发数据中的各个数组;在每遍历到一个数组时,确定所遍历到的数组的第一数据量之和以及所遍历到的数组的数量;
456.如果所述第一数据量之和不大于所述第一容量,且所述数量小于所述指定数量,则遍历下一数组;
457.如果所述第一数据量之和不大于所述第一容量,且所述数量等于所述指定数量,则停止遍历,并将所遍历到的各个数组确定为指定数组;
458.如果所述第一数据量之和大于所述第一容量,且所述数量不大于所述指定数量,则停止遍历,并将所遍历到的各个数组中,除最后一个数组之外的其他数组确定为指定数组。
459.可选的,一种具体实现方式中,所述方法还包括:
460.删除所存储的所述指定数组。
461.可选的,一种具体实现方式中,所述增量下发请求还包括:所述目标设备接收所述指定数组的目标次数;
462.所述删除所存储的所述指定数组,包括:
463.读取所述增量下发请求中的所述目标次数,并计算所述目标次数与1的差值;若所述服务器当前所记录的删除所述指定数组的指定次数等于所述差值,则删除此次接收到所述增量下发请求之前,最近一次所确定的所述指定数组,并将所述指定次数更新为当前所记录的指定次数与1的和值;其中,所述指定次数的初始值为0;
464.在接收到所述下发终止信号后,删除最后一次所确定的所述指定数组。
465.可选的,一种具体实现方式中,所述确定以指定对象数组形式存储在所述设备影子中的待下发数据,包括;
466.接收用户通过用户终端发送的关于所述目标设备的期望属性值,并将所述期望属性值以指定对象数组形式存储到所述设备影子中,作为待下发数据。
467.可选的,一种具体实现方式中,所述方法还包括:
468.接收所述目标设备在确定以所述指定对象数组形式存储的待上报数据后,发送的所述目标设备的设备标识、所述待上报数据的指定信息以及由所述待上报数据中的各个数组的数组标识构成的目标标识数组;其中,所述指定信息包括:所述待上报数据的类型,和/或,所述待上报数据的版本号;
469.若所记录的所述设备标识对应的数据信息与所述指定信息不一致,和/或,所记录的所述设备标识对应的标识数组与所述目标标识数组不一致,则向所述目标设备发送用于提示所述目标设备上报所述待上报数据的数据上报通知,以使所述目标设备在接收到所述数据上报通知后,在未上报的所述待上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组,并向所述服务器上报所述目标数组;
470.接收所述目标数组,将所述目标数组存储到所述目标设备的设备影子中并向所述服务器下发第一应答消息,以使所述目标设备接收所述第一应答消息;
471.接收所述目标设备在检测到存在未上报的所述待上报数据时,在未上报的所述待
上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组,并返回所述接收所述目标数组的步骤。
472.可选的,一种具体实现方式中,所述确定以所述指定对象数组形式存储的待上报数据,包括:
473.获取待上报且数据量大于所述第二容量的本地数据,并将所述本地数据转换为以指定对象数组形式存储的数据,作为待上报数据。
474.可选的,一种具体实现方式中,
475.接收所述目标设备发送的第一信号、第二信号或第三信号;
476.其中,所述第一信号为:所述目标设备在第一次上报所述目标数据时,向所述服务器上报用于表征第一次进行数据上报的信号;所述第二信号为:所述目标设备在确定所述目标数组后,检测到存在未确定为所述目标数组的所述待上报数据时,在向所述服务器上报所述目标数据时,向所述服务器上报用于表征数据上报中的信号;所述第三信号为:所述目标设备在确定所述目标数组后,检测到不存在未确定为所述目标数组的所述待上报数据时,向所述服务器上报所述目标数据时,向所述服务器上报用于表征最后一次进行数据上报的信号。
477.可选的,一种具体实现方式中,
478.接收所述目标设备发送的指定数据和用于表征进行数据更新的第四信号;其中,所述指定数据是所述目标设备在检测到运行状态变化时,确定的存在数据更新的指定数据,所述指定数据的数据量不大于所述目标设备的数据发送缓冲区的第二容量;
479.利用所述指定数据对所述目标设备的设备影子所存储的数据进行数据更新,并向所述目标设备发送第二应答消息,以使所述目标设备接收所述第二应答消息。
480.如图10所示,本技术实施例还提供了一种数据传输方法,应用于数据传输系统中的目标设备,数据传输系统还包括服务器,服务器设置有目标设备的设备影子;该方法包括如下步骤s1001-s1003:
481.步骤s1001:接收数据下发通知。
482.其中,数据下发通知是服务器在确定以指定对象数组形式存储在设备影子中的待下发数据后,向目标设备发送的用于提示目标设备发送增量下发请求的通知。
483.步骤s1002:向服务器发送增量下发请求,以使服务器在接收增量下发请求后,根据增量下发请求,在未下发的待下发数据中确定第一数据量之和不大于第一容量的指定数组,并且,若不存在未被确定为指定数组的待下发数组,则向目标设备下发携带有指定标识的指定数组;否则,向目标设备下发指定数组。
484.其中,增量下发请求包括目标设备的数据接收缓冲区的第一容量,指定标识用于表征在下发指定数组后,服务器不存在未下发的待下发数据。
485.步骤s1003:接收指定数组,并对指定数据进行数据处理;若检测指定数组携带有指定标识,则向服务器发送用于表征已接收全部待下发数据的下发终止信号,以使服务器接收下发终止信号;否则,返回向服务器发送增量下发请求的步骤。
486.基于此,应用本技术实施例提供的方案,在服务器需要下发到目标设备的待下发数据的数据量大于目标设备的数据接收缓冲区的第一容量时,服务器可以采取增量下发的方式,将待下发数据以指定对象数组的形式分批下发至目标设备,并且,每次下发至目标设
备的指定数组的数据量都不大于上述第一容量。这样,由于每次数据均是按照指定对象数组的形式下发的,因此,目标设备可以在接收到指定数组后,即刻对指定数组进行数据处理,以避免占用数据接收缓冲区的空间,进而,便于接收服务器下一次发送的指定数组。因此,本技术实施例提供的方案可以在不增加设备成本的前提下,解决服务器下发数据量大于设备的数据接收缓冲区容量的数据到设备而导致的设备数据接收缓冲区溢出问题。
487.此外,由于目标设备在每次接收到服务器下发的指定数组时,均可以即刻对指定数组进行数据处理,因此,目标设备无需在接收到全部的待下发数据后,对分批接收到的指定数组进行整合,再对整合后的数组进行数据处理,从而,无需增加目标设备的数据处理工作量,可以有效提高目标设备针对待下发数据的处理效率。
488.可选的,一种具体实现方式中,所述待下发数据包括:用户通过用户终端发送的关于所述目标设备的期望属性值;
489.所述对所述指定数组进行数据处理,包括:
490.所述按照所述指定数据进行属性设置。
491.可选的,一种具体实现方式中,所述方法还包括:
492.确定以所述指定对象数组形式存储的待上报数据,并向所述服务器发送所述目标设备的设备标识、所述待上报数据的指定信息以及由所述待上报数据中的各个数组的数组标识构成的目标标识数组,以使所述服务器在接收到所述设备标识、所述指定信息和所述目标标识数组后,若所记录的所述设备标识对应的数据信息与所述指定信息不一致,和/或,所记录的所述设备标识对应的标识数组与所述目标标识数组不一致,则向所述目标设备发送用于提示所述目标设备上报所述待上报数据的数据上报通知;其中,所述指定信息包括:所述待上报数据的类型,和/或,所述待上报数据的版本号;
493.接收所述数据上报通知;在未上报的所述待上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组,并向所述服务器上报所述目标数组,以使所述服务器在接收到所述目标数组后,将所述目标数组存储到所述目标设备的设备影子中并向所述服务器下发第一应答消息;
494.接收所述第一应答消息;若检测到存在未上报的所述待上报数据,则返回所述在未上报的所述待上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组的步骤。
495.可选的,一种具体实现方式中,所述确定以所述指定对象数组形式存储的待上报数据,包括:
496.获取待上报且数据量大于所述第二容量的本地数据,并将所述本地数据转换为以指定对象数组形式存储的数据,作为待上报数据。
497.可选的,一种具体实现方式中,所述方法还包括:
498.在第一次上报所述目标数据时,向所述服务器上报用于表征第一次进行数据上报的第一信号;
499.若确定所述目标数组后,检测到存在未确定为所述目标数组的所述待上报数据,则在向所述服务器上报所述目标数据时,向所述服务器上报用于表征数据上报中的第二信号;
500.若确定所述目标数组后,检测到不存在未确定为所述目标数组的所述待上报数
据,则在向所述服务器上报所述目标数据时,向所述服务器上报用于表征最后一次进行数据上报的第三信号。
501.可选的,一种具体实现方式中,所述方法还包括:
502.在检测到运行状态变化时,确定存在数据更新的指定数据;其中,所述指定数据的数据量不大于所述目标设备的数据发送缓冲区的第二容量;
503.向所述服务器上报所述指定数据和用于表征进行数据更新的第四信号,以使所述服务器在接收到所述指定数据和所述第四信号后,利用所述指定数据对所述目标设备的设备影子所存储的数据进行数据更新,并向所述目标设备发送第二应答消息;
504.接收所述第二应答消息。
505.如图11所示,本技术实施例还提供了一种数据传输装置,应用于数据传输系统中的服务器,数据传输系统还包括目标设备,服务器设置有目标设备的设备影子。图11为本技术实施例提供的一种数据传输装置的结构示意图,如图11所示,该数据传输装置可以包括如下模块:
506.数据确定模块1101:用于确定以指定对象数组形式存储在所述设备影子中的待下发数据,并向所述目标设备发送用于提示所述目标设备发送增量下发请求的数据下发通知,以使所述目标设备在接收到所述数据下发通知后,向所述服务器发送所述增量下发请求;其中,所述增量下发请求包括所述目标设备的数据接收缓冲区的第一容量;
507.请求接收模块1102,用于接收所述增量下发请求,并根据所述增量下发请求,在未下发的所述待下发数据中确定第一数据量之和不大于所述第一容量的指定数组;
508.数组下发模块1103,用于在不存在未被确定为所述指定数组的所述待下发数组时,向所述目标设备下发携带有指定标识的所述指定数组,以使所述目标设备接收所述指定数组,对所述指定数组进行数据处理,并在检测到所述指定数组携带有所述指定标识时,向所述服务器发送用于表征已接收全部所述待下发数据的下发终止信号;其中,所述指定标识用于表征在下发所述指定数组后,所述服务器不存在未下发的所述待下发数据;在存在未被确定为所述指定数组的所述待下发数组时,向所述目标设备下发所述指定数组,以使所述目标设备接收所述指定数组,对所述指定数组进行数据处理,并在检测到所述指定数组携带未有所述指定标识时,向所述服务器发送新的增量下发请求;
509.信号接收模块1104,用于接收所述下发终止信号;或者,接收所述新的增量下发请求,并返回根据所述增量下发请求,在未下发的所述待下发数据中确定第一数据量之和不大于所述第一容量的指定数组的步骤。
510.基于此,应用本技术实施例提供的方案,在服务器需要下发到目标设备的待下发数据的数据量大于目标设备的数据接收缓冲区的第一容量时,服务器可以采取增量下发的方式,将待下发数据以指定对象数组的形式分批下发至目标设备,并且,每次下发至目标设备的指定数组的数据量都不大于上述第一容量。这样,由于每次数据均是按照指定对象数组的形式下发的,因此,目标设备可以在接收到指定数组后,即刻对指定数组进行数据处理,以避免占用数据接收缓冲区的空间,进而,便于接收服务器下一次发送的指定数组。因此,本技术实施例提供的方案可以在不增加设备成本的前提下,解决服务器下发数据量大于设备的数据接收缓冲区容量的数据到设备而导致的设备数据接收缓冲区溢出问题。
511.此外,由于目标设备在每次接收到服务器下发的指定数组时,均可以即刻对指定
数组进行数据处理,因此,目标设备无需在接收到全部的待下发数据后,对分批接收到的指定数组进行整合,再对整合后的数组进行数据处理,从而,无需增加目标设备的数据处理工作量,可以有效提高目标设备针对待下发数据的处理效率。
512.可选的,一种具体实现方式中,所述装置还包括:
513.标识提取模块,用于在所述向所述目标设备发送用于提示所述目标设备发送增量下发请求的数据下发通知之前,提取所述待下发数据中每个数组的数组标识,并基于所提取到的各个数组标识,构建标识列表;
514.所述请求接收模块具体用于:
515.按照所述标识列表所表征的数组排列顺序,从未下发的所述待下发数据中的第一个数组开始,依次遍历未下发的所述待下发数据中的各个数组;
516.在每遍历到一个数组时,计算所遍历到的数组的第一数据量之和;
517.在所述第一数据量之和不大于所述第一容量时,遍历下一数组;
518.在所述第一数据量之和大于所述第一容量时,停止遍历,并将所遍历到的各个数组中,除最后一个数组之外的其他数组确定为指定数组。
519.可选的,一种具体实现方式中,所述增量下发请求还包括:所接收到的最后一个数组的指定数组标识;
520.所述请求接收模块具体用于:
521.按照所述标识列表所表征的数组排列顺序,从所述指定数组标识的下一个数组标识所属的数组开始,依次遍历所述待下发数据中的各个数组。
522.可选的,一种具体实现方式中,所述增量下发请求还包括:指定数量;
523.所述请求接收模块具体用于:
524.遍历未下发的所述待下发数据中的各个数组;在每遍历到一个数组时,确定所遍历到的数组的第一数据量之和以及所遍历到的数组的数量;
525.如果所述第一数据量之和不大于所述第一容量,且所述数量小于所述指定数量,则遍历下一数组;
526.如果所述第一数据量之和不大于所述第一容量,且所述数量等于所述指定数量,则停止遍历,并将所遍历到的各个数组确定为指定数组;
527.如果所述第一数据量之和大于所述第一容量,且所述数量不大于所述指定数量,则停止遍历,并将所遍历到的各个数组中,除最后一个数组之外的其他数组确定为指定数组。
528.可选的,一种具体实现方式中,所述装置还包括:
529.数组删除模块:用于删除所存储的所述指定数组。
530.可选的,一种具体实现方式中,所述增量下发请求还包括:所述目标设备接收所述指定数组的目标次数;
531.所述数组删除模块,具体用于:
532.读取所述增量下发请求中的所述目标次数,并计算所述目标次数与1的差值;若所述服务器当前所记录的删除所述指定数组的指定次数等于所述差值,则删除此次接收到所述增量下发请求之前,最近一次所确定的所述指定数组,并将所述指定次数更新为当前所记录的指定次数与1的和值;其中,所述指定次数的初始值为0;
533.在接收到所述下发终止信号后,删除最后一次所确定的所述指定数组。
534.可选的,一种具体实现方式中,所述数据确定模块具体用于:
535.接收用户通过用户终端发送的关于所述目标设备的期望属性值,并将所述期望属性值以指定对象数组形式存储到所述设备影子中,作为待下发数据。
536.可选的,一种具体实现方式中,所述装置还包括:
537.标识接收模块:用于接收所述目标设备在确定以所述指定对象数组形式存储的待上报数据后,发送的所述目标设备的设备标识、所述待上报数据的指定信息以及由所述待上报数据中的各个数组的数组标识构成的目标标识数组;其中,所述指定信息包括:所述待上报数据的类型,和/或,所述待上报数据的版本号;
538.通知上报模块:用于在所记录的所述设备标识对应的数据信息与所述指定信息不一致,和/或,所记录的所述设备标识对应的标识数组与所述目标标识数组不一致时,向所述目标设备发送用于提示所述目标设备上报所述待上报数据的数据上报通知,以使所述目标设备在接收到所述数据上报通知后,在未上报的所述待上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组,并向所述服务器上报所述目标数组;
539.目标数组接收模块,用于接收所述目标数组,将所述目标数组存储到所述目标设备的设备影子中并向所述服务器下发第一应答消息,以使所述目标设备接收所述第一应答消息;
540.目标数组确定模块,用于接收所述目标设备在检测到存在未上报的所述待上报数据时,在未上报的所述待上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组,并返回所述接收所述目标数组的步骤。
541.可选的,一种具体实现方式中,所述确定以所述指定对象数组形式存储的待上报数据,包括:
542.获取待上报且数据量大于所述第二容量的本地数据,并将所述本地数据转换为以指定对象数组形式存储的数据,作为待上报数据。
543.可选的,一种具体实现方式中,所述装置还包括:
544.第二信号接收模块,用于接收所述目标设备发送的第一信号、第二信号或第三信号;
545.其中,所述第一信号为:所述目标设备在第一次上报所述目标数据时,向所述服务器上报用于表征第一次进行数据上报的信号;所述第二信号为:所述目标设备在确定所述目标数组后,检测到存在未确定为所述目标数组的所述待上报数据时,在向所述服务器上报所述目标数据时,向所述服务器上报用于表征数据上报中的信号;所述第三信号为:所述目标设备在确定所述目标数组后,检测到不存在未确定为所述目标数组的所述待上报数据时,向所述服务器上报所述目标数据时,向所述服务器上报用于表征最后一次进行数据上报的信号。
546.可选的,一种具体实现方式中,所述装置还包括:
547.数据接收模块:用于接收所述目标设备发送的指定数据和用于表征进行数据更新的第四信号;其中,所述指定数据是所述目标设备在检测到运行状态变化时,确定的存在数据更新的指定数据,所述指定数据的数据量不大于所述目标设备的数据发送缓冲区的第二
容量;
548.数据更新模块,用于利用所述指定数据对所述目标设备的设备影子所存储的数据进行数据更新,并向所述目标设备发送第二应答消息,以使所述目标设备接收所述第二应答消息。
549.如图12所示,本技术实施例还提供了一种数据传输装置,应用于数据传输系统中的目标设备,数据传输系统还包括服务器,服务器设置有目标设备的设备影子。图12为本技术实施例提供的一种数据传输装置的结构示意图,如图12所示,该数据传输装置可以包括如下模块:
550.通知接收模块1201:用于接收数据下发通知。
551.其中,数据下发通知是服务器在确定以指定对象数组形式存储在设备影子中的待下发数据后,向目标设备发送的用于提示目标设备发送增量下发请求的通知。
552.请求发送模块1202,用于向服务器发送增量下发请求,以使服务器在接收增量下发请求后,根据增量下发请求,在未下发的待下发数据中确定第一数据量之和不大于第一容量的指定数组,并且,若不存在未被确定为指定数组的待下发数组,则向目标设备下发携带有指定标识的指定数组;否则,向目标设备下发指定数组。
553.其中,增量下发请求包括目标设备的数据接收缓冲区的第一容量,指定标识用于表征在下发指定数组后,服务器不存在未下发的待下发数据。
554.数组接收模块1203:用于接收指定数组,并对指定数组进行数据处理;若检测指定数组携带有指定标识,则向服务器发送用于表征已接收全部待下发数据的下发终止信号,以使服务器接收下发终止信号;否则,返回向服务器发送增量下发请求的步骤。
555.基于此,应用本技术实施例提供的方案,在服务器需要下发到目标设备的待下发数据的数据量大于目标设备的数据接收缓冲区的第一容量时,服务器可以采取增量下发的方式,将待下发数据以指定对象数组的形式分批下发至目标设备,并且,每次下发至目标设备的指定数组的数据量都不大于上述第一容量。这样,由于每次数据均是按照指定对象数组的形式下发的,因此,目标设备可以在接收到指定数组后,即刻对指定数组进行数据处理,以避免占用数据接收缓冲区的空间,进而,便于接收服务器下一次发送的指定数组。因此,本技术实施例提供的方案可以在不增加设备成本的前提下,解决服务器下发数据量大于设备的数据接收缓冲区容量的数据到设备而导致的设备数据接收缓冲区溢出问题。
556.此外,由于目标设备在每次接收到服务器下发的指定数组时,均可以即刻对指定数组进行数据处理,因此,目标设备无需在接收到全部的待下发数据后,对分批接收到的指定数组进行整合,再对整合后的数组进行数据处理,从而,无需增加目标设备的数据处理工作量,可以有效提高目标设备针对待下发数据的处理效率。
557.可选的,一种具体实现方式中,所述待下发数据包括:用户通过用户终端发送的关于所述目标设备的期望属性值;
558.所述数据接收模块具体用于:
559.按照所述指定数据进行属性设置。
560.可选的,一种具体实现方式中,所述装置还包括:
561.待上报数据确定模块,用于确定以所述指定对象数组形式存储的待上报数据,并向所述服务器发送所述目标设备的设备标识、所述待上报数据的指定信息以及由所述待上
报数据中的各个数组的数组标识构成的目标标识数组,以使所述服务器在接收到所述设备标识、所述指定信息和所述目标标识数组后,若所记录的所述设备标识对应的数据信息与所述指定信息不一致,和/或,所记录的所述设备标识对应的标识数组与所述目标标识数组不一致,则向所述目标设备发送用于提示所述目标设备上报所述待上报数据的数据上报通知;其中,所述指定信息包括:所述待上报数据的类型,和/或,所述待上报数据的版本号;
562.数组上报模块,用于接收所述数据上报通知;在未上报的所述待上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组,并向所述服务器上报所述目标数组,以使所述服务器在接收到所述目标数组后,将所述目标数组存储到所述目标设备的设备影子中并向所述服务器下发第一应答消息;
563.消息接收模块,用于接收所述第一应答消息;若检测到存在未上报的所述待上报数据,则返回所述在未上报的所述待上报数据中确定第二数据量之和不大于所述目标设备的数据发送缓冲区的第二容量的目标数组的步骤。
564.可选的,一种具体实现方式中,所述待上报数据确定模块具体用于:
565.获取待上报且数据量大于所述第二容量的本地数据,并将所述本地数据转换为以指定对象数组形式存储的数据,作为待上报数据。
566.可选的,一种具体实现方式中,所述装置还包括:
567.信号上报模块,用于在第一次上报所述目标数据时,向所述服务器上报用于表征第一次进行数据上报的第一信号;若确定所述目标数组后,检测到存在未确定为所述目标数组的所述待上报数据,则在向所述服务器上报所述目标数据时,向所述服务器上报用于表征数据上报中的第二信号;若确定所述目标数组后,检测到不存在未确定为所述目标数组的所述待上报数据,则在向所述服务器上报所述目标数据时,向所述服务器上报用于表征最后一次进行数据上报的第三信号。
568.可选的,一种具体实现方式中,所述装置还包括:
569.指定数据确定模块,用于在检测到运行状态变化时,确定存在数据更新的指定数据;其中,所述指定数据的数据量不大于所述目标设备的数据发送缓冲区的第二容量;
570.第四信号上报模块,用于向所述服务器上报所述指定数据和用于表征进行数据更新的第四信号,以使所述服务器在接收到所述指定数据和所述第四信号后,利用所述指定数据对所述目标设备的设备影子所存储的数据进行数据更新,并向所述目标设备发送第二应答消息;
571.应答消息接收模块,用于接收所述第二应答消息。
572.本技术实施例还提供了一种服务器,如图13所示,包括:
573.存储器1301,用于存放计算机程序;
574.处理器1302,用于执行存储器1301上所存放的程序时,实现本技术实施例提供的应用于服务器的任一数据传输的方法步骤。
575.并且上述服务器还可以包括通信总线和/或通信接口,处理器1302、通信接口、存储器1301通过通信总线完成相互间的通信。
576.本技术实施例还提供了一种电子设备,如图14所示,包括:
577.存储器1401,用于存放计算机程序;
578.处理器1402,用于执行存储器1401上所存放的程序时,实现本技术实施例提供的
应用于目标设备的任一数据传输的方法步骤。
579.并且上述服务器和目标设备还可以包括通信总线和/或通信接口,处理器1402、通信接口、存储器1401通过通信总线完成相互间的通信。
580.上述电子设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
581.通信接口用于上述电子设备与其他设备之间的通信。
582.存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
583.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
584.在本技术提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据传输方法的步骤。
585.在本技术提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据传输方法。
586.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
587.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在
包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
588.本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例、装置实施例、服务器实施例、目标设备实施例、计算机可读存储介质实施例以及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
589.以上所述仅为本技术的较佳实施例,并非用于限定本技术的保护范围。凡在本技术的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本技术的保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献