日志文件存储方法及装置与流程

文档序号:12694642阅读:234来源:国知局
日志文件存储方法及装置与流程

本发明属于日志文件处理技术领域,特别是涉及一种日志文件存储方法及装置。



背景技术:

内容分发网络(Content Delivery Net work,CDN)服务提供商是通过大量的边缘节点服务器来为客户提供加速服务。客户端的每一次访问,都会产生对应的日志文件。通过对日志文件进行分析处理,可以获取到有价值的信息,从而可以更好地为客户提供服务。

Apache Hadoop是一款支持数据密集型分布式应用并以Apache 2.0许可协议发布的开源软件框架,且支持在商品硬件构建的大型集群上运行的应用程序。Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)是Hadoop的一个核心组件,通过将多台服务器构建一个基于网络的分布式文件系统,实现海量数据的存储。

但是,现有技术中的基于HDFS的日志文件存储方法,存在着开销较大的问题。



技术实现要素:

本发明实施例解决的问题是如何在日志文件存储时节省开销。

为解决上述问题,本发明实施例提供了一种日志文件存储方法,所述方法包括:在预设的缓存周期内,实时接收边缘节点服务器产生的日志文件并进行压缩合并,以得到对应的压缩日志文件;当达到所述缓存周期的结束时间点对应的时刻时,将所得到的压缩日志文件上传至预设的云端服务器进行存储。

可选地,所述在预设的缓存周期内,实时接收边缘节点服务器产生的日志文件并进行压缩合并,以得到对应的压缩日志文件,包括:在所述缓存周期内,实时获取缓存目录下的日志文件;采用预设的压缩格式分别打开所获取的缓存目录下的日志文件和对应的本地日志文件;当确定所获取的缓存目录下的日志文件和对应的本地日志文件均打开成功时,将所获取的缓存目录下的日志文件写入对应的本地日志文件;关闭所获取的缓存目录下存储的日志文件和对应的本地日志文件,并删除所述缓存目录下存储的日志文件。

可选地,所述预设的压缩格式为GZIP格式。

可选地,所述所获取的缓存目录下的日志文件与对应的本地日志文件具有相同的域名,且所获取的缓存目录下的日志文件的时间戳位于对应的本地日志文件的时间段内。

可选地,所述将所得到的压缩日志文件上传至预设的云端服务器进行存储,包括:获取待处理目录下存储的指定的本地日志文件;分别采用二进制格式打开待处理的本地日志文件和对应的云端文件;当确定所述本地日志文件和对应的云端文件打开成功时,将所述本地日志文件写入对应的云端文件。

可选地,当确定将所述本地日志文件写入对应的云端文件失败时,所述方法还包括:为所述本地日志文件添加出错标记,并记录所述对应的云端文件写入前的大小的信息;当再次遍历至所述本地日志文件且检测到所述出错标记时,获取所述对应的云端文件写入前的大小的信息;基于所述对应的云端文件写入前的大小的信息,将对应的云端文件恢复至写入前的状态;当将对应的云端文件恢复至写入前的状态时,重新执行所述将所述本地日志文件写入对应的云端文件的操作。

可选地,所述指定的本地日志文件,为预设的域名对应的本地日志文件。

本发明实施例还提供了一种日志文件存储装置,所述装置包括:压缩合并单元,适于在预设的缓存周期内,实时接收边缘节点服务器产生的日志文件并进行压缩合并,以得到对应的压缩日志文件;发送单元,适于当达到所述缓存周期的结束时间点对应的时刻时,将所得到的压缩日志文件上传至预设的云端服务器进行存储。

可选地,所述压缩合并单元,适于在所述缓存周期内,实时获取缓存目录下的日志文件;采用预设的压缩格式分别打开所获取的缓存目录下的日志文件和对应的本地日志文件;当确定所获取的缓存目录下的日志文件和对应的本地日志文件均打开成功时,将所获取的缓存目录下的日志文件写入对应的本地日志文件;关闭所获取的缓存目录下存储的日志文件和对应的本地日志文件,并删除所述缓存目录下存储的日志文件。

可选地,所述预设的压缩格式为GZIP格式。

可选地,所述所获取的缓存目录下的日志文件与对应的本地日志文件具有相同的域名,且所获取的缓存目录下的日志文件的时间戳位于对应的本地日志文件的时间段内。

可选地,所述发送单元,适于获取待处理目录下存储的指定的本地日志文件;分别采用二进制格式打开待处理的本地日志文件和对应的云端文件;当确定所述本地日志文件和对应的云端文件打开成功时,将所述本地日志文件写入对应的云端文件。

可选地,所述装置还包括:获取单元,适于在将所述本地日志文件写入对应的云端文件之前,获取对应的云端文件的大小的信息,作为对应的云端文件写入前的大小的信息。

