具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一方面,提供了一种数据文件的处理方法的方法实施例。
可选地,在本实施例中,上述数据文件的处理方法可以应用于如图1所示的系统中。如图1所示,包括设备层(可包括一种或者多种物联网设备)、平台层(对接入设备进行处理,包括物接入、语音场景等,平台层可采用分布式结构,通过服务器集群来完成数据处理)、应用层(如智慧社区、智慧办公、智慧安防等)以及应用行业(如酒店、地产等)。
本申请实施例的数据文件的处理方法可以在平台层来运行,如通过服务器集群中的任一服务器来执行,图2是根据本申请实施例的一种可选的数据文件的处理方法的流程图,如图2所示,该方法可以包括以下步骤:
步骤S202,第一服务器获取多个初始文件的文件数量,初始文件中记录有物联网系统中的物联网设备发送的业务数据,物联网设备如图3所示,如智能窗帘、门窗传感器、智能插座等;上述第一服务器为平台层的服务器集群中的服务器。
步骤S204,在文件数量达到目标阈值的情况下,第一服务器获取每个初始文件的文件属性,文件属性用于表示初始文件在目标属性上的属性值,如文件大小、业务数据的版本等。
步骤S206,第一服务器根据多个初始文件的文件属性对多个初始文件进行合并,得到目标文件,目标文件的文件数量少于多个初始文件的文件数量,目标文件中记录的业务数据的数据量不大于多个初始文件中记录的业务数据的数据量。
通过上述步骤S202至步骤S206,可根据多个初始文件的文件属性对多个初始文件进行合并,得到目标文件,目标文件的文件数量少于多个初始文件的文件数量,可以解决相关技术中数据文件数量较多的技术问题。
在本申请的方案中,存储分为两部分,一部分是临时缓存,用户写入的数据首先会放入临时缓存,当缓存满了以后会保存为一个初始文件,另一部分是持久化存储,当初始文件数量增长到一定阈值,会触发合并操作,将多个初始文件合并成一个目标文件(该文件可以保存在分布式的存储系统中),本方案实际是将临时缓存持久化的方案,作为一种可选的实施例,下文结合具体的实施方案进一步详述本申请的技术方案:
步骤1,记录物联网设备发送的业务数据至初始文件,如图3所示,记录水表、电表上传的表计数据。
步骤2,在将物联网设备发送的业务数据写入至内存上的初始文件时,将写入时间和数据源记录至操作日志中。
步骤3,获取多个初始文件的文件数量。
步骤4,可以预先配置好目标阈值,在文件数量达到目标阈值的情况下,获取每个初始文件的文件属性,文件属性用于表示初始文件在目标属性上的属性值,如文件大小(即文件的比特bit值)、业务数据的版本等。
步骤5,根据多个初始文件的文件属性对多个初始文件进行合并,得到目标文件。步骤5可通过如下步骤51-步骤52实现:
步骤51,获取配置文件中为文件合并配置的目标合并方案。
第一服务器可通过远程的方式向其他设备提供合并方案的配置界面如后台维护人员可通过所拥有的设备远程登录至该配置界面,以通过配置界面配好合并方案,第一服务器将在配置界面接收到的合并方案保存至配置文件。
此处的合并方案可以为多种,如将小文件合并成大文件(后称为小合并),此处小文件的文件大小和文件数量均可预先在后台配置;将所有文件合并至同一文件中(后称为大合并)。
步骤52,根据多个初始文件的文件属性,采用目标合并方案对多个初始文件进行合并,得到目标文件。
小合并的实现方式如下:
步骤521,按照文件属性中记录的文件大小从多个初始文件中获取第一文件,第一文件的文件大小不大于第二文件的文件大小,多个初始文件包括第一文件和第二文件,如预先配置好文件大小的阈值,如100M,小于等于100M的文件为第一文件,100M以上的文件即第二文件。
步骤522,从各个第一文件中获取所记录的业务数据。文件一般包括文件头、文件内容以及文件尾,文件头用来表示文件的格式、时间等信息,文件尾表示文件的结束,文件内容即业务数据,故而获取业务数据时,可以通过解析文件实现。
步骤523,对第一文件进行合并处理。
对于每个第一文件,可以设定一个最大值(即目标阈值,如1G),在所有第一文件中记录的业务数据的数据量不大于目标阈值的情况下,将所有第一文件中记录的业务数据写入同一第三文件。
在所有第一文件中记录的业务数据的数据量大于目标阈值的情况下,将所有第一文件中记录的业务数据写入多个第三文件,任意一个第三文件中记录的业务数据的数据量不大于目标阈值且任意两个第三文件中记录的业务数据不重复。
步骤524,将第二文件和第三文件作为目标文件。
大合并的实现方式如下:
步骤521,从各个初始文件中获取所记录的物联网业务的业务数据并从文件属性中获取记录的该业务数据的版本和该业务数据的操作记录。
对于存储的业务数据,存在多种操作记录:例如,部分业务数据需要更新(即版本发生更新)、部分业务数据需要删除、部分业务数据需要合并(例如,属于同一设备的数据)。
步骤522,按照如下方式对从初始文件中获取的业务数据进行数据操作:在操作记录表示删除数据的情况下,删除该操作记录所指示的业务数据;在操作记录表示新增数据的情况下,将该操作记录所指示的多个业务数据合并;在存在相同的多个业务数据的情况下,保留多个业务数据中版本最新的业务数据。
步骤523,将进行数据操作后的业务数据写入同一个目标文件。
在上述合并过程中,会进行版本合并和数据删除,因此可以看出在保存业务数据至缓存时其实只有增加数据,所有的更新和删除操作都是在后续的合并过程中进行的,这使得用户的写操作只要进入内存中就可以立即返回,保证了数据读写的高性能。
当初始文件合并后,会逐步形成越来越大的目标文件,当单个目标文件的大小超过一定阈值后,会触发分割操作,同时把当前目标文件的存储区域分成2个区域,原存储区域会下线,新分裂出的2个区域会被集群中的管理服务器分配到两个相应的服务器上,使得原先1个存储区域的压力得以分流到2个存储区域上。
文件存储系统在系统正常工作的前提下是没有问题的,但是在分布式系统环境中,无法避免系统出错或者宕机,因此一旦第一服务器意外退出,内存数据将会丢失,这就需要引入日志了,具体实现方案如下:
步骤6,在第一服务器根据多个初始文件的文件属性对多个初始文件进行合并,得到目标文件的过程中,在合并成功的情况下,从操作日志中删除已经合并成功的初始文件的记录;在合并失败的情况下,将对多个初始文件进行合并的失败记录写入操作日志。
步骤7,在将对多个初始文件进行合并的失败记录写入操作日志之后,对数据合并的操作进行恢复。
步骤71,获取待合并的业务数据,可按照操作日志中记录的数据源获取多个初始文件中记录的业务数据或从第二服务器获取多个初始文件,第二服务器为集群中第一服务器的备用服务器。
步骤72,再次执行根据多个初始文件的文件属性对多个初始文件进行合并的操作,得到目标文件。
每个服务器中都有一个日志对象,日志对象是一个实现Write Ahead Log的类,即在每次用户操作写入缓存的同时,也会写一份数据到日志文件中,日志文件定期会滚动出新的,并删除旧的文件(已持久化的数据)。
当服务意外终止后,系统会感知到意外的发生,首先会处理遗留的日志文件,将其中不同存储区域的日志数据进行拆分,分别放到相应存储区域的目录下,然后再将失效的区域重新分配,在服务重启后,会发现有历史日志数据需要处理,因此会重载日志记录的业务数据到内存中,然后写入到初始文件,完成数据恢复,也可进一步完成文件合并。
在本申请的技术方案中,系统故障恢复以及主从复制都基于以上日志实现。默认情况下,所有写入操作(写入、更新以及删除)的数据都先以追加形式写入日志,再执行实际数据写入操作。大多数情况下,日志并不会被读取,但如果服务器在某些异常情况下发生宕机,此时已经写入内存中但尚未保存到磁盘的数据就会丢失,需要回放日志补救丢失的数据。此外,数据库主从复制需要主集群将日志发送给从集群,从集群在本地执行回放操作,完成集群之间的数据复制。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述数据文件的处理方法的数据文件的处理装置。图4是根据本申请实施例的一种可选的数据文件的处理装置的示意图,如图4所示,该装置可以包括:
第一获取单元41,用于获取多个初始文件的文件数量,其中,初始文件中记录有物联网系统中的物联网设备发送的业务数据;
第二获取单元43,用于在文件数量达到目标阈值的情况下,获取每个初始文件的文件属性,其中,文件属性用于表示初始文件在目标属性上的属性值;
处理单元45,用于根据多个初始文件的文件属性对多个初始文件进行合并,得到目标文件,其中,目标文件的文件数量少于多个初始文件的文件数量,目标文件中记录的业务数据的数据量不大于多个初始文件中记录的业务数据的数据量。
需要说明的是,该实施例中的第一获取单元41可以用于执行本申请实施例中的步骤S202,该实施例中的第二获取单元43可以用于执行本申请实施例中的步骤S204,该实施例中的处理单元45可以用于执行本申请实施例中的步骤S206。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的环境中,可以通过软件实现,也可以通过硬件实现。
通过上述模块,可根据多个初始文件的文件属性对多个初始文件进行合并,得到目标文件,目标文件的文件数量少于多个初始文件的文件数量,可以解决相关技术中数据文件数量较多的技术问题。
可选地,处理单元在根据多个初始文件的文件属性对多个初始文件进行合并,得到目标文件时,还用于:获取配置文件中为文件合并配置的目标合并方案,其中,第一服务器用于提供合并方案的配置界面并将在配置界面接收到的合并方案保存至配置文件;根据多个初始文件的文件属性,采用目标合并方案对多个初始文件进行合并,得到目标文件。
可选地,处理单元在根据多个初始文件的文件属性,采用目标合并方案对多个初始文件进行合并,得到目标文件时,还用于:按照文件属性中记录的文件大小从多个初始文件中获取第一文件,其中,第一文件的文件大小不大于第二文件的文件大小,多个初始文件包括第一文件和第二文件;从各个第一文件中获取所记录的业务数据;在所有第一文件中记录的业务数据的数据量不大于目标阈值的情况下,将所有第一文件中记录的业务数据写入同一第三文件;或在所有第一文件中记录的业务数据的数据量大于目标阈值的情况下,将所有第一文件中记录的业务数据写入多个第三文件,其中,任意一个第三文件中记录的业务数据的数据量不大于目标阈值且任意两个第三文件中记录的业务数据不重复;将第二文件和第三文件作为目标文件。
可选地,处理单元在根据多个初始文件的文件属性,采用目标合并方案对多个初始文件进行合并,得到目标文件时,还用于:从各个初始文件中获取所记录的物联网业务的业务数据并从文件属性中获取记录的该业务数据的版本和该业务数据的操作记录;按照如下方式对从初始文件中获取的业务数据进行数据操作:在操作记录表示删除数据的情况下,删除该操作记录所指示的业务数据;在操作记录表示新增数据的情况下,将该操作记录所指示的多个业务数据合并;在存在相同的多个业务数据的情况下,保留多个业务数据中版本最新的业务数据;将进行数据操作后的业务数据写入同一个目标文件。
可选地,第一获取单元在获取多个初始文件的文件数量之前,还用于:在将物联网设备发送的业务数据写入至内存上的初始文件时,将写入时间和数据源记录至操作日志中。
可选地,处理单元在第一服务器根据多个初始文件的文件属性对多个初始文件进行合并,得到目标文件的过程中,还用于:在合并成功的情况下,从操作日志中删除已经合并成功的初始文件的记录;在合并失败的情况下,将对多个初始文件进行合并的失败记录写入操作日志。
可选地,处理单元在将对多个初始文件进行合并的失败记录写入操作日志之后,还用于:按照操作日志中记录的数据源获取多个初始文件中记录的业务数据或从第二服务器获取多个初始文件,其中,第二服务器为第一服务器的备用服务器;再次执行根据多个初始文件的文件属性对多个初始文件进行合并的操作,得到目标文件。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的另一个方面,还提供了一种用于实施上述数据文件的处理方法的服务器或终端。
图5是根据本申请实施例的一种终端的结构框图,如图5所示,该终端可以包括:一个或多个(图5中仅示出一个)处理器501、存储器503、以及传输装置505,如图5所示,该终端还可以包括输入输出设备507。
其中,存储器503可用于存储软件程序以及模块,如本申请实施例中的数据文件的处理方法和装置对应的程序指令/模块,处理器501通过运行存储在存储器503内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据文件的处理方法。存储器503可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器503可进一步包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置505用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置505包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置505为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器503用于存储应用程序。
处理器501可以通过传输装置505调用存储器503存储的应用程序,以执行下述步骤:
获取多个初始文件的文件数量,其中,初始文件中记录有物联网系统中的物联网设备发送的业务数据;
在文件数量达到目标阈值的情况下,获取每个初始文件的文件属性,其中,文件属性用于表示初始文件在目标属性上的属性值;
根据多个初始文件的文件属性对多个初始文件进行合并,得到目标文件,其中,目标文件的文件数量少于多个初始文件的文件数量,目标文件中记录的业务数据的数据量不大于多个初始文件中记录的业务数据的数据量。
处理器501还用于执行下述步骤:
按照文件属性中记录的文件大小从多个初始文件中获取第一文件,其中,第一文件的文件大小不大于第二文件的文件大小,多个初始文件包括第一文件和第二文件;
从各个第一文件中获取所记录的业务数据;
在所有第一文件中记录的业务数据的数据量不大于目标阈值的情况下,将所有第一文件中记录的业务数据写入同一第三文件;或在所有第一文件中记录的业务数据的数据量大于目标阈值的情况下,将所有第一文件中记录的业务数据写入多个第三文件,其中,任意一个第三文件中记录的业务数据的数据量不大于目标阈值且任意两个第三文件中记录的业务数据不重复;
将第二文件和第三文件作为目标文件。
采用本申请实施例,提供了一种“获取多个初始文件的文件数量,其中,初始文件中记录有物联网系统中的物联网设备发送的业务数据;在文件数量达到目标阈值的情况下,获取每个初始文件的文件属性,其中,文件属性用于表示初始文件在目标属性上的属性值;根据多个初始文件的文件属性对多个初始文件进行合并,得到目标文件,其中,目标文件的文件数量少于多个初始文件的文件数量,目标文件中记录的业务数据的数据量不大于多个初始文件中记录的业务数据的数据量”的方案。可根据多个初始文件的文件属性对多个初始文件进行合并,得到目标文件,目标文件的文件数量少于多个初始文件的文件数量,可以解决相关技术中数据文件数量较多的技术问题。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图5所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。图5其并不对上述电子装置的结构造成限定。例如,终端还可包括比图5中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图5所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行数据文件的处理方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
获取多个初始文件的文件数量,其中,初始文件中记录有物联网系统中的物联网设备发送的业务数据;
在文件数量达到目标阈值的情况下,获取每个初始文件的文件属性,其中,文件属性用于表示初始文件在目标属性上的属性值;
根据多个初始文件的文件属性对多个初始文件进行合并,得到目标文件,其中,目标文件的文件数量少于多个初始文件的文件数量,目标文件中记录的业务数据的数据量不大于多个初始文件中记录的业务数据的数据量。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
按照文件属性中记录的文件大小从多个初始文件中获取第一文件,其中,第一文件的文件大小不大于第二文件的文件大小,多个初始文件包括第一文件和第二文件;
从各个第一文件中获取所记录的业务数据;
在所有第一文件中记录的业务数据的数据量不大于目标阈值的情况下,将所有第一文件中记录的业务数据写入同一第三文件;或在所有第一文件中记录的业务数据的数据量大于目标阈值的情况下,将所有第一文件中记录的业务数据写入多个第三文件,其中,任意一个第三文件中记录的业务数据的数据量不大于目标阈值且任意两个第三文件中记录的业务数据不重复;
将第二文件和第三文件作为目标文件。
在一个可选的实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方法中任一实施例的步骤。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。