发明内容
本公开实施例至少提供一种日志存储的方法、装置、计算机设备和存储介质。
第一方面,本公开实施例提供了一种日志存储的方法,包括:
接收针对分布式日志的存储请求,所述存储请求中携带有第一日志源信息和第一日志标识,所述第一日志源信息包括上报所述分布式日志的客户端标识和服务器标识,所述第一日志标识包括所述分布式日志的日志顺序号;
根据所述第一日志源信息和所述第一日志标识,生成所述分布式日志的日志校对信息并存储,所述日志校对信息中包含用于指示是否存在与所述第一日志源信息和所述第一日志标识对应的分布式日志的信息。
在一种可能的实施方式中,根据所述第一日志源信息和所述第一日志标识,确定所述分布式日志的日志校对信息,具体包括:
根据所述第一日志标识分别确定所述分布式日志对应的第一校对组标识和第一组内标识;
确定所述第一日志源信息与所述第一校对组标识以及第一组内标识组成的键值对为所述分布式日志的日志校对信息。
在一种可能的实施方式中,还包括:
按照设定的检查周期,检查所述日志校对信息;
如果根据日志校对信息检查结果确定存在异常日志,则记录异常日志对应的异常日志校对信息。
在一种可能的实施方式中,还包括:
接收异常日志检查请求,所述异常日志检查请求中携带有第二日志源信息;
从记录的异常日志校对信息中查找所述第二日志源信息对应的第二校对组标识以及第二组内标识;
根据查找到的第二校对组标识以及第二组内标识确定异常日志的第二日志标识;
根据所述第二日志标识和所述第二日志源信息定位异常日志。
在一种可能的实施方式中,还包括:
如果根据日志校对信息检查结果确定来自于同一日志源的异常日志数量大于第一预设阈值,则生成告警信息,所述告警信息中包含第三日志源信息。
在一种可能的实施方式中,按照以下方式存储所述日志校对信息:
利用位图bitmap的数据结构存储所述日志校对信息。
在一种可能的实施方式中,在按照设定的检查周期,检查所述日志校对信息之前,还包括:
确定存储所述日志校对信息的bitmap数量大于第二预设阈值。
第二方面,本公开实施例还提供一种日志存储装置,包括:
接收单元,用于接收针对分布式日志的存储请求,所述存储请求中携带有第一日志源信息和第一日志标识,所述第一日志源信息包括上报所述分布式日志的客户端标识和服务器标识,所述第一日志标识包括所述分布式日志的日志顺序号;
确定单元,用于根据所述第一日志源信息和所述第一日志标识,生成所述分布式日志的日志校对信息并存储,所述日志校对信息中包含用于指示是否存在与所述第一日志源信息和所述第一日志标识对应的分布式日志的信息。
在一种可能的实施方式中,所述确定单元,具体用于根据所述第一日志标识分别确定所述分布式日志对应的第一校对组标识和第一组内标识;确定所述第一日志源信息与所述第一校对组标识以及第一组内标识组成的键值对为所述分布式日志的日志校对信息。
在一种可能的实施方式中,还包括:
检查单元,用于按照设定的检查周期,检查所述日志校对信息;
记录单元,用于如果根据日志校对信息检查结果确定存在异常日志,则记录异常日志对应的异常日志校对信息。
在一种可能的实施方式中,所述装置,还包括查找单元,其中:
所述接收单元,还用于接收异常日志检查请求,所述异常日志检查请求中携带有第二日志源信息;
所述查找单元,用于从所述记录单元记录的异常日志校对信息中查找所述第二日志源信息对应的第二校对组标识以及第二组内标识;根据查找到的第二校对组标识以及第二组内标识确定异常日志的第二日志标识;根据所述第二日志标识和所述第二日志源信息定位异常日志。
在一种可能的实施方式中,还包括:
报警单元,用于如果根据日志校对信息检查结果确定来自于同一日志源的异常日志数量大于第一预设阈值,则生成告警信息,所述告警信息中包含第三日志源信息。
在一种可能的实施方式中,所述确定单元,具体用于利用位图bitmap的数据结构存储所述日志校对信息。
在一种可能的实施方式中,所述检查单元,还用于确定存储所述日志校对信息的bitmap数量大于第二预设阈值。
第三方面,本公开可选实现方式还提供一种计算机设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
关于上述日志存储的方法、装置、计算机设备和存储介质的效果描述参见上述日志存储的方法的说明,这里不再赘述。
本公开实施例提供的日志存储的方法、装置、计算机设备和存储介质,针对待存储的分布式日志,根据日志源信息和日志标识生成日志校对信息,通过日志校对信息可以对存储的分布式日志进行异常检查,从而可以为后续定位异常日志提供帮助,相比于现有技术中直接转存分布式日志,在业务异常时,需要在多个服务器之间往返查找定位异常日志,能够降低异常日志的查找难度,提高异常日志数据查找效率。
进一步地,根据本公开提供的日志存储的方法,通过定期对日志校对信息进行检查并记录异常日志校对信息,在需要检查异常日志时,可以根据记录的异常日志校对信息快速定位异常日志,提高了异常日志定位的速度。
进一步地,根据本公开提供的日志存储的方法,根据异常日志检查结果,如果判断出来自于同一日志源的异常日志数量大于第一预设阈值时,生成告警信息,在告警信息中还可以包含产生异常日志的日志源信息,以提示用户及时对相应日志源进行检查。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
另外,本公开实施例中的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。
在本文中提及的“多个或者若干个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
经研究发现,分布式日志的上报是顺序的且每条日志都带有对应的日志标识,每个分布式日志到达中间服务器的机器是不固定的,时间也是不一样的,因此就产生了分布式的日志。由于缺乏对分布式日志的缺失性检查,不能及时检测服务器的问题,同时,当客户端数据出现偏差时,需要往返在多个中间件服务器中查找缺失的日志,再到相应的服务器查找对应的数据,这种方式增加了对错误进行定位的复杂性,由于需要多次查找,降低了数据查找的效率。
基于上述研究,本公开提供了一种日志存储的方法、装置、计算机设备和存储介质,根据日志标识和日志源信息生成日志校对信息,通过定期对日志校对信息进行检查并记录其中的异常日志校对信息,当数据出现偏差或异常时,可以直接查询异常日志校对信息定位异常日志,大大提高了定位问题的速度和效率,提高了数据查找的效率。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种日志存储的方法进行详细介绍,本公开实施例所提供的日志存储的方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该日志存储的方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
下面以执行主体为计算机设备为例对本公开实施例提供的日志存储的方法加以说明。
为便于对本实施例进行理解,首先对本公开实施例所公开的日志存储的应用场景进行介绍。本公开实施例所提供的日志存储的方法可以应用于图1a所示的日志存储系统中。该系统包括用于上报待存储分布式日志信息的多个服务器110,用于接收上报的分布式日志的中间服务器120和存储分布式日志校对信息的存储服务器,在一个实施例中,存储服务器可以包括redis(远程字典服务)服务器130。服务器110中安装有日志上报客户端,服务器110通过日志上报客户端向中间服务器120发送分布式日志的存储请求,每个服务器110的日志是顺序的,每条日志都有其对应的日志编号,在中间服务器120一侧根据负载均衡结果,各个服务器110上报的服务日志会被分配在不同的中间服务器120上进行处理。响应日志上报客户端发送的分布式日志的存储请求,中间服务器120在接收到待存储的分布式日志后,根据日志源标识和日志编号,确定日志校对信息存储到redis服务器130中,根据存储的日志校对信息可以帮助定位缺失的异常日志位置。
参见图1b所示,为本公开实施例提供的日志存储的方法的流程图,包括以下步骤:
S101:接收针对分布式日志的存储请求。
具体实施时,中间服务器接收来自于日志源服务器发送的针对分布式日志存储请求,日志存储请求中可以携带有第一日志源信息和第一日志标识。其中,日志源信息可以为上报分布式日志的客户端标识和服务器标识,第一日志源信息包括上报所述分布式日志的客户端标识和服务器标识,第一日志标识包括所述分布式日志的日志顺序号。
以日志源服务器为游戏服务器,产生分布式日志的客户端为游戏客户端为例,日志源信息可以包括游戏服务器标识和游戏客户端标识。在一个实施例中,游戏服务器标识可以采用游戏服务器IP(互联网协议)地址,游戏客户端标识可以采用客户端ID(身份标识)。
S102:根据日志存储请求中携带的日志源信息和日志标识,生成分布式日志的日志校对信息并存储。
具体实施时,在存储日志校对信息时,可以采用键值对形式的数据结构进行存储。其中,键(key)可以包括日志源信息和日志标识,值(value)表示相应的分布式日志是否存在,如果存在,可以将对应位置的value设置为1,如果不存在,可以将对应位置的value设置为0。
在一个实施例中,初始时,value默认值可以设置为0,根据步骤S101和步骤S102转存待存储日志时,将根据步骤S102中确定出的日志源信息和日志标识对应的值修改为1,即表示该日志源信息和该日志标识对应的分布式日志存在。
由于来自于同一日志源的分布式日志数量较大,为了进一步提高数据查找效率,根据本公开实施例,还可以对来自于同一日志源的分布式日志进行分组存储。
在这种实施方式中,可以根据日志标识分别确定分布式日志对应的第一校对组标识和第一组内标识,其中,第一校对组标识为分布式日志对应的校对组标识,第一组内标识为分布式日志在不同分组内的索引,这里,可以将第一日志源信息、第一校对组标识以及第一组内标识作为日志校对信息对应的组成的键值对中的key,将表示该第一日志源信息、第一校对组标识以及第一组内标识对应的分布式日志是否存在的数值作为日志校对信息对应的键值对中的value。
在一个实施例中,可以利用bitmap(位图)的数据结构存储步骤102中确定出的日志校对信息。如图1c所示,其为日志校对信息为bitmap的情况下的结构示意图。其中,IP1,IP2表示服务器地址,ID1,ID2,ID3,……表示客户端标识,SN1,SN2,SN3,……表示日志标识,值为1表示相应的日志信息存在,值为0表示相应的日志信息不存在。
在另一实施例中,为了保证异常日志检查结果的准确性,可以在确定存储来自于同一日志源的日志校对信息的bitmap数量大于第二预设阈值的情况下,再按照设定的检查周期,检查日志校对信息。
具体实施时,如果针对存储来自同一日志源的日志校对信息的bitmap数量达到第二预设阈值,则认为所有bitmap中前(N-K)个bitmap中存储的日志校对信息达到稳定状态,即该(N-K)个bitmap中存储的日志校对信息不再发生更新,这种情况下,再开始对该(N-K)个bitmap中存储的日志校对信息进行检查,其中,N为当前bitmap总数量,K为第二预设阈值。
其中,第二预设阈值可以根据经验值或者实际需要进行设定,本公开实施例对此不进行具体限定。
Bitmap的数据结构可以表示为uniqId_{{col}}和index标识,其中,uniqId_{{col}}是Bitmap的key,uniqId为上报分布式日志的服务器IP+日志上报的clientid(客户端标识),其表示日志校对信息中的日志源信息,col为该uniqId的偏移量,其为当前Bitmap在同种uniqId组合中的序号,其在日志校对信息中表示校对组标识,index为指示索引,在日志校对信息中表示日志组内标识,三者共同组成日志校对信息中的键。
在分布式系统中,每个日志源服务器上报的分布式日志是有序的,每条分布式日志有其对应的顺序号,具体实施时,可以采用分布式日志顺序号作为分布式日志的日志标识。
基于此,在一个实施例中,根据第一日志标识可以分别按照以下公式确定分布式日志对应的第一校对组标识和第一组内标识:
index=seq mod BitmapSize,其中:
col表示第一校对组标识;
seq表示分布式日志的日志标识;
BitmapSize表示预设的bitmap大小,为预设值,代表一个Bitmap可容纳最大日志记录数量;
index表示第一组内标识;
mod表示取余计算。
具体实施时,在确定出日志校对信息之后,修改bitmap中对应位置的值为1,即表示该日志校对信息对应的分布式日志存在,例如,bitmap有108位,初始值均为0,每存储一份分布式日志,就根据分布式日志的序号确定其对应在bitmap中的位置并将该位置的值设置为1。
例如,某分布式日志的seq为108,bitmap的大小设置为100B,则按照上述公式可以确定,对应得到的col为1,index为8;那么对应的同种bitmap中的序号为uniqId_1,所对应的bitmap中的第8位设置为1。
具体实施时,在确定出的日志校对信息之后,中间服务器可以将确定出的日志校对信息存储在本地,在一个实施例中,中间件服务器还可以将转换得到的日志校对信息存储在redis(远程字典服务)中。
实施例二
基于存储的日志校对信息,本公开实施例中,还可以按照设定的周期,对日志校对信息进行检查,以确定出其中的异常日志。如果根据日志校对信息检查结果确定存在异常日志,则记录异常日志对应的异常日志校对信息。具体实施时,即检查bitmap的值,如果bitmap的值为0,则说明日志源信息、第一校对组标识和第一组内标识所对应的分布式日志不存在,根据上述三者可以确定出异常日志的日志标识。
在一个实施例中,在记录了异常日志校对信息之后,可以删除实施例一中确定出的日志校对信息,即建立的bitmap数据,以释放存储空间。
基于上述描述,在需要定位异常日志时,可以按照图2所示的流程实施:
S201、接收异常日志检查请求。
其中,异常日志检查请求中携带有第二日志源信息。
S202、从记录的异常日志校对信息中查找第二日志源信息对应的第二校对组标识以及第二组内标识。
S203、根据查找到的第二校对组标识以及第二组内标识确定异常日志的第二日志标识。
具体实施时,可以根据公式seq=col*BitmapSize+index确定出异常日志的日志标识。以bitamp大小设置为100,日志校验信息uniqId_1第8位对应值是0为例,根据公式seq=col*BitmapSize+index可以确定出分布式日志的顺序号为108。
S204、根据第二日志标识和第二日志源信息定位异常日志。
本步骤中,结合日志校对信息中的uniqId可以确定出日志源服务器标识和客户端标识,由此,可以快速定位到异常日志,从而提高了异常日志的查找效率。
在另外一些实施例中,如果根据日志校对信息检查结果,确定来自于同一日志源的异常日志数量大于第一预设阈值,则生成告警信息,其中,告警信息中包含第三日志源信息,其中,告警信息中包含第三日志源信息,将生成的告警信息发送给管理用户,管理用户根据其中携带的第三日志源信息中的服务器标识,登录相应的服务器进行检查。
为了更好地理解本发明实施例,以下以服务器为游戏服务器为例对本发明的实施过程进行具体说明。
以不同的用户在安装的游戏客户端进行游戏的过程中产生的游戏数据为例,游戏服务器在用户游戏过程中记录相应的日志并根据日志的产生顺序依次编号得到各日志的顺序号,进而基于记录的游戏日志,通过游戏服务器中安装的日志上报客户端向中间件服务器发送分布式日志存储请求,其中携带有游戏服务器IP,日志上报客户端标识ID和日志顺序号Seq和相应的日志,中间服务器根据分布式日志存储请求中的游戏服务器IP和日志上报客户端ID以及每一个游戏日志的编号Seq生成日志校对信息中的键,并将相应键对应的值修改为1后,将生成的日志校对信息存储在redis中。
基于radis中存储的日志校对信息,按照一定的时间间隔对存储在redis中的日志校对信息进行检查,对于值为0的日志校对信息,根据该日志校对信息的键确定出日志顺序号Seq,根据Seq在游戏服务器本地查找到丢失的游戏日志并重新进行存储。
根据本公开实施例提供的日志存储的方法,还可以在服务器接收到来自客户端的异常日志检查请求时,服务器会根据异常日志检查请求中的日志源信息在记录的异常日志信息中查找出日志源信息中对应的日志校对组标识和组内标识,然后确定日志源信息的日志标识,根据得到的日志标识和日志源标识定位异常日志信息,这样可以避免服务器在接收到异常服务检查请求时,需要往返在多个中间服务器中定位异常日志信息而造成时间的浪费和降低了数据查找效率的问题。
参见图3所示,为本公开实施例提供的日志存储装置示意图,包括:
接收单元301,用于接收针对分布式日志的存储请求,所述存储请求中携带有第一日志源信息和第一日志标识,所述第一日志源信息包括上报所述分布式日志的客户端标识和服务器标识,所述第一日志标识包括所述分布式日志的日志顺序号;
确定单元302,用于根据所述第一日志源信息和所述第一日志标识,生成所述分布式日志的日志校对信息并存储,所述日志校对信息中包含用于指示是否存在与所述第一日志源信息和所述第一日志标识对应的分布式日志的信息。
在一种可能的实施方式中,所述确定单元302,具体用于根据所述第一日志标识分别确定所述分布式日志对应的第一校对组标识和第一组内标识;确定所述第一日志源信息与所述第一校对组标识以及第一组内标识组成的键值对为所述分布式日志的日志校对信息。
在一种可能的实施方式中,还包括:
检查单元303,用于按照设定的检查周期,检查所述日志校对信息;
记录单元304,用于如果根据日志校对信息检查结果确定存在异常日志,则记录异常日志对应的异常日志校对信息。
在一种可能的实施方式中,所述装置,还包括查找单元305,其中:
所述接收单元301,还用于接收异常日志检查请求,所述异常日志检查请求中携带有第二日志源信息;
所述查找单元305,用于从所述记录单元304记录的异常日志校对信息中查找所述第二日志源信息对应的第二校对组标识以及第二组内标识;根据查找到的第二校对组标识以及第二组内标识确定异常日志的第二日志标识;根据所述第二日志标识和所述第二日志源信息定位异常日志。
在一种可能的实施方式中,所述装置,还包括:
报警单元306,用于如果根据日志校对信息检查结果确定来自于同一日志源的异常日志数量大于第一预设阈值,则生成告警信息,所述告警信息中包含第三日志源信息。
在一种可能的实施方式中,所述确定单元302,具体用于利用位图bitmap的数据结构存储所述日志校对信息。
在一种可能的实施方式中,所述检查单元303,还用于确定存储所述日志校对信息的bitmap数量大于第二预设阈值。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
本公开实施例还提供了一种计算机设备,如图4所示,为本公开实施例提供的计算机设备结构示意图,包括:
处理器41和存储器42;所述存储器42存储有处理器41可执行的机器可读指令,处理器41用于执行存储器42中存储的机器可读指令,所述机器可读指令被处理器41执行时,处理器41执行下述步骤:S101:接收针对分布式日志的存储请求;以及S102:根据日志存储请求中携带的日志源信息和日志标识,生成分布式日志的日志校对信息并存储。
上述存储器42包括内存421和外部存储器422;这里的内存421也称内存储器,用于暂时存放处理器41中的运算数据,以及与硬盘等外部存储器422交换的数据,处理器41通过内存421与外部存储器422进行数据交换。
在一种可能的实施方式中,处理器41执行的指令中,根据所述第一日志源信息和所述第一日志标识,确定所述分布式日志的日志校对信息,具体包括:
根据所述第一日志标识分别确定所述分布式日志对应的第一校对组标识和第一组内标识;
确定所述第一日志源信息与所述第一校对组标识以及第一组内标识组成的键值对为所述分布式日志的日志校对信息。
在一种可能的实施方式中,处理器41执行的指令中,还包括:
按照设定的检查周期,检查所述日志校对信息;
如果根据日志校对信息检查结果确定存在异常日志,则记录异常日志对应的异常日志校对信息。
在一种可能的实施方式中,处理器41执行的指令中,还包括:
接收异常日志检查请求,所述异常日志检查请求中携带有第二日志源信息;
从记录的异常日志校对信息中查找所述第二日志源信息对应的第二校对组标识以及第二组内标识;
根据查找到的第二校对组标识以及第二组内标识确定异常日志的第二日志标识;
根据所述第二日志标识和所述第二日志源信息定位异常日志。
在一种可能的实施方式中,处理器41执行的指令中,还包括:
如果根据日志校对信息检查结果确定来自于同一日志源的异常日志数量大于第一预设阈值,则生成告警信息,所述告警信息中包含第三日志源信息。
在一种可能的实施方式中,处理器41执行的指令中,按照以下方式存储所述日志校对信息:
利用位图bitmap的数据结构存储所述日志校对信息。
在一种可能的实施方式中,处理器41执行的指令中,在按照设定的检查周期,检查所述日志校对信息之前,还包括:
确定存储所述日志校对信息的bitmap数量大于第二预设阈值。
上述指令的具体执行过程可以参考本公开实施例中所述的日志存储的方法的步骤,此处不再赘述。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的日志存储的方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例所提供的日志存储的方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的日志存储的方法的步骤,具体可参见上述方法实施例,在此不再赘述。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。