CN104301360A - 一种日志数据记录的方法、日志服务器及*** - Google Patents
一种日志数据记录的方法、日志服务器及*** Download PDFInfo
- Publication number
- CN104301360A CN104301360A CN201310306476.3A CN201310306476A CN104301360A CN 104301360 A CN104301360 A CN 104301360A CN 201310306476 A CN201310306476 A CN 201310306476A CN 104301360 A CN104301360 A CN 104301360A
- Authority
- CN
- China
- Prior art keywords
- daily record
- data
- storage server
- record set
- log
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/069—Management of faults, events, alarms or notifications using logs of notifications; Post-processing of notifications
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开了一种日志数据记录的方法、日志服务器及***,该日志数据记录方法包括:将根据日志获取条件获取到的日志数据组成日志集合;确定用于存储所述日志集合的数据存储服务器;将所述日志集合存储到所述数据存储服务器,并在所述数据存储服务器上生成所述日志集合的数据表;在所述日志集合的所有日志数据全部导入所述数据表之后,为所述日志集合的数据表创建索引。采用本申请实施例的方法、日志服务器或***,可以提高日志数据的储存速度,从而使得网络平台能够及时地记录短时间内产生的大量日志数据,防止数据丢失并且缩短用户查询的延迟时间。
Description
技术领域
本申请涉及网络数据处理领域,特别是涉及一种日志数据记录的方法、日志服务器及***。
背景技术
随着互联网通讯越来越普及,与网络平台之间通过网络交互的用户数量越来越多,用户与平台之间交互的次数也越来越多。为了便于用户能够查询到已完成的交互的有关信息,通常采用的方式是网络平台将交互信息生成用户的日志数据,然后记录各个用户的各个交互产生的日志数据,这样,在用户需要查询已完成的交互信息时,可以直接在网络平台所记录的日志数据总查找该交互所对应的日志数据,然后再将查找到的日志数据返回给用户,这样查询者就可以获得所需的交互信息。
在现有的日志数据记录方法中,每当产生一条用户日志数据,日志服务***就将该条日志数据***存储到***中的某一台存储设备上,这样,为了在用户查询时日志服务***能在日志存储设备中找到日志数据的存储位置,在将每条日志数据***的同时都要对日志存储设备中的索引进行一次更新。
通过现有技术来记录日志数据,由于每***一条日志都需要对日志存储设备的索引进行一次更新,所以日志数据记录的速度较慢,导致日志数据记录的效率较低。而进一步的,当前由于网络平台业务量的增大,网络平台上产生的日志数据数量越来越多,通过现有技术来记录日志数据,难以及时地记录产生的大量日志数据,这样,不仅会造成日志数据的丢失,也会致使用户在交互完成之后的较长时间内查询不到交互信息,也即用户查询的延迟时间较长。
发明内容
本申请所要解决的技术问题是,提供一种日志数据记录的方法、装置及***,以解决按照现有技术中日志数据记录的方式导致的日志数据记录的效率较低的技术问题,进一步的,还能解决短时间内产生日志数据达到亿级别数量的网络平台难以及时地记录产生的大量日志数据而造成的日志数据丢失和用户查询的延迟时间较长的技术问题。
为解决上述技术问题,本申请实施例提供了一种日志数据记录的方法,该方法包括:
将根据日志获取条件获取到的日志数据组成日志集合;
确定用于存储所述日志集合的数据存储服务器;
在所述数据存储服务器上生成所述日志集合的数据表,并将所述日志集合中的所有日志数据导入所述数据表;
在所述日志集合的所有日志数据全部导入所述数据表之后,为所述日志集合的数据表创建索引。
优选的,所述将根据日志获取条件获取到的日志数据组成日志集合,包括:
从分布式文件***中,获取前一次组成日志集合时刻之后生成的日志数据;
判断所述日志数据的条数是否达到预设的获取数据数量阈值;
如果否,则等待第一等待时间之后返回所述判断所述获取前一次组成日志集合时刻之后生成的日志数据的步骤;
如果是,则将所述日志数据组成日志集合;所述日志集合对应的时间段为前一次组成日志集合的时刻至本次组成日志集合的时刻。
优选的,所述将根据日志获取条件获取到的日志数据组成日志集合,包括:
判断获取等待时间是否达到预设的等待时间阈值,所述获取等待时间为当前时刻与前一次组成日志集合的时刻之间的时间;
如果否,则等待所述第二等待时间之后返回所述判断获取等待时间是否达到预设的等待时间阈值的步骤;
如果是,则从分布式文件***中,获取前一次组成日志集合时刻之后生成的日志数据,并将所述日志数据组成一个日志集合;所述日志集合对应的时间段为前一次组成日志集合的时刻至本次组成日志集合的时刻。
优选的,所述日志获取条件为按照日志数据的时间顺序获取日志,所述日志集合中所有日志数据的时间属于同一时间段;
相应的,将根据日志获取条件获取到的日志数据组成日志集合之后,还包括:将所述日志集合中的日志数据按照业务类型分类,形成至少一个日志子集合;
相应的,所述在所述数据存储服务器上生成所述日志集合的数据表,包括:
根据所述日志集合中每个日志子集合中的日志数据,对应生成每个日志子集合的子数据表;
将所述日志集合中所有日志子集合的子数据表组合成所述日志集合的数据表。
优选的,所述确定用于存储所述日志集合的数据存储服务器,具体为:确定用于存储所述日志集合的数据存储服务器中当前未执行写任务的磁盘。
优选的,所述在所述数据存储服务器上生成所述日志集合的数据表之后,还包括:
判断所述数据存储服务器在预设的存储时间内是否返回存储完成信息;所述存储完成信息为所述存储服务器在完成将所述日志集合中的所有日志数据导入所述数据表并为所述数据表创建索引之后返回的信息;
如果否,则从未曾被确定用于存储所述日志集合的存储服务器中重新确定用于存储所述日志集合的数据存储服务器,并返回所述将所述日志集合存储到所述数据存储服务器的步骤。
优选的,所述方法还包括:
按照预设的删除时间周期性删除所述数据存储服务器中未完成存储的日志集合。
优选的,所述在所述数据存储服务器上生成所述日志集合的数据表之后,还包括:
按照预设的合并时间周期性判断所述数据存储服务器上是否存在日志数据数量小于预设的存储数量阈值的数据表;如果是,则将所述日志数据数量小于存储数量阈值的数据表合并。
优选的,所述为所述日志集合的数据表创建索引之后,还包括:
将所述日志集合的数据表存储为独立的数据表文件集合;
复制所述日志集合对应的数据表文件集合中的数据表文件;
从未存储所述数据表文件的存储服务器中确定用于存储所述复制得到的所述数据表文件的备份存储服务器;
将所述复制得到的数据表文件一一对应的存储到所述备份存储服务器当前未执行写任务的磁盘中。
优选的,所述从未存储所述数据表文件的存储服务器中确定用于存储所述复制得到的所述数据表文件集合的备份存储服务器,包括:
将所连接的存储服务器中均未存储所述数据表文件集合的交换机确定为目标交换机;
从所述目标交换机所连接的存储服务器中确定用于存储所述复制得到的所述数据表文件的备份存储服务器。11、根据权利要求9所述的方法,其特征在于,所述将所述复制得到的数据表文件存储到所述备份存储服务器中之后,还包括:
监测所述日志集合的数据表文件的副本份数;
判断所述数据表文件的副本份数与预设的副本份数阀值之间的大小关系;
如果所述数据表文件的副本份数大于所述副本份数阈值,则将差值数量的数据表文件删除;所述差值数量为所述数据表文件的副本份数与所述副本份数阈值之间的差值;
如果所述数据表文件的副本份数小于所述副本份数阈值,则返回所述复制所述日志集合对应的数据表文件集合的数据表文件的步骤。
本申请还公开了一种查询日志数据的方法,通过前述任意一项的方法存储日志数据,所述日志集合中所有日志数据的时间都属于同一时间段;通过前述的方法备份日志数据;记录所述日志集合与所述数据存储服务器之间、所述日志集合与所述备份存储服务器之间以及所述日志集合与时间段之间的对应关系;
所述方法包括:
接收日志数据查询请求;
根据所述查询请求中目标日志数据的时间所在的时间段和所述日志集合与时间段之间的对应关系,确定所述目标日志数据所在的目标日志集合;
根据所述日志集合与数据存储服务器之间的对应关系和/或所述日志集合与备份存储服务器之间的对应关系,从存储有所述目标日志集合数据表文件的数据存储服务器和备份存储服务器中,确定用于查询所述目标日志的查询存储服务器;
在所述查询存储服务器上查找所述目标日志集合的数据表,并在查找到的数据表中查找所述目标日志数据;
将查找到的目标日志数据合并输出。
本申请还公开了一种记录日志数据的日志服务器,包括:
日志集合形成模块,用于将根据日志获取条件获取到的日志数据组成日志集合;
数据存储服务器确定模块,用于确定用于存储所述日志集合的数据存储服务器;
数据表生成模块,用于在所述数据存储服务器上生成所述日志集合的数据表;
日志***模块,用于将所述日志集合中的所有日志数据导入所述数据表;
索引创建模块,用于在所述日志集合的所有日志数据全部导入所述数据表之后,为所述日志集合的数据表创建索引。
优选的,所述日志集合形成模块包括:
第一日志数据获取子模块,用于从分布式文件***中,获取前一次组成日志集合时刻之后生成的日志数据;
获取数量判断子模块,用于判断所述日志数据的条数是否达到预设的获取数据数量阈值;
触发获取子模块,用于在所述获取数量判断子模块的判断结果为否的情况下,等待第一等待时间之后触发所述日志数据获取模块;
第一日志组合子模块,用于在所述获取数量判断子模块的判断结果为是的情况下,将所述日志数据组成日志集合;所述日志集合对应的时间段为前一次组成日志集合的时刻至本次组成日志集合的时刻。
优选的,所述日志集合形成模块包括:
获取时间判断子模块,用于判断获取等待时间是否达到预设的等待时间阈值,所述获取等待时间为当前时刻与前一次组成日志集合的时刻之间的时间;
触发时间判断子模块,用于在所述获取时间判断子模块的判断结果为否的情况下,等待所述第二等待时间之后触发所述获取时间判断子模块;
第二日志数据获取子模块,用于在所述获取时间判断子模块的判断结果为是的情况下,从分布式文件***中,获取前一次组成日志集合时刻之后生成的日志数据;
第二日志组合子模块,用于将所述日志数据组成一个日志集合;所述日志集合对应的时间段为前一次组成日志集合的时刻至本次组成日志集合的时刻。
优选的,所述日志服务器还包括:
日志子集合形成模块,用于将所述日志集合中的日志数据按照业务类型分类,形成至少一个日志子集合;
相应的,所述数据表生成模块包括:
子数据表生成子模块,用于根据所述日志集合中每个日志子集合中的日志数据,对应生成每个日志子集合的子数据表;
子数据表组合子模块,用于将所述日志集合中所有所述日志子集合的子数据表组合成所述日志集合的数据表。
优选的,所述数据存储服务器确定模块,具体用于确定用于存储所述日志集合的数据存储服务器中当前未执行写任务的磁盘。
优选的,所述日志服务器还包括:
数据表完成判断模块,用于判断所述数据存储服务器在预设的存储时间内是否返回存储完成信息;所述存储完成信息为所述存储服务器在完成将所述日志集合中的所有日志数据导入所述数据表并为所述数据表创建索引之后返回的信息;
数据存储重新确定模块,用于在所述数据表完成判断模块的判断结果为否的情况下,从未曾被确定用于存储所述日志集合的存储服务器中重新确定用于存储所述日志集合的数据存储服务器;
触发存储模块,用于在所述数据存储重新确定模块启动的情况下,触发日志集合存储模块。
优选的,所述日志服务器还包括:
删除集合模块,用于按照预设的删除时间周期性删除所述数据存储服务器中未完成存储的日志集合。
优选的,所述日志服务器还包括:
数据数量判断模块,用于按照预设的合并时间周期性判断所述数据存储服务器上是否存在日志数据数量小于预设的存储数量阈值的数据表;
集合合并模块,用于在所述数据数量的判断结果为是的情况下,将所述日志数据数量小于存储数量阈值的数据表合并。
优选的,所述日志服务器还包括:
备份生成模块,用于将所述日志集合的数据表存储为独立的数据表文件集合;
备份复制模块,用于复制所述日志集合对应的数据表文件集合的数据表文件;
备份服务器确定模块,用于从未存储所述数据表文件的存储服务器中确定用于存储所述复制得到的数据表文件的备份存储服务器;
备份存储模块,用于将所述复制得到的数据表文件一一对应的存储到所述备份存储服务器当前未执行写任务的磁盘中。
优选的,所述备份服务器确定模块,包括:
第一确定子模块,用于将所连接的存储服务器中均未存储所述数据表文件的交换机确定为目标交换机;
第二确定子模块,用于从所述目标交换机所连接的存储服务器中确定用于存储所述复制得到的所述数据表文件的备份存储服务器。
优选的,所述日志服务器还包括:
数据表监测模块,用于监测所述日志集合的数据表文件的副本份数;
数据表数量判断模块,用于判断数据表文件的副本份数与预设的副本份数阀值之间的大小关系;
数据表删除模块,用于在所述数据表数量判断模块的判断结果为所述数据表文件的副本份数大于所述副本份数阈值的情况下,将差值数量的数据表文件删除;所述差值数量为所述数据表文件的副本份数与预设的副本份数阈值之间的差值;
触发复制模块,用于在所述数据表数量判断模块的判断结果为所述数据表文件的副本份数小于所述副本份数阈值的情况下,触发所述备份复制模块。
本申请还公开了一种记录日志数据的***,其特征在于,所述***包括日志服务器和存储服务器;所述日志服务器为前述任意一项的日志服务器;所述存储服务器包括数据存储服务器和/或备份存储服务器。
本申请还公开了一种查询日志数据的***,所述***包括:
日志存储单元,用于通过前述的日志服务器存储日志数据,所述日志集合中所有日志数据的时间都属于同一时间段;
日志备份单元,用于通过前述的日志服务器备份日志数据;
对应关系记录单元,用于记录所述日志集合与所述数据存储服务器之间、所述日志集合与所述备份存储服务器之间以及所述日志集合与时间段之间的对应关系;
查询请求接收单元,用于接收日志数据查询请求;
目标集合确定单元,用于根据所述查询请求中目标日志的时间所在的时间段,确定目标日志数据所在的目标日志集合;
查询服务器确定单元,用于根据所述日志集合与数据存储服务器之间的对应关系和/或所述日志集合与备份存储服务器之间的对应关系,从存储有所述目标日志集合数据表文件的数据存储服务器和备份存储服务器中,确定用于查询所述目标日志的查询存储服务器;
查找单元,用于在所述查询存储服务器上查找所述目标日志集合的数据表;
目标日志查找单元,用于在查找到的数据表中查找所述目标日志数据;
目标日志输出模块,用于将查找到的目标日志数据合并输出。
从上述的技术方案可以看出,本申请实施例中公开的日志数据记录方法,因为采用将获取日志数据形成日志集合来按集合进行存储的方式,先将获取的日志数据组成日志集合,然后确定用于存储日志集合的数据存储服务器,这样就可以先在该数据存储服务器上生成该日志集合的数据表并将该日志集合中所有日志数据都导入到数据存储服务器上,再在该日志集合的所有日志数据全部导入所述数据表之后为该日志集合数据表创建索引,这样就能避免因为每记录一条日志数据都需要更新日志存储设备的索引而导致的日志记录速度较慢的现象,使得日志记录的写入速度加快,从而使得网络平台能够及时地记录短时间内产生的大量日志数据,防止数据丢失并且缩短用户查询的延迟时间,使得用户能够更及时地查询到已完成的交互信息。
进一步的,本申请实施例中在确定存储日志集合的数据存储服务器时,可以确定数据存储服务器中当前未执行写任务的磁盘中,这样,存储日志集合的磁盘在存储时不执行其他写任务,可以提高日志集合中日志数据的存储速度。
进一步的,本申请实施例中对数据存储服务器完成日志集合存储也设置了存储时间阈值,当数据存储服务器经过存储时间还未返回完成存储消息,就将重新确定数据存储服务器来存储该日志集合,这样可以避免数据存储服务器出现错误而导致的日志集合中日志数据不能被完全存储为数据表。另外,在设置存储时间阈值的基础上,还可以设置了删除时间以周期性删除未完成存储的日志集合,这样可以减少数据存储服务器中的垃圾数据,增大可用空间,提高利用效率。
进一步的,本申请实施例中对数据表中日志数据的数量也设置了存储数量阈值,当数据存储服务器中存在日志数据数量小于存储数量阈值的数据表时,就将这些数据表进行合并,这样可以减少数据表的数量,节省用户查询日志数据时需要查找的数据表数量,从而节省查询时间。
进一步的,本申请实施例中在备份存储的日志集合时,由于各个日志集合的数据表是独立保存的数据表文件集合,因此可以直接复制日志集合对应的数据表文件集合中的数据表文件并存储到备份存储服务器中,可以节省备份所需要的时间。另外,在存储数据表文件时,可以将数据表文件存储到备份存储服务器上当前未执行写任务的磁盘中,这样可以提高数据表文件存储的速度,进一步节省备份所需要的时间。
进一步的,本申请实施例中在确定备份服务器时可以使存储同一日志集合的各个数据表文件集合的各个备份存储服务器位于不同交换机下,这样可以避免将同一日志集合的各个数据表文件集合存储在相同交换机下的存储服务器而导致的该交换机损坏后该日志集合中的日志数据将无法查询的问题。
进一步的,本申请实施例中对日志集合设置了数据表文件的副本份数阈值,当日志集合的数据表文件的副本份数大于预设的副本份数阈值时,就删除多余的数据表文件,当数据表文件的副本份数小于副本份数阈值时,就再次复制数据表文件,这样可以保证存储服务器中日志集合的数据表文件的副本份数维持稳定,从而在不占用过多存储空间的情况下保证日志数据不会丢失。
进一步的,本申请实施例中在查询已完成记录的目标日志数据时,由于存储服务器上各日志集合对应生成了不同的数据表,这样就可以先确定目标日志所在的目标集合,再在查询存储服务器上该目标日志集合的数据表上查找该目标日志数据,而不需要在查询存储服务器上查找所有数据表,从而提高了日志查询的速度,减小了查询的延迟时间。
当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请日志数据记录的方法实施例1的流程图;
图2本申请方法实施例1中步骤101的实施方式1的流程图;
图3本申请方法实施例1中步骤101的实施方式2的流程图;
图4为本申请方法实施例1的可附加实施方式1的流程图;
图5为本申请方法实施例1的可附加实施方式2的流程图;
图6为本申请日志数据记录的方法实施例2的流程图;
图7为本申请日志数据记录的方法实施例3的流程图;
图8为本申请日志数据记录的方法实施例4的流程图;
图9为本申请查询日志数据的方法实施例1的流程图;
图10为本申请日志数据记录的方法场景实施例的流程图;
图11为本申请查询日志数据的方法场景实施例的流程图;
图12为本申请日志数据记录的日志服务器装置实施例1的结构图;
图13为本申请日志服务器装置实施例1中日志集合形成模块1201的实施例1的结构图;
图14为本申请日志服务器装置实施例1中日志集合形成模块1201的实施例2的结构图;
图15为本申请日志数据记录的日志服务器装置实施例2的结构图;
图16为本申请日志数据记录的日志服务器装置实施例2的又一结构图;
图17为本申请日志数据记录的日志服务器装置实施例3的结构图;
图18为本申请日志数据记录的日志服务器装置实施例4的结构图;
图19为本申请日志数据记录的日志服务器装置实施例5的结构图;
图20为本申请日志数据记录的日志服务器装置实施例6的结构图;
图21为本申请日志数据记录的***实施例1的结构图;
图22为本申请查询日志数据的***实施例1的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请可用于众多通用或专用的计算***环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器***、基于微处理器的***、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何***或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本申请的主要思想之一可以包括,采用包含多个日志数据的日志集合的方式,先将多个需要记录的日志数据组成日志集合,并将该日志集合完全存储到数据存储服务器生成数据表,再在日志集合中的所有日志数据全部导入数据表之后为该日志集合的数据表创建索引。由于不再需要每记录一条日志数据都更新索引,这种记录日志的方法可以提高日志数据存储的速度,进而节省存储的时间。
参见图1,示出了本申请的一种日志数据记录的方法实施例1的流程图,本实施例可以包括:
步骤101、将根据日志获取条件获取到的日志数据组成日志集合。
本申请实施例在实施时,所获取的日志数据是已经生成的日志数据。日志数据的来源是网络平台应用集群的业务***。大量用户与业务***进行了大量的交互,业务***就对应产生了大量的交互信息,随即业务***将这些交互信息发送给日志缓存服务器,然后由日志缓存服务器生成每个交互信息对应的日志数据,并缓存该日志数据,以等待记录该日志数据。为了使缓存的日志数据不易被损坏或丢失,本实施例可以在日志缓存服务器生成日志数据之后,将日志数据缓存到分布式文件***中。其中,分布式文件***可以置于日志缓存服务器本地,也可以置于业务***。另外,在缓存中的日志数据被获取之后,通常需要从缓存中删除,以保持缓存中有足够的存储空间来缓存新生成的日志数据。
需要说明的是,由于日志数据是由业务***与用户交互所产生的,而业务***随时间不断与大量用户进行大量交互,所以,通常日志数据每时每刻都在产生。因此,在获取组成日志集合的日志数据时,日志获取条件可以为按照时间顺序依次来获取。这样,在一次获取日志数据形成的一个日志集合中,该日志集合中的日志数据都是在上一次获取到本次获取的时间段内生成并缓存的,而日志数据中通常具有日志生成的时间,所以,该日志集合中所有日志数据的时间都属于这一个时间段内,由此可见,按照时间顺序依次获取日志数据所形成的日志集合,同一个日志集合中所有日志数据的时间都属于同一个时间段。
针对上述按照时间顺序依次获取日志数据的日志获取条件,本实施例提供了两种步骤101的具体实施方式。
参见图2,示出了步骤101的实施方式1的流程图,步骤101可以具体包括:
步骤201、从分布式文件***中,获取前一次组成日志集合时刻之后生成的日志数据;
步骤202判断所述日志数据的条数是否达到预设的获取数据数量阈值;如果否,进入步骤203,如果是,进入步骤204;
步骤203、等待第一等待时间之后返回步骤201;
其中,第一等待时间是一个预设的时间值。对第一等待时间的设置,需要保证第一等待时间内能获取到的日志数据条数不能超过获取数据数量阈值,所以,通常第一等待时间设置的都较小。
步骤204、将所述日志数据组成日志集合;所述日志集合对应的时间段为前一次组成日志集合的时刻至本次组成日志集合的时刻。
需要说明的是,步骤204执行完成之后,就完成了一次日志集合的组成,形成了一个日志集合。在步骤204完成之后,针对该日志集合,可以进入步骤102完成对日志集合内日志数据的记录;同时,可以返回步骤201再次进行图2的实施方式1,以进行下一次日志数据的获取和形成下一个日志集合。
可以理解的是,图2所示的步骤101的实施方式1中,每次组成的日志集合中,日志数据的条数是相同的,都是预设的获取数据数量阈值。
参见图3,示出了步骤101的实施方式2的流程图,步骤101可以具体包括:
步骤301、判断获取等待时间是否达到预设的等待时间阈值,所述获取等待时间为当前时刻与前一次组成日志集合的时刻之间的时间;如果否,进入步骤302,如果是,进入步骤303;
步骤302、等待所述第二等待时间之后返回步骤301;
其中,第二等待时间是一个预设的时间。对第二等待时间进行设置时,第二等待时间可以直接设置为等待时间阈值,也可以设置为小于等待时间阈值。通常第二等待时间设置的都非常小,这样,相当于步骤301对获取等待时间的判断是不间断进行的,一旦判断结果为是,则进入步骤303。
步骤303、从分布式文件***中,获取前一次组成日志集合时刻之后生成的日志数据,并将所述日志数据组成一个日志集合;所述日志集合对应的时间段为前一次组成日志集合的时刻至本次组成日志集合的时刻。
需要说明的是,步骤303执行完成之后,就完成了一次日志集合的组成,形成了一个日志集合。在步骤303完成之后,针对该日志集合,可以进入步骤102完成对日志集合内日志数据的记录;同时,可以返回步骤301再次进行图3的实施方式2,以进行下一次日志数据的获取和形成下一个日志集合。
可以理解的是,图3所示的步骤101的实施方式2中,每次组成的日志集合中,日志数据的时间所在时间段的时间都是相等的,都是预设的等待时间阈值。
接着返回图1,步骤101执行完毕之后,进入步骤102。
步骤102、确定用于存储所述日志集合的数据存储服务器。
由于需要存储大量的用户日志数据,所以通常用于记录日志的日志服务***中都具有多个存储服务器,而每个存储服务器上具有多个磁盘来对日志数据进行存储。因此,在存储日志集合中日志数据之前,需要先从所有存储服务器中确定用于存储该日志集合的存储服务器,作为该日志集合的数据存储服务器。其中,通常情况下,对于一个日志集合只确定一个数据存储服务器,这样可以提高存储日志集合的效率。如需要将日志集合存储在多个存储服务器上以避免其中的日志数据丢失,则可以采用复制已存储在数据存储服务器上的日志集合的方式来备份,备份的具体实现方式将在后面的实施例详细说明,在此不再赘述。
另外,为了使***内各个存储服务器的磁盘IO压力能够得到平衡,避免读写任务集中到一个磁盘执行,步骤102优选的确定数据存储服务器的方式,可以为:先在所有存储服务器中查找当前未执行写任务的磁盘,然后在查找到的磁盘中确定剩余存储空间最大的一个磁盘作为用于存储日志集合的磁盘,再将该磁盘所在存储服务器确定为数据存储服务器。其中,用于存储日志集合的磁盘不是必须为查找到的磁盘中剩余存储空间最大的磁盘,也可以是任意一个当前未执行写任务的磁盘,只要该磁盘的剩余存储空间能够满足存储该日志集合的要求即可。
步骤103、在所述数据存储服务器上生成所述日志集合的数据表,并将所述日志集合中的所有日志集合导入所述数据表。
根据上述步骤102的说明,为了避免任务集中到一个磁盘执行,存储日志集合具体可以为将所述日志集合存储到所述数据存储服务器中当前未执行写任务的磁盘中,该当前未执行写任务的磁盘是步骤102中确定的用于存储日志集合的磁盘。
需要说明的是,对日志集合的存储为数据表,具体可以包括:将日志集合的所有日志数据发送至数据存储服务器,数据存储服务器为该日志集合创建数据表,并将日志集合中的所有日志数据导入该数据表存储。其中,对于一个日志集合通常创建一个数据表,这样存储在数据存储服务器中实际存储的就是多个数据表,每个数据表中的日志数据对应属于一个时间段;数据表所在数据库优选采用mysql。当然,在日志集合中的日志数据数量很大时,也可以为一个日志集合创建多个数据表。另外,在将日志集合中的所有日志数据导入该数据表存储的过程中,不为日志数据创建数据表的索引,也不指定主键(数据表的一种索引),而是在日志数据完全导入数据表以后再进入步骤104创建索引。
在数据存储服务器接收到日志集合之后,通常完成日志集合存储完成之后,会返回存储完成信息,该存储完成信息为存储服务器在完成将所述日志集合中的所有日志数据导入所述数据表并为所述数据表创建索引之后返回的信息。如果数据存储服务器对日志集合的存储出现了错误,不能完成将日志集合存储的任务,则数据存储服务器就不会返回存储完成信息。为了保证日志集合中的日志数据能够完全被存储到数据存储服务器中,在步骤103执行完成之后可以采用图4所示的实施方式,包括:
步骤401、判断所述数据存储服务器在预设的存储时间内是否返回存储完成信息;所述存储完成信息为所述存储服务器在已完成将所述日志集合中的所有日志数据导入所述数据表并为所述数据表创建索引之后返回的信息:如果否,进入步骤402。
步骤402、从未曾被确定用于存储所述日志集合的存储服务器中重新确定用于存储所述日志集合的数据存储服务器,并返回步骤103。
步骤403、按照预设的删除时间周期性删除所述数据存储服务器中未完成存储的日志集合。
需要说明的是,删除数据表的步骤403并不是必须在步骤401或402完成之后才进行的,也不是数据存储服务器在每次存储日志集合时都要执行。由于日志数据随时间不断地产生,所以***不断地对日志数据进行存储,所以通常***需要按照预设的垃圾清理周期来循环执行步骤403,这样才能避免***的各个存储服务器上存在过多的废数据表,从而扩大可用的剩余存储空间。
通过图4所示的实施方式,可以避免数据存储服务器出现错误而导致的日志集合中日志数据不能被完全存储为数据表。
接着返回对步骤103的说明。
在本实施例中,如果采用图3所示的实施方式2来组成日志集合,则各个日志集合对应的时间段都是相同时间间隔的。这样,不同时间段内就获取的日志数据条数一般不相同。因此,这样组成的日志集合可能包含的日志数据条数较少,进而造成步骤103中生成的数据表也较小。当数据存储服务器中的小数据表过多的时候,会额外浪费很多存储空间。为了避免这一问题,本实施可以在步骤103之后,进入图5所示的实施方式,包括:
步骤501、按照预设的合并时间周期性判断所述数据存储服务器上是否存在日志数据数量小于预设的存储数量阈值的数据表;如果是,进入步骤502。
其中,步骤501可以按照一个预设的合并时间来周期性循环的执行,这样可以不断地监控各数据存储服务器上是否存在较小数据表。
步骤502、将所述日志数据数量小于存储数量阈值的数据表合并。
通过图5所示的实施方式,减少了数据表的数量,不仅可以避免额外浪费很多存储空间,还可以节省用户查询日志数据时需要查找的数据表数量,从而节省查询时间。
接着返回图1,步骤103执行完成之后,进入步骤104。
步骤104、在所述日志集合的所有日志数据全部导入所述数据表之后,为所述日志集合的数据表创建索引。
为日志数据表创建索引,是在日志集合的所有日志数据都完全导入数据表而完成在数据存储服务器上的存储之后进行。其中,索引是为日志集合数据表而创建的,也即,各存储服务器上每个数据表都具有对应的索引。
本申请实施例中,因为采用将获取日志数据形成日志集合来按集合进行存储的方式,可以先在该数据存储服务器上生成该日志集合的数据表并将日志集合中所有日志数据都导入到数据存储服务器上,全部导入之后再为该日志集合数据表创建索引,这样就避免了每记录一条日志数据都需要更新日志存储设备的索引,使得日志记录的存储速度加快,从而防止数据丢失并且缩短用户查询的延迟时间。
进一步的,本申请实施例中在存储日志集合时,还可以将日志集合存储到数据存储服务器中当前未执行写任务的磁盘中,这样,磁盘在存储日志集合时不执行其他写任务,进而提高记录日志数据时的存储速度。
进一步的,本申请实施例中还对数据存储服务器完成存储日志集合也设置了存储时间阈值,当数据存储服务器经过存储时间还未完成对日志集合的存储任务,将重新确定数据存储服务器来存储该日志集合,这样可以避免数据存储服务器出现错误而导致的日志集合中日志数据不能被完全存储为数据表。另外,在设置存储时间阈值的基础上,还可以设置了删除时间以周期性删除未完成存储的日志集合,这样可以减少数据存储服务器中的垃圾数据,增大可用空间,提高利用效率。
进一步的,本申请实施例中对日志集合中日志数据的数量也设置了存储数量阈值,当数据存储服务器中存在日志数据数量小于存储数量阈值的数据表时,就将这些数据表进行合并,这样可以减少数据表的数量,节省用户查询日志数据时需要查找的数据表数量,从而节省查询时间。
参见图6,示出了本申请的一种日志数据记录方法实施例2的流程图,本实施例还可以包括以下步骤:
步骤601、将根据日志获取条件获取到的日志数据组成日志集合;所述日志获取条件为按照日志数据的时间顺序获取日志,所述日志集合中所有日志数据的时间属于同一时间段;
步骤602、将所述日志集合中的日志数据按照业务类型分类,形成至少一个日志子集合;
在形成日志子集合时,可型划分成不同的业务范以将同样业务类型的日志数据组成一个日志子集合,也可以将各种业务类围,每个业务范围下具有一个或多个业务类型,这样,将业务类型属于同一业务范围的日志数据组成一个日志子集合。
步骤603、确定用于存储所述日志集合的数据存储服务器;
步骤604、将所述日志集合存储到所述数据存储服务器;
步骤605、根据所述日志集合中每个日志子集合中的日志数据,对应生成每个日志子集合的子数据表;
发送到数据存储服务器上的日志集合包含至少一个日志子集合,此时,为每个日志子集合创建一个子数据表,并将每个日志子集合中的日志数据都导入到对应的子数据表中去。
步骤606、将所述日志集合中所有日志子集合的子数据表组合成所述日志集合的数据表;
日志集合的所有日志子集合都完成了导入子数据表之后,再将各子数据表组合成对应日志集合的数据表。
步骤607、在所述日志集合的所有日志数据全部导入所述数据表之后,为所述日志集合的数据表创建索引。
创建索引时,可以先为各子数据表创建子索引,然后再将各子索引组成数据表的索引。
本实施例与图1所示的实施例1的区别在于,本实施例实际上是按照日志数据的时间将日志数据分入不同的日志集合中进行存储,然后在日志集合内又将日志数据按照业务类型分入不同的日志子集合。当然,也可以将同一时间段内获取到的日志数据直接按照业务类型分成多个业务类型。这样,可以使用户查询日志时,快速查找到目标日志所在的日志集合的数据表和子数据表,从而减少所需要查找的数据表数量,提高查询速度。
参见图7,示出了本申请的一种日志数据记录方法实施例3的流程图,在本实施例中,执行完前述实施例1的所有步骤之后,本实施例还可以包括以下步骤:
步骤701、将所述日志集合的数据表存储为独立的数据表文件集合;
本申请实施例中,数据表在存储服务器上是以数据表文件的形式进行存储的。为了便于对日志集合进行备份,每个日志集合数据表形成的数据表文件都是独立的,也即,每个数据表文件中的数据都是同一个日志集合的。需要说明的是,每个日志集合的数据表可以是一个,也可以是多个,并且,每个数据表至少形成一个数据表文件,所以,每个日志集合的数据表一般都包括多个数据表文件,所以,每个日志集合在整体上所对应的是一个独立的数据表文件集合,一个数据表文件集合即为该日志集合的一个备份副本。其中,每个数据表具体数量一般根据所使用的数据库确定的。为了实现每个数据表都存储为各自独立的数据表文件,本实施例优选采用mysql数据库,而在mysql数据库中的MyISAM数据引擎下,每个数据表至少被存储为三个数据表文件,三个数据表文件分别存储日志数据(数据文件)、索引(MYI文件)和表结构(FRM文件),此时,一个数据表对应三个数据表文件,在日志集合包括一个数据表时,该日志集合的数据表文件集合中包括三个数据表文件。
步骤702、复制所述日志集合对应的数据表文件集合的数据表文件;
由于每个日志集合存储在独立的数据表文件集合中,所以备份数据的时候,不再需要先在存储服务器上查找日志集合对应的日志数据再复制相应的语句去进行备份,而是可以直接将存储有日志集合的数据表文件集合中的数据表文件进行复制。
步骤703、从未存储所述数据表文件的存储服务器中确定用于存储所述复制得到的数据表文件的备份存储服务器;
在确定存储数据表文件的备份存储服务器时,如果一个日志集合的数据表文件集合中的所有数据表文件都存储在同一个存储服务器上,则该存储服务器一旦故障该日志集合的所有数据就都会丢失。为了避免这一问题,所确定的备份存储服务器可以是当前没有存储该日志集合的数据表文件的存储服务器。而在对一个日志集合进行首次备份时,该日志集合的数据表文件只存储在其数据存储服务器中,所以此时所确定的备份存储服务器只需要与数据存储服务器不同即可。
进一步地,如果一个日志集合的数据表文件集合中的所有数据表文件都存储在同一个交换机下的存储服务器上,则该交换机一旦故障该日志集合的所有数据也都会丢失。为了避免这一问题,所确定的备份存储服务器所属的交换机可以是所连接的所有存储服务器都没有存储该日志集合的交换机。由此,为了避免上述导致日志集合数据丢失问题,步骤703可以具体包括:将所连接的存储服务器中均未存储所述数据表文件集合的交换机确定为目标交换机;从所述目标交换机所连接的存储服务器中确定用于存储所述复制得到的所述数据表文件的备份存储服务器。
另外,为了使***内各个存储服务器的磁盘IO压力能够得到平衡,避免任务集中到一个磁盘执行,步骤703优选的确定备份存储服务器的方式,可以为:先从未存储所述数据表文件集合的存储服务器中查找当前未执行写任务的磁盘,然后在查找到的磁盘中确定剩余存储空间最大的一个磁盘作为用于存储复制得到的数据表文件集合的磁盘,然后将该磁盘所在存储服务器确定为备份存储服务器。其中,用于备份日志集合的磁盘可以是查找到的磁盘中剩余存储空间最大的磁盘,这样可以使得各磁盘的存储空间被平均使用,避免数据集中存储到部分磁盘所导致的数据丢失风险增大的问题。另外,用于备份日志集合的磁盘不是必须为查找到的磁盘中剩余存储空间最大的磁盘,也可以是任意一个当前未执行读写任务的磁盘,只要该磁盘的剩余存储空间能够满足存储该数据表文件的要求即可。
可以理解的是,对于一个日志集合来说,数据存储服务器和备份存储服务器的区别仅在于,数据存储服务器需要完成对该日志集合的记录,是***中首先存储该日志集合的存储服务器。而在备份完成以后,两者都是以数据表文件的形式存储了该日志集合,在此后执行的再次备份或者查询中,每个备份存储服务器都可以被视作一个数据存储服务器。
步骤704、将所述复制得到的数据表文件一一对应的存储到所述备份存储服务器当前未执行写任务的磁盘中。
根据上述步骤703的说明,将数据表文件存储到当前未执行写任务的磁盘中,可以避免任务集中到一个磁盘执行。另外,为了避免数据表文件存于一个备份存储服务器上而产生的丢失全部备份的风险,本实施例将备份文件一一对应的存储到备份存储服务器中,使同一日志集合的各份数据表文件存储在不同的备份存储服务器上,进一步的,还可以将同一数据表的各份数据表文件集合存储在不同交换机下的备份存储服务器上,这样可以防止交换机故障引起的备份全部丢失或无法读取的问题。
本实施例与图1所示的实施例1的区别在于,本实施例是在实施例1的基础上对已经记录的日志数据进行备份,使日志数据存储在多个不同存储服务器中,这样可以避免日志数据丢失,保证被记录的日志数据的安全性。进一步的,由于将日志集合存储为独立的数据表文件集合,所以在备份时可以直接复制数据表文件集合中的数据表文件来存储到其他存储服务器上,而不必通过查找后形成sql语句再复制语句执行的复杂备份过程,节省了备份日志数据的时间。
参见图8,示出了本申请的一种日志数据记录方法实施例4的流程图,在本实施例中,执行完前述实施例2的所有步骤之后,本实施例还可以包括以下步骤:
步骤801、监测所述日志集合的数据表文件的副本份数;
其中,所监测的数据表文件的副本份数,是在***内该日志集合的所有数据表文件进行备份之后的数量。对于一个日志集合,对其对应的数据表文件集合中的数据表文件数量的监测可以从该日志集合备份完成以后,也即步骤704之后开始。
步骤802、判断所述数据表文件的副本份数与预设的副本份数阀值之间的大小关系;
步骤803、如果所述数据表文件的副本份数大于所述副本份数阈值,则将差值数量的数据表文件删除;所述差值数量为所述数据表文件的副本份数与所述副本份数阈值之间的差值;
步骤804、如果所述数据表文件的副本份数小于所述副本份数阈值,则返回步骤702。
需要说明的是,在数据表文件的副本份数小于所述副本份数阈值时,返回步骤702所要复制得到数据表文件的数量可以等于所述差值数量。
本实施例与图7所示的方法实施例3的区别在于,本实施例是在日志集合备份完成以后监测数据表文件的数量,并在数据表文件集合的数量不等于副本份数阈值的时候进行调节,这样可以保证存储服务器中日志集合的备份数量维持稳定,从而在不占用过多存储空间的情况下保证所有日志数据不会丢失。
参见图9,示出了本申请的一种查询日志数据方法实施例1的流程图,在本实施例中可以包括:
步骤901、通过前述任一方法存储日志数据,所述日志集合中所有日志数据的时间都属于同一时间段;
本实施例中,日志集合的获取需要按照日志的时间顺序进行获取,这样每个日志集合对应于一个时间段,以便查询时可以根据日志时间确定日志所在的日志集合。
步骤902、通过前述任一方法备份日志数据;
需要说明的是,步骤902并不是一个必须执行的步骤,也即,只要所要查询的目标日志数据已经被记录,存储到数据存储服务器上,就可以进行查询,而此时是没有执行步骤902来完成数据备份。但通常情况下,所要查询的日志都是已经备份过的日志数据。
步骤903、记录所述日志集合与所述数据存储服务器之间、所述日志集合与所述备份存储服务器之间以及所述日志集合与时间段之间的对应关系;
需要说明的是,步骤901~903是预先执行的步骤,并不是每次查询时都要执行。并且,通常情况下,所查询的目标日志都已经被记录并备份,所以,每次查询目标日志的时候,是从步骤904开始执行的。
步骤904、接收日志数据查询请求;
本实施例中,日志数据查询请求中包含有所要查询的目标日志的信息,该信息包括日志的时间、业务类型、用户ID标识等等。另外,本实施例中,可以通过查询代理服务器proxy来实现为用户提供日志查询的服务。
步骤905、根据所述查询请求中目标日志数据的时间所在的时间段和所述日志集合与时间段之间的对应关系,确定所述目标日志数据所在的目标日志集合;
目标日志所在的时间段可以是一个,也可以是多个,而每个时间段对应的日志集合通常都是多个,所以确定的目标日志集合有多个。而通常目标日志属于其中的一个目标集合。
步骤906、根据所述日志集合与数据存储服务器之间的对应关系和/或所述日志集合与备份存储服务器之间的对应关系,从存储有所述目标日志集合数据表文件的数据存储服务器和备份存储服务器中,确定用于查询所述目标日志的查询存储服务器;
由于确定的目标日志集合有多个,所以对于每一个目标日志集合,都要确定一个查询存储服务器。由于每一个目标日志集合都在多个存储服务器上存有数据表文件,因此,对于一个目标日志集合来说,为了避免任务集中到一个磁盘执行,可以先确定该目标日志集合数据表文件所在的磁盘中当前负载状态最低的磁盘,然后将该磁盘所在的存储服务器确定为查询服务器,这样可以实现分散各存储服务器上磁盘任务从而提高磁盘的任务执行效率,缩短查询时间。其中,在根据数据表所在磁盘的负载状态选择查询存储服务器时,可以将CPU速度最快或内存最大的服务器选定为查询存储服务器,也可以将磁盘当前任务吞吐量最小的服务器选定为查询存储服务器。
另外,如果在查询目标日志时,该目标日志还未进行备份,则可以将数据存储服务器确定为查询存储服务器。
步骤907、在所述查询存储服务器上查找所述目标日志集合的数据表,并在查找到的数据表中查找所述目标日志数据;
查询代理服务器proxy去查询存储服务器上查找目标日志数据。本实施例中,查找优选采用sql语句。
步骤908、将查找到的目标日志数据合并输出。
将从各个查询存储服务器上查找到的所有符合目标日志的信息的目标日志合并输出给用户。
另外需要说明的,如果每个时间段的日志集合若按照业务类型或业务范围分成了日志子集合,则在查找时可以直接在目标日志集合中确定目标日志所在的目标日志子集合,这样可以只在目标日志集合数据表中的目标日志子集合的子数据表中查找即可。
通过本实施例的技术方案,由于存储服务器上各日志集合对应生成了不同的数据表,这样就可以先确定目标日志所在的目标集合,再在查询存储服务器上该目标日志集合的数据表上查找该目标日志数据,而不需要在查询存储服务器上查找所有数据表,从而提高了日志查询的速度,减小了查询的延迟时间。另外,由于目标日志集合在多个存储服务器上都有数据表的备份,所以可以选取该目标日志集合所在磁盘当前负载最低的存储服务器确定为查询存储服务器,这样可以提高在数据表上查找目标日志数据的速度,缩短查询所需的时间。
需要说明的是,上述的数据存储服务器、备份存储服务器和查询存储服务器都是对应于一个日志集合而言的,且只是对应于该日志集合的当前所执行任务而言。在实际日志记录中,一个日志集合的数据存储服务器既可以是其他日志集合的数据存储服务器,也可以是其他日志集合的备份存储服务器或查询服务器。而且,数据存储服务器只是针对日志数据的记录过程,备份存储服务器只是针对日志数据的备份过程,查询存储服务器只是针对日志数据的查询过程,而实际上,在***对已记录的日志集合未执行任务时,***可以只确定存储有该日志集合的存储服务器,而不区分数据存储服务器、备份存储服务器和查询存储服务器。
下面以具体的应用场景,详细说明本申请日志数据记录方法和查询方法的实施方式。
参见图10,示出了本申请日志数据记录方法的场景实施例的流程图。在本实施例的场景中,本申请日志数据记录方法应用于一个日志服务***。该***包括日志服务器master和存储服务器worker,其中,一个master对应多个worker。在本实施例的场景中,日志服务器master按照时间顺序依次将从分布式文件***中获取日志数据组成一个日志集合,再将日志集合按照记录存储到一个存储服务器worker,然后将日志数据备份到其他存储服务器worker上。本实施例具体可以包括:
步骤1001,生成日志数据:日志缓存服务器接收业务***发送的交互信息,并生成日志数据。
步骤1002、缓存日志数据:日志缓存服务器将已生成的日志数据发送给分布式文件***进行缓存;分布式文件***可以位于日志缓存服务器本地,也可以位于业务***,还可以位于日志服务***本地。
步骤1003、日志服务器获取日志数据,组成日志集合:master从分布式文件***中获取已生成的日志数据,组成一个日志集合,并将日志集合的时间段确定为前一次获取的时刻到本次获取的时刻,记录该日志集合与时间段之间的对应关系。日志数据被master获取之后,将其从分布式文件***中清除。若一次获取的日志数据数量过大,还可以将日志集合按照业务类型分成多个日志子集合,以对日志集合进行存储时按照日志子集合分类存储为不同的子数据表,这样查询日志数据时,可以根据日志时间和业务类型确定子数据表,再在子数据表中查找,进而缩小搜索范围,节省查询用时。
步骤1004、确定该日志集合的数据存储服务器:master从与其对应的worker中选择一个用来存储刚获取的日志集合。在选择时,首先查找各个worker上所有的未执行写任务的磁盘,然后在查找到的磁盘中确定剩余存储空间最大的一个用于存储该日志集合,再将该磁盘所在worker确定为该日志集合的数据存储服务器。若一次获取形成了多个不同业务类型的日志集合,也可以将为每个日志集合确定一个worker来完成后续步骤。
步骤1005、生成数据表并将日志集合导入:master将日志集合发送到步骤1004确定的worker,该worker在步骤1004确定的磁盘上创建一个数据表,并将该日志集合导入到该数据表中。若日志集合形成了多个日志子集合,则需要将日志子集合存储都各自的子数据表中,再将子数据表组成一个数据表。需要说明的是,在步骤1005进行的同时,执行步骤1007。
步骤1006、全部导入之后为该日志集合的数据表创建索引:master在存储该数据表的worker上为该数据表创建索引,并且记录日志集合与该worker之间的对应关系。
步骤1007、判断数据存储服务器在预设存储时间内是否返回存储完成消息,如果否进入步骤1008,如果是进入步骤1009:master将日志集合发送给该worker之后,等待接收worker返回的记录完成信息。该worker在完成将该日志集合中的所有日志数据存储之后,就发送记录完成信息给master。若master在预设时间内还未收到记录完成消息,则认为该worker出现故障,没有完成该日志集合的记录任务。
步骤1008、重新确定该日志集合的数据存储服务器,返回步骤1005:master未收到记录完成信息时,将在还未曾被确定为数据存储服务器的worker中重新确定一个worker来存储该日志集合。
步骤1009、将日志集合存储为独立的数据表文件集合:master控制存储该数据表的worker将该日志集合的数据表以独立的数据表文件集合的形式存储,从而形成该日志集合的一个备份副本。在mysql的MyISAM数据引擎下,一个数据表存储为三个数据表文件。
步骤1010、复制该数据表的数据表文件集合:master将该数据表文件集合在其所在worker上复制,从而形成新的日志集合备份副本。若该数据表已经被备份过,则master可以选择该日志集合在任意一个worker上的数据表文件集合进行复制。
步骤1011、确定备份存储服务器:master从当期未存储该数据表文件集合的worker中确定用于存储复制得到的数据表文件集合的worker。在确定备份存储服务器时,存储数据表文件的worker需要满足以下条件:具有当前未执行写任务的磁盘,这些磁盘中剩余空间最大的一个用于存储复制得到的数据表文件集合;worker的数量与复制得到的数据表文件集合的数量相同;各个worker之间位于不同的交换机之下。所述用于存储数据表文件的worker包括首次记录该日志集合的worker和存储复制得到的备份副本的worker,也即,包括数据存储服务器和备份存储服务器。
步骤1012、存储复制得到的数据表文件集合:master将步骤1010复制得到的数据表文件集合存储到步骤1011确定的worker中的指定磁盘,该指定磁盘为当前未执行写任务的磁盘中剩余空间最大的一个,每个worker存储日志集合的一个数据表文件集合。在master将数据表文件集合发送到对应的worker上之后,则等待接收该worker返回存储备份任务的完成信息。若master在预设的存储时间内没有接收到该信息,则可以重新将其他worker确定为备份存储服务器,再进行存储。在worker返回完成信息之后,master逐一记录该日志集合与每个存储该日志集合的数据表文件集合的worker之间的对应关系。
步骤1013、监测该日志集合的数据表文件的副本份数。
步骤1014、判断该数据表文件的副本份数是否等于预设副本份数阈值,如果数据表文件的副本份数大于副本份数阈值则进入步骤1015,如果数据表文件的副本份数小于副本份数阈值则返回步骤1010:预设副本份数阈值优选为3个。
步骤1015、删除过剩的数据表文件。
需要说明的是,步骤1015之后无论进入步骤1015还是返回步骤1010,删除的或复制得到的数据表文件的数量均为当前数据表文件的副本份数与副本份数阈值之间的差值。
步骤1016、判断各存储服务器上是否存在小数据表,如果是则进入步骤1017,如果否,进入步骤1018:该小数据表是指其中日志数据数量小于预设存储数量阈值的数据表。由于***需要不断地进行日志数据的记录和存储,所以,本步骤1016可以按照一个预设的合并时间周期性执行以监测***内是否存储了小数据表,而不是必须在日志集合完成备份之后再执行。
步骤1017、将小数据表合并为一个数据表:合并是将同一个worker上的小数据表进行合并。
步骤1018、删除各存储服务器中未完成存储的日志集合:本步骤是针对步骤1006中判断结果为否的情况下在worker上产生的废数据表。同样,由于***需要不断地进行日志数据的记录和存储,所以,本步骤1015也可以按照一个预设的删除时间周期性执行以监测***内是否存在废数据表,而并不是必须在日志集合完成备份之后再执行。
通过本场景实施例,可以实现对大量日志数据的快速记录和快速备份,平衡***内各存储服务器磁盘的IO压力,并且可以防止日志数据丢失、提高***存储空间的利用率,还有助于实现用户对日志数据的快速查询。
参见图11,示出了本申请查询日志数据方法的场景实施例的流程图。在本实施例的场景中,本申请查询日志数据方法可以应用于一个日志查询***,该***包括查询代理服务器proxy以及图10所示实施例中的日志服务器master和存储服务器worker。在本实施例的场景中,日志数据在日志服务***中的记录和备份都是通过图10所示的实施例来进行。本实施例可以包括:
步骤1101、接收日志数据查询请求:用户在查询日志数据时,要求用户必须输入目标日志的时间。若在日志记录时将日志集合按照业务类型分成了日志子集合,则还可以在查询时要求用户输入目标日志的业务类型。
步骤1102、确定目标日志集合:proxy根据日志数据查询请求中目标日志的时间,确定目标日志所在的时间段,然后查找master中记录的日志集合与时间段的对应关系,确定目标日志集合。若用户输入了业务类型,还可以查找master中记录的日志子集合和业务类型的对应关系,确定目标日志子集合。目标日志集合和目标日志子集合一般都为多个,而目标日志只属于其中一个。
步骤1103、确定查询存储服务器:对于每一个目标日志集合,proxy先通过master中记录的日志集合与worker的对应关系,查找所有存储该目标日志集合数据表文件的worker,然后再从查找到的worker中确定存储有该目标日志集合数据表文件的磁盘,再将确定的磁盘中负载状态最低的一个磁盘作为查询所用的磁盘,最后将查询所在的磁盘所在的worker确定为查询存储服务器。
步骤1104、在目标日志集合的数据表中查找目标日志数据:proxy在各目标日志集合的查询存储服务器worker上,根据各目标日志集合的数据表名查找各目标日志集合的数据表,并在各查找到的数据表上查找符合日志查询请求要求的目标日志。日志查询请求会包含如用户ID标识等信息,根据这些信息可以根据索引在数据表查找到对应的目标日志。若根据业务类型确定了目标日志子集合,则可以只在目标日志子集合对应的子数据表上中查找。
步骤1105、将查找到的目标日志合并输出:由于通常会在多个目标日志集合查找到目标日志,因此在输出查询结果之前,proxy需要将在各个查询存储服务器worker上查找的目标日志合并。
通过本场景实施例,可以缩短查询所需的时间,还可以使***中平衡各存储服务器上磁盘的IO压力,提高IO性能。
相应于上面的方法实施例,本申请实施例还提供一种日志数据记录的日志服务器。参见图12,示出了一种日志数据记录的日志服务器装置实施例1的结构示意图,可以包括:
日志集合形成模块1201,用于将根据日志获取条件获取到的日志数据组成日志集合;
数据存储服务器确定模块1202,用于确定用于存储所述日志集合的数据存储服务器;
其中,所述数据存储服务器确定模块1202,具体用于确定用于存储所述日志集合的数据存储服务器中当前未执行写任务的磁盘;
数据表生成模块1203,用于在所述数据存储服务器上生成所述日志集合的数据表;
日志***模块1204,用于将所述日志集合中的所有日志数据导入所述数据表;
索引创建模块1205,用于在所述日志集合的所有日志数据全部导入所述数据表之后,为所述日志集合的数据表创建索引。
参考图13,在实际应用中所述日志集合形成模块1201可以具体包括:
第一日志数据获取子模块1301,用于从分布式文件***中,获取前一次组成日志集合时刻之后生成的日志数据;
获取数量判断子模块1302,用于判断所述日志数据的条数是否达到预设的获取数据数量阈值;
触发获取子模块1303,用于在所述获取数量判断子模块1302的判断结果为否的情况下,等待第一等待时间之后触发所述日志数据获取模块;
第一日志组合子模块1304,用于在所述获取数量判断子模块1302的判断结果为是的情况下,将所述日志数据组成日志集合;所述日志集合对应的时间段为前一次组成日志集合的时刻至本次组成日志集合的时刻。
参考图14,在实际应用中所述日志集合形成模块1201也可以具体包括:
获取时间判断子模块1401,用于判断获取等待时间是否达到预设的等待时间阈值,所述获取等待时间为当前时刻与前一次组成日志集合的时刻之间的时间;
触发时间判断子模块1402,用于在所述获取时间判断子模块1401的判断结果为否的情况下,等待所述第二等待时间之后触发获取时间判断子模块1401;
第二日志数据获取子模块1403,用于在所述获取时间判断子模块1401的判断结果为是的情况下,从分布式文件***中,获取前一次组成日志集合时刻之后生成的用户日志数据;
第二日志组合子模块1404,用于将所述日志数据组成一个日志集合;所述日志集合对应的时间段为前一次组成日志集合的时刻至本次组成日志集合的时刻。
采用本实施例的日志服务器来对日志数据进行记录,可以避免因为每记录一条日志数据都需要更新日志存储设备的索引而导致的日志记录速度较慢的现象,使得日志记录的写入速度加快,从而使得网络平台能够及时地记录短时间内产生的大量日志数据,防止数据丢失,从而并且缩短用户查询的延迟时间。
参见图15,示出了一种日志数据记录的日志服务器装置实施例2的结构示意图,除了图12所示的日志服务器装置实施例1中的结构外,所述日志服务器还可以包括:
数据表完成判断模块1501,用于判断所述数据存储服务器在预设的存储时间内是否返回存储完成信息;所述存储完成信息为所述存储服务器在完成将所述日志集合中的所有日志数据导入所述数据表并为所述数据表创建索引之后返回的信息;
数据存储重新确定模块1502,用于在所述数据表完成判断模块1501的判断结果为否的情况下,从未曾被确定用于存储所述日志集合的存储服务器中重新确定用于存储所述日志集合的数据存储服务器;
触发存储模块1503,用于在所述数据存储重新确定模块1502启动的情况下,触发日志集合存储模块1203。
参见图16,日志服务器装置实施例2除了图15所示的所有结构外,所述日志服务器还包括:
删除集合模块1601,用于按照预设的删除时间周期性删除所述数据存储服务器中未完成存储的日志集合。
采用本实施例的日志服务器来记录日志数据,可以避免数据存储服务器出现错误而导致的日志集合中日志数据不能被完全存储为数据表。另外,还可以减少数据存储服务器中的垃圾数据,增大可用空间,提高利用效率。
参见图17,示出了一种日志数据记录的日志服务器装置实施例3的结构示意图,除了图12所示的日志服务器装置实施例1中的结构外,所述日志服务器还可以包括:
数据数量判断模块1701,用于按照预设的合并时间周期性判断所述数据存储服务器上是否存在日志数据数量小于预设的存储数量阈值的数据表;
集合合并模块1702,用于在所述数据数量1701的判断结果为是的情况下,将所述日志数据数量小于存储数量阈值的数据表合并。
采用本实施例的日志服务器来记录日志数据,可以减少数据表的数量,节省用户查询日志数据时需要查找的数据表数量,从而节省查询时间。
参见图18,示出了一种日志数据记录的日志服务器装置实施例4的结构示意图,除了图12所示的日志服务器装置实施例1中的结构外,所述日志服务器还可以包括:
日志子集合形成模块1801,用于将所述日志集合中的日志数据按照业务类型分类,形成至少一个日志子集合;
相应的,所述数据表生成模块1204包括:
子数据表生成子模块1802,用于根据所述日志集合中每个日志子集合中的日志数据,对应生成每个日志子集合的子数据表;
子数据表组合子模块1803,用于将所述日志集合中所有所述日志子集合的子数据表组合成所述日志集合的数据表。
采用本实施例的日志服务器来记录日志数据,可以使用户查询日志时,快速查找到目标日志所在的日志集合的数据表和子数据表,从而减少所需要查找的数据表数量,提高查询速度。
参见图19,示出了一种日志数据记录的日志服务器装置实施例5的结构示意图,除了图12所示的日志服务器装置实施例1中的结构外,所述日志服务器还可以包括:
备份生成模块1901,用于将所述日志集合的数据表存储为独立的数据表文件集合;
备份复制模块1902,用于复制所述日志集合对应的数据表文件集合的数据表文件;
备份服务器确定模块1903,用于从未存储所述数据表文件的存储服务器中确定用于存储所述复制得到的数据表文件的备份存储服务器;
其中,所述备份服务器确定模块1903,具体可以包括:第一确定子模块,用于将所连接的存储服务器中均未存储所述数据表文件的交换机确定为目标交换机;第二确定子模块,用于从所述目标交换机所连接的存储服务器中确定用于存储所述复制得到的所述数据表文件的备份存储服务器。
备份存储模块1904,用于将所述复制得到的数据表文件一一对应的存储到所述备份存储服务器当前未执行写任务的磁盘中。
采用本实施例的日志服务器来记录日志数据,可以提高备份文件存储的速度,节省备份所需要的时间,并平衡***中各磁盘的IO压力。
参见图20,示出了一种日志数据记录的日志服务器装置实施例6的结构示意图,除了图19所示的日志服务器装置实施例4中的结构外,所述日志服务器还可以包括:
数据表监测模块2001,用于监测所述日志集合的数据表文件的副本份数;
数据表数量判断模块2002,用于判断数据表文件的副本份数与预设的副本份数阀值之间的大小关系;
数据表删除模块2003,用于在所述数据表数量判断模块2002的判断结果为所述数据表文件的副本份数大于所述副本份数阈值的情况下,将差值数量的数据表文件删除;所述差值数量为所述数据表文件的副本份数与预设的副本份数阈值之间的差值;
触发复制模块2004,用于在所述数据表数量判断模块2002的判断结果为所述数据表文件的副本份数小于所述副本份数阈值的情况下,触发所述数据表复制模块1902。
采用本实施例的日志服务器来记录日志数据,可以保证存储服务器中日志集合的数据表文件数量维持稳定,从而在不占用过多存储空间的情况下保证日志数据不会丢失。
相应于上面的方法实施例,本申请实施例还提供一种日志数据记录的***。参见图21,示出了一种日志数据记录的***实施例1的结构示意图,可以包括:日志服务器2101和存储服务器2102;所述日志服务器2101为前述图12~图20所示的任一日志服务器;所述存储服务器2102包括数据存储服务器和/或备份存储服务器。
采用本实施例的***来记录日志数据,可以避免因为每记录一条日志数据都需要更新日志存储设备的索引而导致的日志记录速度较慢的现象,使得日志记录的写入速度加快,从而使得网络平台能够及时地记录短时间内产生的大量日志数据,防止数据丢失并且缩短用户查询的延迟时间,进一步的,还可以提高日志集合中日志数据的存储速度,避免日志数据的未完全存储或者丢失,减少数据存储服务器中的垃圾数据,增大可用空间,提高可利用率,节省查询时间、备份时间,平衡***内各磁盘的IO压力等。
相应于上面的方法实施例,本申请实施例还提供一种查询日志数据的***。参见图22,示出了一种查询日志数据的***实施例1的结构示意图,可以包括:
日志存储单元2201,用于通过图12~图18所示的任一日志服务器存储日志数据,所述日志集合中所有日志数据的时间都属于同一时间段;
日志备份单元2202,用于通过图19或图20所示的日志服务器备份日志数据;
对应关系记录单元2203,用于记录所述日志集合与所述数据存储服务器之间的对应关系之间、所述日志集合与所述备份存储服务器之间以及所述日志集合与时间段之间的对应关系;
查询请求接收单元2204,用于接收日志数据查询请求;
目标集合确定单元2205,用于根据所述查询请求中目标日志的时间所在的时间段,确定目标日志数据所在的目标日志集合;
查询服务器确定单元2206,用于根据所述日志集合与数据存储服务器之间的对应关系和所述日志集合与备份存储服务器之间的对应关系,从存储有所述目标日志集合数据表文件的数据存储服务器和备份存储服务器中,确定用于查询所述目标日志的查询存储服务器;
查找单元2207,用于在所述查询存储服务器上查找所述目标日志集合的数据表文件;
目标日志查找单元2208,用于根据所述目标日志集合的数据表文件中的数据表索引,在所述目标日志集合数据表文件的数据表中查找所述目标日志数据;
目标日志输出模块2209,用于将查找到的目标日志数据合并输出。
采用本实施例的***来查询日志数据,可以提高日志查询的速度,减小了查询的延迟时间,使存储服务器上的磁盘实现读写分离,平衡***内磁盘IO压力等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对于***实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的***实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (25)
1.一种日志数据记录的方法,其特征在于,包括:
将根据日志获取条件获取到的日志数据组成日志集合;
确定用于存储所述日志集合的数据存储服务器;
在所述数据存储服务器上生成所述日志集合的数据表,并将所述日志集合中的所有日志数据导入所述数据表;
在所述日志集合的所有日志数据全部导入所述数据表之后,为所述日志集合的数据表创建索引。
2.根据权利要求1所述的方法,其特征在于,所述将根据日志获取条件获取到的日志数据组成日志集合,包括:
从分布式文件***中,获取前一次组成日志集合时刻之后生成的日志数据;
判断所述日志数据的条数是否达到预设的获取数据数量阈值;
如果否,则等待第一等待时间之后返回所述判断所述获取前一次组成日志集合时刻之后生成的日志数据的步骤;
如果是,则将所述日志数据组成日志集合;所述日志集合对应的时间段为前一次组成日志集合的时刻至本次组成日志集合的时刻。
3.根据权利要求1所述的方法,其特征在于,所述将根据日志获取条件获取到的日志数据组成日志集合,包括:
判断获取等待时间是否达到预设的等待时间阈值,所述获取等待时间为当前时刻与前一次组成日志集合的时刻之间的时间;
如果否,则等待所述第二等待时间之后返回所述判断获取等待时间是否达到预设的等待时间阈值的步骤;
如果是,则从分布式文件***中,获取前一次组成日志集合时刻之后生成的日志数据,并将所述日志数据组成一个日志集合;所述日志集合对应的时间段为前一次组成日志集合的时刻至本次组成日志集合的时刻。
4.根据权利要求1所述的方法,其特征在于,所述日志获取条件为按照日志数据的时间顺序获取日志,所述日志集合中所有日志数据的时间属于同一时间段;
相应的,将根据日志获取条件获取到的日志数据组成日志集合之后,还包括:将所述日志集合中的日志数据按照业务类型分类,形成至少一个日志子集合;
相应的,所述在所述数据存储服务器上生成所述日志集合的数据表,包括:
根据所述日志集合中每个日志子集合中的日志数据,对应生成每个日志子集合的子数据表;
将所述日志集合中所有日志子集合的子数据表组合成所述日志集合的数据表。
5.根据权利要求1所述的方法,其特征在于,所述确定用于存储所述日志集合的数据存储服务器,具体为:确定用于存储所述日志集合的数据存储服务器中当前未执行写任务的磁盘。
6.根据权利要求1所述的方法,其特征在于,所述在所述数据存储服务器上生成所述日志集合的数据表之后,还包括:
判断所述数据存储服务器在预设的存储时间内是否返回存储完成信息;所述存储完成信息为所述存储服务器在完成将所述日志集合中的所有日志数据导入所述数据表并为所述数据表创建索引之后返回的信息;
如果否,则从未曾被确定用于存储所述日志集合的存储服务器中重新确定用于存储所述日志集合的数据存储服务器,并返回所述将所述日志集合存储到所述数据存储服务器的步骤。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
按照预设的删除时间周期性删除所述数据存储服务器中未完成存储的日志集合。
8.根据权利要求1所述的方法,其特征在于,所述在所述数据存储服务器上生成所述日志集合的数据表之后,还包括:
按照预设的合并时间周期性判断所述数据存储服务器上是否存在日志数据数量小于预设的存储数量阈值的数据表;如果是,则将所述日志数据数量小于存储数量阈值的数据表合并。
9.根据权利要求1所述的方法,其特征在于,所述为所述日志集合的数据表创建索引之后,还包括:
将所述日志集合的数据表存储为独立的数据表文件集合;
复制所述日志集合对应的数据表文件集合中的数据表文件;
从未存储所述数据表文件的存储服务器中确定用于存储所述复制得到的所述数据表文件的备份存储服务器;
将所述复制得到的数据表文件一一对应的存储到所述备份存储服务器当前未执行写任务的磁盘中。
10.根据权利要求9所述的方法,其特征在于,所述从未存储所述数据表文件的存储服务器中确定用于存储所述复制得到的所述数据表文件集合的备份存储服务器,包括:
将所连接的存储服务器中均未存储所述数据表文件集合的交换机确定为目标交换机;
从所述目标交换机所连接的存储服务器中确定用于存储所述复制得到的所述数据表文件的备份存储服务器。
11.根据权利要求9所述的方法,其特征在于,所述将所述复制得到的数据表文件存储到所述备份存储服务器中之后,还包括:
监测所述日志集合的数据表文件的副本份数;
判断所述数据表文件的副本份数与预设的副本份数阀值之间的大小关系;
如果所述数据表文件的副本份数大于所述副本份数阈值,则将差值数量的数据表文件删除;所述差值数量为所述数据表文件的副本份数与所述副本份数阈值之间的差值;
如果所述数据表文件的副本份数小于所述副本份数阈值,则返回所述复制所述日志集合对应的数据表文件集合的数据表文件的步骤。
12.一种查询日志数据的方法,其特征在于,通过权利要求1~11任意一项所述的方法存储日志数据,所述日志集合中所有日志数据的时间都属于同一时间段;通过权利要求9、10或11所述的方法备份日志数据;记录所述日志集合与所述数据存储服务器之间、所述日志集合与所述备份存储服务器之间以及所述日志集合与时间段之间的对应关系;
所述方法包括:
接收日志数据查询请求;
根据所述查询请求中目标日志数据的时间所在的时间段和所述日志集合与时间段之间的对应关系,确定所述目标日志数据所在的目标日志集合;
根据所述日志集合与数据存储服务器之间的对应关系和/或所述日志集合与备份存储服务器之间的对应关系,从存储有所述目标日志集合数据表文件的数据存储服务器和备份存储服务器中,确定用于查询所述目标日志的查询存储服务器;
在所述查询存储服务器上查找所述目标日志集合的数据表,并在查找到的数据表中查找所述目标日志数据;
将查找到的目标日志数据合并输出。
13.一种记录日志数据的日志服务器,其特征在于,包括:
日志集合形成模块,用于将根据日志获取条件获取到的日志数据组成日志集合;
数据存储服务器确定模块,用于确定用于存储所述日志集合的数据存储服务器;
数据表生成模块,用于在所述数据存储服务器上生成所述日志集合的数据表;
日志***模块,用于将所述日志集合中的所有日志数据导入所述数据表;
索引创建模块,用于在所述日志集合的所有日志数据全部导入所述数据表之后,为所述日志集合的数据表创建索引。
14.根据权利要求13所述的日志服务器,其特征在于,所述日志集合形成模块包括:
第一日志数据获取子模块,用于从分布式文件***中,获取前一次组成日志集合时刻之后生成的日志数据;
获取数量判断子模块,用于判断所述日志数据的条数是否达到预设的获取数据数量阈值;
触发获取子模块,用于在所述获取数量判断子模块的判断结果为否的情况下,等待第一等待时间之后触发所述日志数据获取模块;
第一日志组合子模块,用于在所述获取数量判断子模块的判断结果为是的情况下,将所述日志数据组成日志集合;所述日志集合对应的时间段为前一次组成日志集合的时刻至本次组成日志集合的时刻。
15.根据权利要求13所述的日志服务器,其特征在于,所述日志集合形成模块包括:
获取时间判断子模块,用于判断获取等待时间是否达到预设的等待时间阈值,所述获取等待时间为当前时刻与前一次组成日志集合的时刻之间的时间;
触发时间判断子模块,用于在所述获取时间判断子模块的判断结果为否的情况下,等待所述第二等待时间之后触发所述获取时间判断子模块;
第二日志数据获取子模块,用于在所述获取时间判断子模块的判断结果为是的情况下,从分布式文件***中,获取前一次组成日志集合时刻之后生成的日志数据;
第二日志组合子模块,用于将所述日志数据组成一个日志集合;所述日志集合对应的时间段为前一次组成日志集合的时刻至本次组成日志集合的时刻。
16.根据权利要求13所述的日志服务器,其特征在于,所述日志服务器还包括:
日志子集合形成模块,用于将所述日志集合中的日志数据按照业务类型分类,形成至少一个日志子集合;
相应的,所述数据表生成模块包括:
子数据表生成子模块,用于根据所述日志集合中每个日志子集合中的日志数据,对应生成每个日志子集合的子数据表;
子数据表组合子模块,用于将所述日志集合中所有所述日志子集合的子数据表组合成所述日志集合的数据表。
17.根据权利要求13所述的日志服务器,其特征在于,所述数据存储服务器确定模块,具体用于确定用于存储所述日志集合的数据存储服务器中当前未执行写任务的磁盘。
18.根据权利要求13所述的日志服务器,其特征在于,所述日志服务器还包括:
数据表完成判断模块,用于判断所述数据存储服务器在预设的存储时间内是否返回存储完成信息;所述存储完成信息为所述存储服务器在完成将所述日志集合中的所有日志数据导入所述数据表并为所述数据表创建索引之后返回的信息;
数据存储重新确定模块,用于在所述数据表完成判断模块的判断结果为否的情况下,从未曾被确定用于存储所述日志集合的存储服务器中重新确定用于存储所述日志集合的数据存储服务器;
触发存储模块,用于在所述数据存储重新确定模块启动的情况下,触发日志集合存储模块。
19.根据权利要求18所述的日志服务器,其特征在于,所述日志服务器还包括:
删除集合模块,用于按照预设的删除时间周期性删除所述数据存储服务器中未完成存储的日志集合。
20.根据权利要求13所述的日志服务器,其特征在于,所述日志服务器还包括:
数据数量判断模块,用于按照预设的合并时间周期性判断所述数据存储服务器上是否存在日志数据数量小于预设的存储数量阈值的数据表;
集合合并模块,用于在所述数据数量的判断结果为是的情况下,将所述日志数据数量小于存储数量阈值的数据表合并。
21.根据权利要求13所述的日志服务器,其特征在于,所述日志服务器还包括:
备份生成模块,用于将所述日志集合的数据表存储为独立的数据表文件集合;
备份复制模块,用于复制所述日志集合对应的数据表文件集合的数据表文件;
备份服务器确定模块,用于从未存储所述数据表文件的存储服务器中确定用于存储所述复制得到的数据表文件的备份存储服务器;
备份存储模块,用于将所述复制得到的数据表文件一一对应的存储到所述备份存储服务器当前未执行写任务的磁盘中。
22.根据权利要求21所述的日志服务器,其特征在于,所述备份服务器确定模块,包括:
第一确定子模块,用于将所连接的存储服务器中均未存储所述数据表文件的交换机确定为目标交换机;
第二确定子模块,用于从所述目标交换机所连接的存储服务器中确定用于存储所述复制得到的所述数据表文件的备份存储服务器。
23.根据权利要求21所述的日志服务器,其特征在于,所述日志服务器还包括:
数据表监测模块,用于监测所述日志集合的数据表文件的副本份数;
数据表数量判断模块,用于判断数据表文件的副本份数与预设的副本份数阀值之间的大小关系;
数据表删除模块,用于在所述数据表数量判断模块的判断结果为所述数据表文件的副本份数大于所述副本份数阈值的情况下,将差值数量的数据表文件删除;所述差值数量为所述数据表文件的副本份数与预设的副本份数阈值之间的差值;
触发复制模块,用于在所述数据表数量判断模块的判断结果为所述数据表文件的副本份数小于所述副本份数阈值的情况下,触发所述备份复制模块。
24.一种记录日志数据的***,其特征在于,所述***包括日志服务器和存储服务器;所述日志服务器为权利要求13~23任意一项所述的日志服务器;所述存储服务器包括数据存储服务器和/或备份存储服务器。
25.一种查询日志数据的***,其特征在于,所述***包括:
日志存储单元,用于通过权利要求13~23任意一项所述的日志服务器存储日志数据,所述日志集合中所有日志数据的时间都属于同一时间段;
日志备份单元,用于通过权利要求21、22或23所述的日志服务器备份日志数据;
对应关系记录单元,用于记录所述日志集合与所述数据存储服务器之间、所述日志集合与所述备份存储服务器之间以及所述日志集合与时间段之间的对应关系;
查询请求接收单元,用于接收日志数据查询请求;
目标集合确定单元,用于根据所述查询请求中目标日志的时间所在的时间段,确定目标日志数据所在的目标日志集合;
查询服务器确定单元,用于根据所述日志集合与数据存储服务器之间的对应关系和/或所述日志集合与备份存储服务器之间的对应关系,从存储有所述目标日志集合数据表文件的数据存储服务器和备份存储服务器中,确定用于查询所述目标日志的查询存储服务器;
查找单元,用于在所述查询存储服务器上查找所述目标日志集合的数据表;
目标日志查找单元,用于在查找到的数据表中查找所述目标日志数据;
目标日志输出模块,用于将查找到的目标日志数据合并输出。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310306476.3A CN104301360B (zh) | 2013-07-19 | 2013-07-19 | 一种日志数据记录的方法、日志服务器及*** |
HK15102899.1A HK1202722A1 (zh) | 2013-07-19 | 2015-03-23 | 種日誌數據記錄的方法、日誌服務器及系統 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310306476.3A CN104301360B (zh) | 2013-07-19 | 2013-07-19 | 一种日志数据记录的方法、日志服务器及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104301360A true CN104301360A (zh) | 2015-01-21 |
CN104301360B CN104301360B (zh) | 2019-03-12 |
Family
ID=52320927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310306476.3A Active CN104301360B (zh) | 2013-07-19 | 2013-07-19 | 一种日志数据记录的方法、日志服务器及*** |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104301360B (zh) |
HK (1) | HK1202722A1 (zh) |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105260399A (zh) * | 2015-09-17 | 2016-01-20 | 西安未来国际信息股份有限公司 | 一种分布式日志的采集和检索方法 |
CN105391772A (zh) * | 2015-10-16 | 2016-03-09 | 百度在线网络技术(北京)有限公司 | 业务请求处理方法、日志处理方法及装置 |
CN105528454A (zh) * | 2015-12-25 | 2016-04-27 | 北京奇虎科技有限公司 | 日志处理方法及分布式集群的计算设备 |
CN105989059A (zh) * | 2015-02-09 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 数据记录核对方法及装置 |
CN106055706A (zh) * | 2016-06-23 | 2016-10-26 | 杭州迪普科技有限公司 | 一种缓存资源存储方法及装置 |
CN106777371A (zh) * | 2017-01-23 | 2017-05-31 | 北京齐尔布莱特科技有限公司 | 日志收集***和方法 |
CN106815274A (zh) * | 2015-12-02 | 2017-06-09 | 中兴通讯股份有限公司 | 基于Hadoop的日志数据挖掘方法及*** |
CN106897281A (zh) * | 2015-12-17 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 一种日志分片方法和装置 |
CN107239377A (zh) * | 2016-03-29 | 2017-10-10 | 阿里巴巴集团控股有限公司 | 获取Java虚拟机运行状态的方法和装置 |
CN107306416A (zh) * | 2016-04-25 | 2017-10-31 | ***通信集团云南有限公司 | 业务日志的记录方法与装置 |
CN107590162A (zh) * | 2016-07-08 | 2018-01-16 | 中兴通讯股份有限公司 | 日志文件的存储方法及装置 |
CN107609895A (zh) * | 2017-08-10 | 2018-01-19 | 腾讯科技(深圳)有限公司 | 一种合并业务区域的处理方法及其设备 |
CN107644017A (zh) * | 2016-07-20 | 2018-01-30 | 平安科技(深圳)有限公司 | 日志文件的查询方法及装置 |
CN107835095A (zh) * | 2017-11-20 | 2018-03-23 | 杭州迪普科技股份有限公司 | 一种日志的处理方法及装置 |
CN108509455A (zh) * | 2017-02-28 | 2018-09-07 | 百度在线网络技术(北京)有限公司 | 数据表处理方法和装置 |
CN109117312A (zh) * | 2018-08-23 | 2019-01-01 | 北京小米智能科技有限公司 | 数据恢复方法及装置 |
CN109460318A (zh) * | 2018-10-26 | 2019-03-12 | 珠海市时杰信息科技有限公司 | 一种可回滚档案采集数据的导入方法、计算机装置及计算机可读存储介质 |
CN109471851A (zh) * | 2018-10-17 | 2019-03-15 | 上海达梦数据库有限公司 | 数据处理方法、装置、服务器和存储介质 |
CN109766218A (zh) * | 2018-12-21 | 2019-05-17 | 中信百信银行股份有限公司 | 基于分布式存储的数据备份方法 |
CN109828862A (zh) * | 2017-11-23 | 2019-05-31 | 成都华为技术有限公司 | 一种回放日志的方法和装置 |
CN109922490A (zh) * | 2019-01-28 | 2019-06-21 | 行目数据科技有限公司 | 一种数据防中断持续传输管理*** |
CN110019069A (zh) * | 2017-10-30 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种日志处理方法、装置及设备 |
CN110232048A (zh) * | 2019-06-12 | 2019-09-13 | 腾讯科技(成都)有限公司 | 日志文件的获取方法、装置及存储介质 |
CN110502545A (zh) * | 2019-08-15 | 2019-11-26 | 中国平安财产保险股份有限公司 | 数据存储方法、装置、设备及计算机可读存储介质 |
CN111198853A (zh) * | 2018-11-16 | 2020-05-26 | 北京微播视界科技有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN111400368A (zh) * | 2020-03-06 | 2020-07-10 | 网宿科技股份有限公司 | 一种分布式服务器***的日志查找方法及装置 |
CN111414343A (zh) * | 2020-02-24 | 2020-07-14 | 北京云途腾科技有限责任公司 | 日志写入方法、装置、电子设备和介质 |
CN111830039A (zh) * | 2020-07-22 | 2020-10-27 | 南京认知物联网研究院有限公司 | 一种智能化的产品质量检测方法及装置 |
CN112395360A (zh) * | 2020-12-01 | 2021-02-23 | 中国联合网络通信集团有限公司 | 基于非关系型数据库的数据同步方法、设备、装置和介质 |
CN112771624A (zh) * | 2018-09-20 | 2021-05-07 | 阿比奥梅德公司 | 用于非相接的医疗装置操作数据的数据存储和检索*** |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1932812A (zh) * | 2005-09-16 | 2007-03-21 | 腾讯科技(深圳)有限公司 | 一种日志保存方法及装置 |
CN101605028A (zh) * | 2009-02-17 | 2009-12-16 | 北京安天电子设备有限公司 | 一种日志记录合并方法和*** |
CN101763593A (zh) * | 2009-12-17 | 2010-06-30 | 中国电力科学研究院 | 一种实现***审计日志的方法及装置 |
CN101799894A (zh) * | 2010-01-11 | 2010-08-11 | 中冶东方工程技术有限公司 | 一种复杂网络环境下的epc工程数据处理***与方法 |
CN102750326A (zh) * | 2012-05-30 | 2012-10-24 | 浪潮电子信息产业股份有限公司 | 一种基于精简策略的集群***的日志管理优化方法 |
WO2012154838A2 (en) * | 2011-05-09 | 2012-11-15 | Google Inc. | Generating application recommendations based on user installed applications |
WO2013033123A2 (en) * | 2011-08-31 | 2013-03-07 | Google Inc. | Method and system for collecting and managing tv viewership data |
CN102981944A (zh) * | 2012-12-12 | 2013-03-20 | 青岛海信宽带多媒体技术有限公司 | 一种基于文件***的日志存储方法 |
-
2013
- 2013-07-19 CN CN201310306476.3A patent/CN104301360B/zh active Active
-
2015
- 2015-03-23 HK HK15102899.1A patent/HK1202722A1/zh unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1932812A (zh) * | 2005-09-16 | 2007-03-21 | 腾讯科技(深圳)有限公司 | 一种日志保存方法及装置 |
CN101605028A (zh) * | 2009-02-17 | 2009-12-16 | 北京安天电子设备有限公司 | 一种日志记录合并方法和*** |
CN101763593A (zh) * | 2009-12-17 | 2010-06-30 | 中国电力科学研究院 | 一种实现***审计日志的方法及装置 |
CN101799894A (zh) * | 2010-01-11 | 2010-08-11 | 中冶东方工程技术有限公司 | 一种复杂网络环境下的epc工程数据处理***与方法 |
WO2012154838A2 (en) * | 2011-05-09 | 2012-11-15 | Google Inc. | Generating application recommendations based on user installed applications |
WO2013033123A2 (en) * | 2011-08-31 | 2013-03-07 | Google Inc. | Method and system for collecting and managing tv viewership data |
CN102750326A (zh) * | 2012-05-30 | 2012-10-24 | 浪潮电子信息产业股份有限公司 | 一种基于精简策略的集群***的日志管理优化方法 |
CN102981944A (zh) * | 2012-12-12 | 2013-03-20 | 青岛海信宽带多媒体技术有限公司 | 一种基于文件***的日志存储方法 |
Cited By (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105989059A (zh) * | 2015-02-09 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 数据记录核对方法及装置 |
CN105989059B (zh) * | 2015-02-09 | 2019-12-24 | 阿里巴巴集团控股有限公司 | 数据记录核对方法及装置 |
CN105260399A (zh) * | 2015-09-17 | 2016-01-20 | 西安未来国际信息股份有限公司 | 一种分布式日志的采集和检索方法 |
CN105391772A (zh) * | 2015-10-16 | 2016-03-09 | 百度在线网络技术(北京)有限公司 | 业务请求处理方法、日志处理方法及装置 |
CN105391772B (zh) * | 2015-10-16 | 2019-02-22 | 百度在线网络技术(北京)有限公司 | 业务请求处理方法、日志处理方法及装置 |
CN106815274A (zh) * | 2015-12-02 | 2017-06-09 | 中兴通讯股份有限公司 | 基于Hadoop的日志数据挖掘方法及*** |
CN106897281A (zh) * | 2015-12-17 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 一种日志分片方法和装置 |
CN105528454A (zh) * | 2015-12-25 | 2016-04-27 | 北京奇虎科技有限公司 | 日志处理方法及分布式集群的计算设备 |
CN107239377B (zh) * | 2016-03-29 | 2021-02-26 | 阿里巴巴集团控股有限公司 | 获取Java虚拟机运行状态的方法和装置 |
CN107239377A (zh) * | 2016-03-29 | 2017-10-10 | 阿里巴巴集团控股有限公司 | 获取Java虚拟机运行状态的方法和装置 |
CN107306416A (zh) * | 2016-04-25 | 2017-10-31 | ***通信集团云南有限公司 | 业务日志的记录方法与装置 |
CN106055706A (zh) * | 2016-06-23 | 2016-10-26 | 杭州迪普科技有限公司 | 一种缓存资源存储方法及装置 |
CN106055706B (zh) * | 2016-06-23 | 2019-08-06 | 杭州迪普科技股份有限公司 | 一种缓存资源存储方法及装置 |
CN107590162A (zh) * | 2016-07-08 | 2018-01-16 | 中兴通讯股份有限公司 | 日志文件的存储方法及装置 |
CN107644017A (zh) * | 2016-07-20 | 2018-01-30 | 平安科技(深圳)有限公司 | 日志文件的查询方法及装置 |
CN106777371A (zh) * | 2017-01-23 | 2017-05-31 | 北京齐尔布莱特科技有限公司 | 日志收集***和方法 |
CN106777371B (zh) * | 2017-01-23 | 2019-12-06 | 北京齐尔布莱特科技有限公司 | 日志收集***和方法 |
CN108509455A (zh) * | 2017-02-28 | 2018-09-07 | 百度在线网络技术(北京)有限公司 | 数据表处理方法和装置 |
CN107609895A (zh) * | 2017-08-10 | 2018-01-19 | 腾讯科技(深圳)有限公司 | 一种合并业务区域的处理方法及其设备 |
CN110019069A (zh) * | 2017-10-30 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种日志处理方法、装置及设备 |
CN107835095A (zh) * | 2017-11-20 | 2018-03-23 | 杭州迪普科技股份有限公司 | 一种日志的处理方法及装置 |
CN109828862B (zh) * | 2017-11-23 | 2023-08-22 | 成都华为技术有限公司 | 一种回放日志的方法和装置 |
CN109828862A (zh) * | 2017-11-23 | 2019-05-31 | 成都华为技术有限公司 | 一种回放日志的方法和装置 |
CN109117312B (zh) * | 2018-08-23 | 2022-03-01 | 北京小米智能科技有限公司 | 数据恢复方法及装置 |
CN109117312A (zh) * | 2018-08-23 | 2019-01-01 | 北京小米智能科技有限公司 | 数据恢复方法及装置 |
CN112771624A (zh) * | 2018-09-20 | 2021-05-07 | 阿比奥梅德公司 | 用于非相接的医疗装置操作数据的数据存储和检索*** |
CN109471851A (zh) * | 2018-10-17 | 2019-03-15 | 上海达梦数据库有限公司 | 数据处理方法、装置、服务器和存储介质 |
CN109471851B (zh) * | 2018-10-17 | 2021-05-28 | 上海达梦数据库有限公司 | 数据处理方法、装置、服务器和存储介质 |
CN109460318A (zh) * | 2018-10-26 | 2019-03-12 | 珠海市时杰信息科技有限公司 | 一种可回滚档案采集数据的导入方法、计算机装置及计算机可读存储介质 |
CN109460318B (zh) * | 2018-10-26 | 2021-01-01 | 珠海市时杰信息科技有限公司 | 一种可回滚档案采集数据的导入方法、计算机装置及计算机可读存储介质 |
CN111198853B (zh) * | 2018-11-16 | 2023-08-22 | 北京微播视界科技有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN111198853A (zh) * | 2018-11-16 | 2020-05-26 | 北京微播视界科技有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN109766218A (zh) * | 2018-12-21 | 2019-05-17 | 中信百信银行股份有限公司 | 基于分布式存储的数据备份方法 |
CN109922490A (zh) * | 2019-01-28 | 2019-06-21 | 行目数据科技有限公司 | 一种数据防中断持续传输管理*** |
CN109922490B (zh) * | 2019-01-28 | 2022-01-28 | 广东中视信息科技有限公司 | 一种数据防中断持续传输管理*** |
CN110232048B (zh) * | 2019-06-12 | 2023-07-07 | 腾讯科技(成都)有限公司 | 日志文件的获取方法、装置及存储介质 |
CN110232048A (zh) * | 2019-06-12 | 2019-09-13 | 腾讯科技(成都)有限公司 | 日志文件的获取方法、装置及存储介质 |
CN110502545B (zh) * | 2019-08-15 | 2023-12-05 | 中国平安财产保险股份有限公司 | 数据存储方法、装置、设备及计算机可读存储介质 |
CN110502545A (zh) * | 2019-08-15 | 2019-11-26 | 中国平安财产保险股份有限公司 | 数据存储方法、装置、设备及计算机可读存储介质 |
CN111414343B (zh) * | 2020-02-24 | 2023-08-04 | 北京百度云途腾科技有限责任公司 | 日志写入方法、装置、电子设备和介质 |
CN111414343A (zh) * | 2020-02-24 | 2020-07-14 | 北京云途腾科技有限责任公司 | 日志写入方法、装置、电子设备和介质 |
CN111400368A (zh) * | 2020-03-06 | 2020-07-10 | 网宿科技股份有限公司 | 一种分布式服务器***的日志查找方法及装置 |
CN111400368B (zh) * | 2020-03-06 | 2023-12-12 | 网宿科技股份有限公司 | 一种分布式服务器***的日志查找方法及装置 |
CN111830039A (zh) * | 2020-07-22 | 2020-10-27 | 南京认知物联网研究院有限公司 | 一种智能化的产品质量检测方法及装置 |
CN112395360B (zh) * | 2020-12-01 | 2023-06-23 | 中国联合网络通信集团有限公司 | 基于非关系型数据库的数据同步方法、设备、装置和介质 |
CN112395360A (zh) * | 2020-12-01 | 2021-02-23 | 中国联合网络通信集团有限公司 | 基于非关系型数据库的数据同步方法、设备、装置和介质 |
Also Published As
Publication number | Publication date |
---|---|
HK1202722A1 (zh) | 2015-10-02 |
CN104301360B (zh) | 2019-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104301360A (zh) | 一种日志数据记录的方法、日志服务器及*** | |
CN105447075B (zh) | 用于动态划分的计算机实现方法 | |
CN102169507B (zh) | 一种分布式实时搜索引擎的实现方法 | |
US8250033B1 (en) | Replication of a data set using differential snapshots | |
US7480643B2 (en) | System and method for migrating databases | |
US8799601B1 (en) | Techniques for managing deduplication based on recently written extents | |
Santos et al. | Real-time data warehouse loading methodology | |
US20130110873A1 (en) | Method and system for data storage and management | |
CN102136003A (zh) | 大规模分布式存储*** | |
CN106934048A (zh) | 数据在线迁移方法、代理节点 | |
EP2380090B1 (en) | Data integrity in a database environment through background synchronization | |
CN103902623A (zh) | 用于在存储***上存取文件的方法和*** | |
CN103336849A (zh) | 一种数据库检索***中提高检索速度的方法及装置 | |
CN108694188B (zh) | 一种索引数据更新的方法以及相关装置 | |
CN103455526A (zh) | 一种etl数据处理方法、装置及*** | |
CN108717457B (zh) | 一种电子商务平台大数据处理方法和*** | |
CN105573859A (zh) | 一种数据库的数据恢复方法和设备 | |
CN104462389A (zh) | 基于分级存储的分布式文件***实现方法 | |
CN110737682A (zh) | 一种缓存操作方法、装置、存储介质和电子设备 | |
CN105787037A (zh) | 一种重复数据的删除方法及装置 | |
CN110008197A (zh) | 一种数据处理方法、***及电子设备和存储介质 | |
CN111930716A (zh) | 一种数据库扩容方法、装置及*** | |
CN103092891B (zh) | 分布式文件存储***及其实现方法 | |
CN106874343B (zh) | 一种时序数据库的数据删除方法及*** | |
CN104035822A (zh) | 一种低开销的高效内存去冗余方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1202722 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |