发明内容
本申请实施例的目的是提供一种关系网络数据的维护方法、离线服务器及实时服务器,使网络平台能够在离线服务器处理完用户操作记录后,及时访问到预设时间节点之后的关系网络数据。
本申请实施例提供的一种关系网络数据的维护方法、离线服务器及实时服务器是这样实现的:
一种关系网络数据的维护方法,包括:
离线服务器获取预设时间节点之前的用户操作记录;
离线服务器对所述预设时间节点之前的用户操作记录进行计算,得到所述预设时间节点之前的第一子网络数据;
离线服务器将第一子网络数据同步到实时服务器中并向实时服务器发送所述预设时间节点;
实时服务器存储第一子网络数据并获取所述预设时间节点之后的用户操作记录;
实时服务器对所述预设时间节点之后的用户操作记录进行计算,得到第二子网络数据,并将第二子网络数据与第一子网络数据合并为第三子网络数据,并将合并后的第三子网络数据更新到在线服务器中。
一种关系网络数据的维护方法,包括:
离线服务器获取预设时间节点之前的用户操作记录;
离线服务器对所述预设时间节点之前的用户操作记录进行计算,得到所述预设时间节点之前的第一子网络数据;
离线服务器将第一子网络数据同步到在线服务器中并向实时服务器发送所述预设时间节点;
实时服务器获取所述预设时间节点之后的用户操作记录;
实时服务器对所述预设时间节点之后的用户操作记录进行计算,得到第二子网络数据,并将第二子网络数据合并到在线服务器中。
一种关系网络数据的维护方法,包括:
离线服务器获取预设时间节点之前的用户操作记录;
离线服务器对所述预设时间节点之前的用户操作记录进行计算,得到所述预设时间节点之前的第一子网络数据;
离线服务器将第一子网络数据同步到实时服务器或在线服务器中,并向实时服务器发送所述预设时间节点。
一种关系网络数据的维护方法,包括:
实时服务器存储从离线服务器同步的第一子网络数据并接收预设时间节点;
实时服务器获取预设时间节点之后的用户操作记录;
实时服务器对所述预设时间节点之后的用户操作记录进行计算,得到第二子网络数据,并将第二子网络数据与第一子网络数据合并为第三子网络数据,并将合并后的第三子网络数据更新到在线服务器中。
一种关系网络数据的维护方法,包括:
实时服务器接收预设时间节点并获取预设时间节点之后的用户操作记录;
实时服务器对所述预设时间节点之后的用户操作记录进行计算,得到第二子网络数据,并将第二子网络数据合并到在线服务器中。
一种离线服务器,包括:
用户操作记录获取单元,用来获取预设时间节点之前的用户操作记录;
计算单元,用来对所述预设时间节点之前的用户操作记录进行计算,得到所述预设时间节点之前的第一子网络数据;
子网络数据同步单元,用来将第一子网络数据同步到实时服务器中并向实时服务器发送所述预设时间节点。
一种离线服务器,包括:
用户操作记录获取单元,用来获取预设时间节点之前的用户操作记录;
计算单元,用来对所述预设时间节点之前的用户操作记录进行计算,得到所述预设时间节点之前的第一子网络数据;
子网络数据更新单元,用来将第一子网络数据同步到在线服务器中并向实时服务器发送所述预设时间节点。
一种实时服务器,包括:
存储单元,用来存储离线服务器同步的第一子网络数据;
用户操作记录读取单元,用来获取预设时间节点之后的用户操作记录;
计算单元,用来对所述预设时间节点之后的用户操作记录进行计算,得到第二子网络数据;
合并单元,用来将第二子网络数据与第一子网络数据合并为第三子网络数据;
更新单元,用来将合并后的第三子网络数据更新到在线服务器中。
一种实时服务器,包括:
用户操作记录读取单元,用来获取预设时间节点之后的用户操作记录;
计算单元,用来对所述预设时间节点之后的用户操作记录进行计算,得到第二子网络数据;
合并单元,用来将第二子网络数据合并到在线服务器中。
通过上述本申请的实施例可以发现,离线服务器对预设时间节点之前的用户操作记录进行计算后,实时服务器可以及时对预设时间节点之后的用户操作记录进行补充,从而可以使网络平台能够在离线服务器处理完用户操作记录后,及时访问到预设时间节点之后的关系网络数据。
具体实施方式
本申请实施例提供一种关系网络数据的维护方法、离线服务器及实时服务器。为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请提供的一种关系网络数据的维护方法中涉及离线服务器、实时服务器和在线服务器。其中,离线服务器可以在线下环境中,负责大数据量的计算;实时服务器和在线服务器可以位于同一个网络环境中。另外,实时服务器还可以作为一个软件模块或者硬件模块集成于在线服务器中。图1是本申请一种关系网络数据的维护方法的第一实施例的流程图。如图1所示,所述关系网络数据的维护方法包括以下步骤:
S1:离线服务器获取预设时间节点之前的用户操作记录。
网络平台系统中,用户在线上环境中的操作,例如“增、删、改”,都可以被记入用户操作记录中。存储用户操作记录的软件系统多种多样,包括:文件系统、MySQL数据库、HBase数据库等。
离线服务器可以以一个固定的周期,对平台系统记录的用户操作进行同步。例如,离线服务器以天为周期,每天都对线上生产环境中当天的用户操作记录进行同步。进一步地,离线服务器可以设定一个具体时间节点,例如每天的23时59分59秒。这样,离线服务器就可以在每天的23时59分59秒对该时间节点之前的用户操作记录进行同步。上述每天的时间节点可以作为步骤1中所述的预设时间节点。此外,离线服务器也可以以非固定的周期对平台系统记录的用户操作执行上述同步操作。
离线服务器在进行同步操作的时候,可以采用增量同步方式。具体的,在首次同步之后的每次同步中,可以只同步最后一个周期的数据。以上述的例子分析,离线服务器在2014年9月24日23时59分59秒进行用户操作记录同步的时候,只需对2014年9月23日23时59分59秒至2014年9月24日23时59分59秒的用户操作记录进行同步即可,因为2014年9月23日23时59分59秒之前的用户操作记录已经在之前同步过程中已经处理过了。具体地,假设线上生产环境中是用文件系统实现用户操作记录存储的,那么线上生产环境每天可以滚动生成一个用户操作记录文件,比如2014年9月24日的用户操作数据则存储到“用户操作记录-2014.09.24.log”文件中。那么离线服务器在2014年9月24日23时59分59秒进行同步时,可以增量地读取或者拷贝“用户操作记录-2014.09.24.log”文件即可。假设线上生产环境中是用HBase数据库实现用户操作记录存储的,那么线上生产环境可以使用HBase数据库自带的数据备份工具将最后一个周期的数据存储到离线服务器;也可以利用HBase数据库的scan操作,将最后一个周期时间段内的数据读取到离线服务器中。HBase中scan类部分常用方法说明如下:
//scan.setTimeRange();//指定最大的时间戳和最小的时间戳,只有在此范围内的cell才能被获取.
//scan.setTimeStamp();//指定时间戳
//scan.setFilter();//指定Filter来过滤掉不需要的信息
//scan.setStartRow();//指定开始的行。如果不调用,则从表头开始;
//scan.setStopRow();//指定结束的行(不含此行);
//scan.setBatch();//指定最多返回的Cell数目。用于防止一行中有过多的数据,导致OutOfMemory错误。
当然,离线服务器在进行同步操作的时候,也可以根据需要采用全部同步的方式处理,这里并不限定。
在每个所述预设时间周期内,可以进行步骤S2至S5的处理:
S2:离线服务器对所述预设时间节点之前的用户操作记录进行计算,得到所述预设时间节点之前的第一子网络数据。
离线服务器读取所述预设时间节点之前的用户操作记录后,可以按下述步骤进行处理:
S201:离线服务器将预设时间节点之前的每条用户操作记录拆解为包括子网络主体和子网络边的数据。
步骤S201中拆解后的子网络主体可以包括起始主体和终止主体。
举个例子来说明:有一条用户操作记录为用户1在设备1上使用信用卡1进行支付。离线服务器在对这条操作记录进行拆解后,便得到子网络主体为用户1、设备1以及信用卡1;子网络边为支付。根据操作记录,离线服务器可以确定出起始主体和终止主体,并将起始主体、终止主体以及子网络边保存到子网络表中,具体如表1所示:
表1:子网络表
起始主体 |
终止主体 |
子网络边 |
用户1 |
设备1 |
支付 |
用户1 |
信用卡1 |
支付 |
设备1 |
信用卡1 |
支付 |
离线服务器处理完这条用户操作记录后会继续用同样的方法处理之后的用户操作记录,最终可以得到由若干个子网络数据组成的子网络表,具体如表2所示:
表2:子网络表
起始主体 |
终止主体 |
子网络边 |
用户1 |
设备1 |
支付 |
用户1 |
信用卡1 |
支付 |
设备1 |
信用卡1 |
支付 |
用户2 |
设备2 |
支付 |
用户2 |
信用卡2 |
支付 |
设备2 |
信用卡2 |
支付 |
用户1 |
设备2 |
支付 |
… |
… |
… |
从表2中可以看出,离线服务器将预设时间段内的用户操作数据逐条拆解为起始主体,终止主体以及子网络边,并将所述起始主体,终止主体以及子网络边都保存在子网络表中。
用户操作记录中涉及的主体和子网络边可以附带一个初始的标识,该标识用以区别不同主体和不同子网络边。另外,用户操作记录中涉及的子网络边还可以附带一个初始的时间信息,用以记录该子网络边产生的确切时间点。离线服务器确定出起始主体和终止主体以及它们之间的子网络边后,可以清空这些起始主体、终止主体以及子网络边的标识。
S202:离线服务器按照预设规则对所述拆解后的数据基于所述子网络主体和子网络边进行归并处理,得到预设时间节点之前的第一子网络数据。
离线服务器可以对所述子网络表中的子网络主体进行归并处理,得到主体与子网络的对应关系。离线服务器对所述子网络表中的子网络主体进行归并处理时可以遵循以下规则:
如果起始主体和终止主体都没有标识,则离线服务器生成一个标识,分配给起始主体和终止主体;
如果起始主体有标识,而终止主体没有标识,则将起始主体的标识分配给终止主体;
如果起始主体没有标识,而终止主体有标识,则将终止主体的标识分配给起始主体;
如果起始主体和终止主体的标识不一样,则清除终止主体的标识,然后将起始主体的标识分配给终止主体,并且将与所述终止主体相关联的所有主体的标识均修改为所述终止主体的标识;
如果起始主体和终止主体的标识一样,则不进行处理。
其中,离线服务器生成的标识为唯一标识。
上述进行归并处理时遵循的规则就可以为预设规则。
继续以步骤S201的例子来说明:
首先对表2中第一条执行上述处理。起始主体为用户1,终止主体为设备1,其中用户1没有标识,设备1也没有标识,根据上述的归并原则,离线服务器生成一个标识A,并将用户1和设备1的标识设置为A;
对表2中第二条执行上述处理。起始主体为用户1,终止主体为信用卡1,其中用户1的标识为A,信用卡1没有标识,根据上述的归并原则,将信用卡1的标识设置为A;
对表2中第三条执行上述处理。起始主体为设备1,终止主体为信用卡1,其中设备1的标识为A,信用卡1的标识也为A,根据上述的归并原则,不进行处理。
对表2中第四条执行上述处理。起始主体为用户2,终止主体为设备2,其中用户2没有标识,设备2也没有标识,根据上述的归并原则,离线服务器生成一个与标识A不同的标识B,并将用户2和设备2的标识设置为B。
以此类推,表2中第五条和第六条中的主体标识均设置为B;对表2中第七条,起始主体为用户1,终止主体为设备2,其中用户1的标识为A,设备2的标识为B,根据上述的归并原则,将设备2的标识清除,然后将用户1的标识A分配给设备2,并且将与设备2相关联的所有主体的标识均修改为A,即将用户2和信用卡2的标识均由B修改为A。
最终,处于同一个子网络中的起始主体和终止主体就具有相同的标识;处于不同子网络中的主体具有不同的标识。
离线服务器可以继续将该同一子网络中主体的标识分配给子网络边,这样就能保证处于同一个子网络中的主体和边都具备相同的标识,该相同的标识可以定义为子网络标识,标识归并处理后的子网络表如表3所示:
表3:标识归并处理后的子网络表
这样,子网络中的起始主体,终止主体,子网络边,子网络边的时间信息以及子网络标识就可以为预设时间节点之前的第一子网络数据。
S3:离线服务器将第一子网络数据同步到实时服务器中并向实时服务器发送所述预设时间节点。
离线服务器可以将所述预设时间节点之前的第一子网络数据同步到实时服务器。具体实现方式可以使用HBase数据库自带的数据备份工具将子网络数据保存到实时服务器中;也可以利用HBase数据库的scan操作,将预设时间段内的子网络数据读取到实时服务器中。
离线服务器可以在预设时间节点之前的第一子网络数据同步完毕后,向实时服务器发送所述预设时间节点。例如,离线服务器是对2014年9月24日23时59分59秒之前的用户操作记录进行处理的,那么在这个时间节点之前的子网络数据同步完成后,可以将2014年9月24日23时59分59秒这个时间节点发送给实时服务器。这样,实时服务器便可以从2014年9月24日23时59分59秒开始处理之后的用户操作记录。
S4:实时服务器存储第一子网络数据并获取所述预设时间节点之后的用户操作记录。
实时服务器接收到离线服务器发来的预设时间节点后,可以存储所述离线服务器同步的预设时间节点之前的子网络数据,留作后续处理。步骤S1中提到,平台系统产生的用户操作记录可以存储在软件系统中。存储用户操作记录的软件系统可以位于一个独立的数据服务器中,该数据服务器可以位于平台系统所处的线上环境中;存储用户操作记录的软件系统还可以作为一个软件模块集成于实时服务器中,便于实时服务器对其进行更加快速的访问。实时服务器可以对所述预设时间节点之后的用户操作记录进行判定:如果没有产生用户操作记录,实时服务器等待用户记录产生;如果产生了用户操作记录,则读取所述预设时间节点之后的用户操作记录。
S5:实时服务器对所述预设时间节点之后的用户操作记录进行计算,得到第二子网络数据,并将第二子网络数据与第一子网络数据合并为第三子网络数据。
实时服务器针对每条预设时间节点之后的用户操作记录,首先可以将预设时间节点之后的每条用户操作记录拆解为包括子网络主体和子网络边的数据。接着实时服务器可以按照预设规则对所述拆解后的数据基于所述子网络主体和子网络边进行归并处理,得到第二子网络数据。所述归并处理与步骤S202类似,这里便不再赘述。然后实时服务器可以基于所述第二子网络数据中的子网络主体和子网络边将第二子网络数据与第一子网络数据合并为第三子网络数据。具体的流程如下所述:
实时服务器根据所述拆解出的主体,在存储的第一子网络数据中查找所述拆解出的主体对应的子网络及子网络标识。若查找到的子网络标识相同,说明所述拆解出的主体位于同一个子网络中。进一步地可以通过拆解出的子网络边的时间信息,判定所述拆解的用户操作记录是否已经存在于存储的第一子网络数据中。如果所述拆解的用户操作记录已经存在于存储的第一子网络数据中,则直接跳过该条用户操作记录,进行下一条用户操作记录的处理;如果所述拆解的用户操作记录不存在于存储的第一子网络数据中,可以直接将所述拆解出的主体和子网络边的标识设置为所述寻找出的子网络标识后合并到所述存储的第一子网络数据中。
举个例子来说明:一条用户操作记录为用户1在利用信用卡1进行支付操作。实时服务器获取该条用户操作记录后,可以将该用户操作记录拆解为:用户1,信用卡1这两个主体以及支付这个子网络边,假设支付的时间为2014年9月24日9时24分38秒,则该用户操作记录中的支付操作便拥有一个时间信息,假设为0020140924092438。实时服务器接着可以在存储的第一子网络数据中寻找用户1和信用卡1对应的标识。假设查找出的用户1和信用卡1的标识都为A1,则表明用户1和信用卡1处于同一个子网络中。此时,实时服务器可以继续比对用户1和信用卡1之间的支付操作的时间信息,假设在存储的第一子网络数据中也存在用户1和信用卡1之间的一个支付操作,并且该支付操作的时间信息同样为0020140924092438,则表明目前实时服务器处理的该用户操作记录其实已经存在于存储的第一子网络数据中了。为了不重复对数据进行处理,实时服务器可以直接跳过该用户操作记录,进行下一条用户操作记录的处理。如果在存储的第一子网络数据中用户1和信用卡1之间的支付操作对应的时间信息与该用户操作记录中用户1和信用卡1之间的支付操作对应的时间信息不相同,则表明该用户操作记录与存储的第一子网络数据不重复,那么便可以将该用户操作记录中的用户1,信用卡1以及支付的标识都设置为A1,合并到存储的第一子网络数据中。
若查找出的子网络标识不同,说明所述拆解出的主体处于不同的子网络中,那么可以先对所述查找出的子网络进行合并。合并的方式具体可以为:随机选取所述查找出的子网络中的一个子网络标识,并将所述查找出的子网络中的主体标识、子网络边标识以及子网络标识都设置为所述选取的子网络标识,这样所述查找出的子网络就可以合并为一个子网络;之后可以将所述拆解出的主体和子网络边的标识设置为所述选取的子网络标识后合并到所述存储的第一子网络数据中。
以下以一个具体例子加以说明。例如实时服务器在预设时间节点之后读取的一条用户操作记录为:用户1在设备2上进行支付操作。那么实时服务器可以将该用户操作记录拆解为主体用户1和主体设备2以及子网络边支付。然后实时服务器可以从存储的第一子网络数据中寻找用户1和设备2对应的子网络。假设用户1对应的子网络为A,子网络标识为A1;设备2对应的子网络为B,子网络标识为B1。可以看出,用户1与设备2原先并不处于同一个子网络中,而此时子网络A和子网络B却通过用户1和设备2之间的支付关系产生了联系,因此需要将子网络A和子网络B合并为一个子网络。具体合并的方法如上所述:实时服务器随机选取子网络A和子网络B中的一个子网络标识,例如A1,并将子网络A和子网络B中的主体标识、子网络边标识以及子网络标识都设置为A1。这样,子网络A和子网络B便可以合并为一个子网络。接着可以将用户1与设备2以及支付的标识设置为A1后合并到所述存储的第一子网络数据中。实时服务器在寻找所述拆解出的主体对应的子网络时,还可以存在另一个情况:所述拆解出的主体在所述存储的第一子网络数据中均没有对应的子网络。这种情况说明所述拆解出的主体是第一次出现。实时服务器可以将所述拆解出的主体构成一个新的子网络,并将所述构成的新子网络数据合并到所述存储的第一子网络数据中。实时服务器处理完该条用户操作记录后,可以继续进行后续用户操作记录的处理,处理过程如上所述,这里便不再赘述。
S6:实时服务器将合并后的第三子网络数据更新到在线服务器中。
由于预设时间节点之后的用户操作记录数据量相对较小,并且用户操作记录可以存储于实时服务器中或者存储在与实时服务器处于同一网络环境的独立服务器中,因此实时服务器进行数据读取以及数据处理的时间都非常短暂;另一方面,实时服务器可以与在线服务器位于同一个网络环境中,还可以作为一个软件模块或者硬件模块集成于在线服务器中,因此实时服务器与在线服务器之间的信息交互速度非常快,能够保证实时服务器将数据更新到在线服务器的时间同样非常短暂,从而能够保证在线服务器可以对预设时间节点之后的用户操作记录进行及时的访问。
在该实施例中,离线服务器按照预设时间周期进行数据的获取以及计算处理,可以灵活地应对网络平台系统的访问要求。例如,在网络交易平台系统中,网络交易平台想要访问最近一年某个用户的信用卡使用次数。那么该实施例提供的方案中,离线服务器在每个时间周期内,可以在获取预设时间节点之前的用户操作记录后,继续在其中筛选出最近一年的用户操作记录进行处理。这样最终在在线服务器中的数据就仅仅包含最近一年的用户操作数据,能够满足网络交易平台的访问要求。
在本申请的第二实施例中,离线服务器也可以不按一定的时间周期对用户操作记录进行读取,而是仅仅读取一次预设时间节点之前的用户操作记录并且进行计算处理。例如,预设的时间节点为2014年9月24日23时59分59秒,那么离线服务器可以读取2014年9月24日23时59分59秒之前的用户操作记录,读取以后进行计算处理。离线服务器对预设时间节点之前的用户操作记录进行计算后,可以得到预设时间节点之前的第一子网络数据。离线服务器将所述预设时间节点之前的第一子网络数据同步到实时服务器中并向实时服务器发送所述预设时间节点。实时服务器存储所述预设时间节点之前的第一子网络数据并获取所述预设时间节点之后的用户操作记录。实时服务器对所述预设时间节点之后的用户操作记录进行计算,并将计算得到的子网络数据合并到存储的第一子网络数据中,并将合并后的子网络数据更新到在线服务器中。继续以上述的例子进行解释,离线服务器计算完2014年9月24日23时59分59秒之前的用户操作记录后,可以得到2014年9月24日23时59分59秒之前的子网络数据。离线服务器将该子网络数据同步到实时服务器中并将2014年9月24日23时59分59秒这个时间节点发送给实时服务器。实时服务器将2014年9月24日23时59分59秒之前的子网络数据进行存储后,可以对2014年9月24日23时59分59秒之后的所有用户操作记录进行计算处理,并将计算处理后的子网络数据合并到存储的子网络数据中,进一步地可以将合并后的子网络数据更新到在线服务器中。所述离线服务器的计算过程以及实时服务器的数据计算以及合并过程如本申请的第一实施例所述,这里便不再赘述。
在该实施例中,离线服务器仅仅读取一次预设时间节点之前的用户操作记录,避免了对部分大数据量的重复计算,能够提高整个关系网络维护的效率。
在本申请的第三实施例中,离线服务器可以按照预设时间周期获取预设时间节点之前的用户操作记录。在每个预设时间周期内,均可以进行以下处理:
离线服务器对所述预设时间节点之前的用户操作记录进行计算,得到所述预设时间节点之前的第一子网络数据;
离线服务器将第一子网络数据同步到在线服务器中并向实时服务器发送所述预设时间节点;
实时服务器获取所述预设时间节点之后的用户操作记录;
实时服务器对所述预设时间节点之后的用户操作记录进行计算,得到第二子网络数据,并将第二子网络数据合并到在线服务器中。
所述离线服务器的计算过程以及实时服务器的数据计算以及合并过程如本申请的第一实施例所述,这里便不再赘述。
在该实施例中,离线服务器将预设时间节点之前的子网络数据直接更新到在线服务器中,避免了向实时服务器进行数据同步以及实时服务器进行数据存储的过程。实时服务器可以将预设时间节点之后的用户操作记录直接合并到在线服务器中,避免了向在线服务器进行大数据量的更新过程,因此整个处理过程的效率更高。另外,离线服务器按照预设时间周期进行数据的获取以及计算处理,可以灵活地应对网络平台系统的访问要求。例如,在网络交易平台系统中,网络交易平台想要访问最近一年某个用户的信用卡使用次数。那么该实施例提供的方案中,离线服务器在每个时间周期内,可以在获取预设时间节点之前的用户操作记录后,继续在其中筛选出最近一年的用户操作记录进行处理。这样最终在在线服务器中的数据就仅仅包含最近一年的用户操作数据,能够满足网络交易平台的访问要求。
在本申请的第四实施例中,离线服务器可以不按一定的时间周期对用户操作记录进行读取,而是仅仅读取一次预设时间节点之前的用户操作记录并且进行计算处理。例如,预设的时间节点为2014年9月24日23时59分59秒,那么离线服务器可以读取2014年9月24日23时59分59秒之前的用户操作记录,读取以后进行计算处理。离线服务器对预设时间节点之前的用户操作记录进行计算后,得到预设时间节点之前的第一子网络数据。离线服务器可以将所述预设时间节点之前的第一子网络数据直接同步到在线服务器中,并同时向实时服务器发送所述预设时间节点。实时服务器获取所述预设时间节点之后的用户操作记录后对所述预设时间节点之后的用户操作记录进行计算,并将计算得到的子网络数据合并到在线服务器中。
在该实施例中,离线服务器将预设时间节点之前的第一子网络数据直接更新到在线服务器中,避免了向实时服务器进行数据同步以及实时服务器进行数据存储的过程。实时服务器可以将预设时间节点之后的用户操作记录直接合并到在线服务器中,避免了向在线服务器进行大数据量的更新过程,因此整个处理过程的效率更高。另外,离线服务器仅仅读取一次预设时间节点之前的用户操作记录,避免了对部分大数据量的重复计算,同样能够提高整个关系网络维护的效率。通过上述本申请的实施例,离线服务器对预设时间节点之前大数据量的用户操作记录进行计算,得到预设时间节点之前的子网络数据;实时服务器可以及时地对预设时间节点之后的用户操作记录进行补充,从而使网络平台能够在离线服务器处理完用户操作记录后,及时访问到预设时间节点之后的关系网络数据。
下面介绍本申请以离线服务器为主体的关系网络的维护方法的一个实施例。图8为本申请以离线服务器为主体的关系网络数据的维护方法的一实施例流程图。如图8所示,所述以离线服务器为主体的关系网络数据的维护方法包括以下步骤:
S110:离线服务器获取预设时间节点之前的用户操作记录。
在本申请一优选实施例中,离线服务器可以按照预设时间周期获取预设时间节点之前的用户操作记录,所述预设时间周期包括预设的固定时间周期和预设的非固定时间周期。离线服务器可以采用增量同步方式获取预设时间节点之前的用户操作记录或者可以采用全部同步方式获取预设时间节点之前的用户操作记录。
S120:离线服务器对所述预设时间节点之前的用户操作记录进行计算,得到所述预设时间节点之前的第一子网络数据。
步骤S120具体可以由下述两个步骤实现:
离线服务器将预设时间节点之前的每条用户操作记录拆解为包括子网络主体和子网络边的数据;
离线服务器按照预设规则对所述拆解后的数据基于所述子网络主体和子网络边进行归并处理,得到预设时间节点之前的第一子网络数据。
S130:离线服务器将第一子网络数据同步到实时服务器中并向实时服务器发送所述预设时间节点。
下面介绍本申请以离线服务器为主体的关系网络的维护方法的另一个实施例。图9为本申请以离线服务器为主体的关系网络数据的维护方法的另一实施例流程图。如图9所示,所述以离线服务器为主体的关系网络数据的维护方法包括:
S210:离线服务器获取预设时间节点之前的用户操作记录。
在本申请一优选实施例中,离线服务器可以按照预设时间周期获取预设时间节点之前的用户操作记录,所述预设时间周期包括预设的固定时间周期和预设的非固定时间周期。离线服务器可以采用增量同步方式获取预设时间节点之前的用户操作记录或者可以采用全部同步方式获取预设时间节点之前的用户操作记录。
S220:离线服务器对所述预设时间节点之前的用户操作记录进行计算,得到所述预设时间节点之前的第一子网络数据。
步骤S220具体可以由下述两个步骤实现:
离线服务器将预设时间节点之前的每条用户操作记录拆解为包括子网络主体和子网络边的数据;
离线服务器按照预设规则对所述拆解后的数据基于所述子网络主体和子网络边进行归并处理,得到预设时间节点之前的第一子网络数据。
S230:离线服务器将第一子网络数据同步到在线服务器中并向实时服务器发送所述预设时间节点。
下面介绍本申请以实时服务器为主体的关系网络的维护方法中的一个实施例。图10为本申请以实时服务器为主体的关系网络数据的维护方法的一实施例流程图。如图10所示,所述以实时服务器为主体的关系网络数据的维护方法包括以下步骤:
S310:实时服务器存储从离线服务器同步的第一子网络数据并接收预设时间节点;
S320:实时服务器获取预设时间节点之后的用户操作记录;
S330:实时服务器对所述预设时间节点之后的用户操作记录进行计算,得到第二子网络数据,并将第二子网络数据与第一子网络数据合并为第三子网络数据,并将合并后的第三子网络数据更新到在线服务器中。所述得到第三子网络数据具体可以通过下述三个步骤实现:
实时服务器将预设时间节点之后的每条用户操作记录拆解为包括子网络主体和子网络边的数据;
实时服务器按照预设规则对所述拆解后的数据基于所述子网络主体和子网络边进行归并处理,得到第二子网络数据;
实时服务器基于所述第二子网络数据中的子网络主体和子网络边将第二子网络数据与第一子网络数据合并为第三子网络数据。
进一步地,在上述步骤之后,还可以包括:
实时服务器获得第四子网络数据,所述第四子网络数据的起始时间点不早于第三子网络数据的终止时间点;
实时服务器将第四子网络数据与第三子网络数据合并为第五子网络数据,并将合并后的第五子网络数据更新到在线服务器中。
下面介绍本申请以实时服务器为主体的关系网络的维护方法中的另一个实施例。图11为本申请以实时服务器为主体的关系网络数据的维护方法的另一实施例流程图。如图11所示,所述以实时服务器为主体的关系网络数据的维护方法包括以下步骤:
S410:实时服务器接收预设时间节点并获取预设时间节点之后的用户操作记录;
S420:实时服务器对所述预设时间节点之后的用户操作记录进行计算,得到第二子网络数据,并将第二子网络数据合并到在线服务器中。
步骤S420具体可以包括下述3个步骤:
实时服务器将预设时间节点之后的每条用户操作记录拆解为包括子网络主体和子网络边的数据;
实时服务器按照预设规则对所述拆解后的数据基于所述子网络主体和子网络边进行归并处理,得到第二子网络数据;
实时服务器基于所述第二子网络数据中的子网络主体和子网络边将第二子网络数据合并到在线服务器中。
进一步地,在上述步骤之后,还可以包括:
实时服务器获得第三子网络数据,所述第三子网络数据的起始时间点不早于第二子网络数据的终止时间点;
实时服务器将第三子网络数据合并到在线服务器中。
图2是本申请一个实施例中一种离线服务器的模块功能图。如图2所示,所述一种离线服务器包括:
用户操作记录获取单元101,用来获取预设时间节点之前的用户操作记录;
计算单元102,用来对所述预设时间节点之前的用户操作记录进行计算,得到所述预设时间节点之前的第一子网络数据;
子网络数据同步单元103,用来将第一子网络数据同步到实时服务器中并向实时服务器发送所述预设时间节点。
图3是本申请另一个实施例中一种离线服务器的功能模块图。如图3所示,所述一种离线服务器具体包括:
用户操作记录获取单元101,用来获取预设时间节点之前的用户操作记录;
计算单元102,用来对所述预设时间节点之前的用户操作记录进行计算,得到所述预设时间节点之前的第一子网络数据;
子网络数据更新单元104,用来将第一子网络数据同步到在线服务器中并向实时服务器发送所述预设时间节点。
图4是本申请一个实施例中一种离线服务器中计算单元的功能模块图。如图4所示,所述一种离线服务器中计算单元102具体包括:
拆解单元1021,用来将预设时间节点之前的每条用户操作记录拆解为包括子网络主体和子网络边的数据;
归并单元1022,用来按照预设规则对所述拆解后的数据基于所述子网络主体和子网络边进行归并处理,得到预设时间节点之前的第一子网络数据。
图5是本申请一个实施例中一种实时服务器的模块功能图。如图5所示,所述一种实时服务器包括:
存储单元201,用来存储离线服务器同步的第一子网络数据;
用户操作记录读取单元202,用来获取预设时间节点之后的用户操作记录;
计算单元203,用来对所述预设时间节点之后的用户操作记录进行计算,得到第二子网络数据;
合并单元204,用来将第二子网络数据与第一子网络数据合并为第三子网络数据;
更新单元205,用来将合并后的第三子网络数据更新到在线服务器中。
图6是本申请另一个实施例中一种实时服务器的模块功能图。如图6所示,所述一种实时服务器包括:
用户操作记录读取单元202,用来获取预设时间节点之后的用户操作记录;
计算单元203,用来对所述预设时间节点之后的用户操作记录进行计算,得到第二子网络数据;
合并单元303,用来将第二子网络数据合并到在线服务器中。
图7是本申请一实施例中一种实时服务器中计算单元的模块功能图。如图7所示,所述计算单元203包括:
拆解单元2031,用来将预设时间节点之后的每条用户操作记录拆解为包括子网络主体和子网络边的数据;
归并单元2032,用来按照预设规则对所述拆解后的数据基于所述子网络主体和子网络边进行归并处理,得到第二子网络数据。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(ProgrammableLogicDevice,PLD)(例如现场可编程门阵列(FieldProgrammableGateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片2。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(HardwareDescriptionLanguage,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(AdvancedBooleanExpressionLanguage)、AHDL(AlteraHardwareDescriptionLanguage)、Confluence、CUPL(CornellUniversityProgrammingLanguage)、HDCal、JHDL(JavaHardwareDescriptionLanguage)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardwareDescriptionLanguage)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、AtmelAT91SAM、MicrochipPIC18F26K20以及SiliconeLabsC8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。