可选地,所述装置还包括:标记单元,适于为所述本地日志文件添加出错标记,并记录所述对应的云端文件写入前的大小的信息;恢复单元,适于当再次遍历至所述本地日志文件且检测到所述出错标记时,获取所述对应的云端文件写入前的大小的信息;基于所述对应的云端文件写入前的大小的信息,将对应的云端文件恢复至写入前的状态;重试单元,适于当将对应的云端文件恢复至写入前的状态时,重新执行所述将所述本地日志文件写入对应的云端文件的操作。

可选地,所述指定的本地日志文件,为预设的域名对应的本地日志文件。

与现有技术相比,本发明的技术方案具有以下的优点:

上述的方案,通过对相应缓存时间周期内实时接收到的边缘节点服务器的日志文件进行压缩合并处理后再发送至云端,由于将多个日志文件进行了压缩合并,而非将所接收到的日志文件实时发送至云端进行存储,故可以减少日志文件的传输次数和占用的网络总带宽,进而可以节省日志文件存储时产生的开销,节约资源。

进一步地,通过在确定将本地文件写入对应的云端文件失败时,将对应的云端文件自动恢复至写入前的状态,可以避免手动删除所导致的操作复杂度,因而可以提高日志文件恢复的效率,进而可以提高日志文件存储的效率,并可以节约手动删除所需的人力时间资源,节约运维成本。

附图说明

图1是本发明实施例中一种的日志文件存储方法的流程图;

图2是本发明实施例中另一种日志文件存储方法的流程图;

图3是本发明实施例中的一种日志文件存储方法的流程图;

图4是本发明实施例中的一种日志文件存储装置的结构示意图。

具体实施方式

正如背景技术所言,现有技术中的基于HDFS的日志文件存储方法,当将本地的日志文件写入对应的云端文件失败时,通常采用实时的方式将所接收的日志文件写入对应的云端文件时,也即一个日志文件写入对应的云端文件就需要一次网络开销,存在着效率低下且开销较大的问题。

为解决上述问题,本发明实施例中的技术方案通过对相应缓存时间周期内实时接收到的边缘节点服务器的日志文件进行压缩合并处理后再发送至云端,可以在发送日志文件时,节省与云端的交互次数和占用的网络总带宽,因而可以节省日志文件存储所产生的网络开销,节约资源。

为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。

图1是本发明实施例中的一种日志文件存储方法的流程图。如图1所示的日志文件存储方法,可以包括:

步骤S101:在预设的缓存周期内,实时接收边缘节点服务器产生的日志文件并进行压缩合并,以得到对应的压缩日志文件。

在具体实施中,缓存周期的时间长度可以根据实际的需要进行设置,如15分钟或者20分钟等。

步骤S102:当达到所述缓存周期的结束时间点对应的时刻时,将所得到的压缩日志文件上传至预设的云端服务器进行存储。

在具体实施中,所述云端服务器为用于存储边缘节点服务器产生的日志文件的分布式文件存储系统中的一个存储节点,如HDFS中的服务器。

上述的方案,通过对相应缓存时间周期内实时接收到的边缘节点服务器的日志文件进行压缩合并处理后再发送至云端,而非将所接收到的日志文件实时发送至云端进行存储,可以减少日志文件的传输次数和占用的网络总带宽,因而可以节省日志文件存储时产生的开销,节约资源。

下面将结合图2对本发明实施例中的日志文件存储方法进行详细的介绍。

参见图2,本发明实施例中的一种日志文件存储方法,适于将边缘节点服务器产生的日志文件发送至云端进行存储,具体可以采用如下的步骤实现:

步骤S201:在预设的缓存周期内,实时获取缓存目录下的日志文件。

在具体实施中,边缘节点服务器所产生的日志文件首先由对应的远程服务器将边缘节点服务器所产生的日志文件进行预处理,然后再发送至本发明实施例中的服务器中进行存储。换言之,对应的缓存目录下的日志文件也即待压缩合并至存储在本地的对应的本地日志文件的日志文件。

例如,远程服务器在获取到边缘节点服务器产生的日志文件时,首先将所获取的日志文件按照对应的域名和预设的第一时间粒度进行合并,并将合并后得到的日志文件发送至本发明实施例中的服务器中并存储为对应的缓存目录下。其中,第一时间粒度可以根据实际的需要进行设置,如5分钟。

步骤S202:采用预设的压缩格式分别打开所获取的缓存目录下的日志文件和对应的本地日志文件。

在具体实施中,为了确保压缩合并得到的日志文件在解压缩时不被破坏,在本发明一实施例中,所述预设的压缩格式为GZIP格式。

在具体实施中,对应的本地日志文件为存储在本地且待发送至云端进行存储的日志文件。在本发明一实施例中,存储在本地的本地日志文件采用对应的日志文件的域名和预设的时间段进行命名,以将对应的缓存周期内实时接收到的域名相同且时间戳位于该时间段内的日志文件压缩合并至对应的本地文件中。换言之,所述所获取的缓存目录下的日志文件与对应的本地日志文件具有相同的域名,且所获取的缓存目录下的日志文件的时间戳位于对应的本地日志文件的时间段内。

步骤S203:当确定所获取的缓存目录下的日志文件和对应的本地日志文件均打开成功时,将所获取的缓存目录下的日志文件写入对应的本地日志文件。

在具体实施中,将所获取的缓存目录下的日志文件写入对应的本地日志文件,也即将所获取的缓存目录下的日志文件写入对应的本地日志文件的末尾。

步骤S204:关闭所获取的缓存目录下存储的日志文件和对应的本地日志文件。

在具体实施中,在将所获取的缓存目录下的日志文件写入对应的本地文件之前,均采用预设的压缩格式打开所获取的缓存目录下的日志文件与对应的本地文件,在将所获取的缓存目录下的日志文件写入对应的本地日志文件成功并关闭后,所得到的对应的本地日志文件即为所述压缩格式的日志文件。

步骤S205:删除所述缓存目录下存储的日志文件。

在具体实施中,当确定将所获取的缓存目录下存储的日志文件压缩合并入对应的本地日志文件成功时,通过将所述缓存目录下存储的该日志文件进行删除,以节省存储空间。

步骤S206:判断是否达到对应的缓存周期的结束时刻;当判断结果为是时,可以执行步骤S207;反之,则继续从步骤S206开始执行。

步骤S207:将所得到的压缩日志文件上传至预设的云端服务器进行存储。

在具体实施中,当对应的缓存周期结束时,可以将对应的缓存时间周期内接收到的预处理后的日志文件进行压缩合并得到且存储至本地的指定目录下的本地日志文件分别发送至对云端服务器中进行存储。其中,缓存周期对应的时长大于第一时间粒度对应的时长,如当第一时间粒度为5分钟时,缓存周期将大于5分钟,如设置为30分钟。

在本发明一实施例中,为了提高日志文件存储的效率,降低日志文件存储的复杂度,本发明实施例中的日志文件存储方法可以在将压缩合并得到的日志文件上传至对应的云端文件失败时,自动将对应的云端文件恢复至写入前的状态,以降低日志文件运维的复杂度,节约成本。

参见图3,本发明实施例中的一种日志文件存储方法,适于将预设的缓存周期内压缩合并得到的日志文件发送至云端进行存储,具体可以包括如下的操作:

步骤S301:获取本地存储的指定目录下的本地日志文件。

在具体实施中,所获取的本地存储的指定目录下的本地日志文件,为待发送至云端服务器进行存储的日志文件。

步骤S302:以二进制格式打开所获取的指定目录下的本地日志文件。

在本发明一实施例中,为了确保在将所获取的本地存储的指定目录下的本地日志文件写入云端服务器时不被破坏,可以采用二进制格式打开所获取的指定目录下的本地日志文件。当然,也可以采用现有技术中的其他方式打开所获取的指定目录下的本地日志文件,只要确保在将所获取的本地存储的指定目录下的本地日志文件写入云端服务器时不被破坏即可。

步骤S303:以二进制格式打开存储在云端的对应的云端文件。

在具体实施中,当将所获取的指定目录下的本地日志文件采用二进制格式打开成功时,可以同样采用二进制格式打开存储在云端的对应的云端文件。

步骤S304:将所获取的指定目录下的本地日志文件写入对应的云端文件。

在具体实施中,当所获取的指定目录下的本地日志文件和对应的云端文件均打开成功时,将所获取的指定目录下的本地日志文件写入对应的云端文件,也即将所获取的指定目录下的本地日志文件添加至对应的云端文件的末尾。

步骤S305:判断是否成功将所获取的指定目录下的本地日志文件写入对应的云端文件;当判断结果为是时,可以执行步骤S306;反之,则可以执行步骤307。

步骤S306:删除所获取的指定目录下的所述本地日志文件。

在具体实施中,当确定将所获取的指定目录下的文件写入对应的云端文件成功时,便可以将指定目录下的文件删除,也即删除对应的本地文件,以节约存储空间。

步骤S307:为所述本地日志文件添加出错标记,并记录所述对应的云端文件写入前的大小的信息,并等待下一次上传。

在具体实施中,所述对应的云端文件写入前的大小的信息可以在将指定的本地日志文件写入对应的云端文件之前获取。当将指定的本地日志文件写入对应的云端文件失败时,可以所述本地日志文件添加对应的出错标记,并记录对应的云端文件写入前的大小的信息,以等待下一次上传。

在具体实施中,对应的本地日志文件写入对应的云端文件失败的原因通常由于网络通信质量差的原因造成,因此,当每次将本地日志文件写入对应的云端文件失败时,可以重新选取其他网络通信质量好的时间进行下一次上传。其中,当将上传失败的本地日志文件再次上传时,可以通过所述出错标记,判断是否需要将对应的云端文件恢复至写入前的状态。当确定存储出错标记时,可以获取所记录的对应的云端文件写入前的大小的信息,并将写入至云端文件末尾的部分本地日志文件执行删除,从而将对应的云端文件恢复至写入前的状态,并重新执行所述将所获取的指定目录下的本地日志文件写入对应的云端文件,也即从步骤S301开始执行。

步骤S308:判断指定目录下的本地日志文件是否遍历完成;当判断结果为是时,可以结束本次的上传操作;反之,则可以执行步骤S307。

步骤S309:获取所述指定目录下的下一本地日志文件。

在具体实施中,当确定指定目录下的当前所获取的本地日志文件写入对应的云端文件成功并删除之后,可以接着获取指定目录下的下一本地日志文件并从步骤S302开始执行,直至指定目录下的文件遍历完成。

上述对本发明实施例中的方法进行了详细的描述,下面将对上述的方法对应的装置做介绍。

图4示出了本发明实施例中的一种日志文件存储装置的结构。参见图4,本发明实施例中的一种日志文件存储装置可以包括压缩合并单元401和发送单元402,其中:

所述压缩合并单元401,适于在预设的缓存周期内,实时接收边缘节点服务器产生的日志文件并进行压缩合并,以得到对应的压缩日志文件;

所述发送单元402,适于当达到所述缓存周期的结束时间点对应的时刻时,将所得到的压缩日志文件上传至预设的云端服务器进行存储。

在本发明一实施例中,所述压缩合并单元401,适于在所述缓存周期内,实时获取缓存目录下的日志文件;采用预设的压缩格式分别打开所获取的缓存目录下的日志文件和对应的本地日志文件;当确定所获取的缓存目录下的日志文件和对应的本地日志文件均打开成功时,将所获取的缓存目录下的日志文件写入对应的本地日志文件;关闭所获取的缓存目录下存储的日志文件和对应的本地日志文件,并删除所述缓存目录下存储的日志文件。在本发明一实施例中,为了使得压缩合并后的日志文件在解压缩时不被破坏,所述预设的压缩格式为GZIP格式。

在本发明一实施例中,所述所获取的缓存目录下的日志文件与对应的本地日志文件具有相同的域名,且所获取的缓存目录下的日志文件的时间戳位于对应的本地日志文件的时间段内。

在本发明一实施例中,所述发送单元402,适于获取待处理目录下存储的指定的本地日志文件;分别采用二进制格式打开待处理的本地日志文件和对应的云端文件;当确定所述本地日志文件和对应的云端文件打开成功时,将所述本地日志文件写入对应的云端文件。

在具体实施中,为了在本地文件写入对应的云端文件失败时,将对应的云端文件自动恢复至写入前的状态,本发明实施例中的日志文件存储装置400还可以包括获取单元403,其中:

所述获取单元403,适于在将所述本地日志文件写入对应的云端文件之前,获取对应的云端文件的大小的信息;

在本发明一实施例中,本发明实施例中的日志文件存储装置400还可以包括标记单元404、恢复单元405和重试单元406,其中:

标记单元404,适于为所述本地日志文件添加出错标记,并记录所述对应的云端文件写入前的大小的信息;

恢复单元405,适于当再次遍历至所述本地日志文件且检测到所述出错标记时,获取所述对应的云端文件写入前的大小的信息;基于所述对应的云端文件写入前的大小的信息,将对应的云端文件恢复至写入前的状态。

重试单元406,适于当将对应的云端文件恢复至写入前的状态时,重新执行所述将所述本地日志文件写入对应的云端文件的操作。

采用本发明实施例中的上述方案,通过对相应缓存时间周期内实时接收到的边缘节点服务器的日志文件进行压缩合并处理后再发送至云端,由于将多个日志文件进行了压缩合并,而非将所接收到的日志文件实时发送至云端进行存储,可以减少日志文件的传输次数和占用的网络总带宽,因而可以节省日志文件存储时产生的开销,节约资源。

进一步地,通过在确定将本地文件写入对应的云端文件失败时,将对应的云端文件自动恢复至写入前的状态,可以避免手动删除所导致的操作复杂度,因而可以提高日志文件恢复的效率,进而可以提高日志文件存储的效率,并可以节约手动删除所需的人力时间资源,节约运维成本。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。

以上对本发明实施例的方法及系统做了详细的介绍,本发明并不限于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1