一种数据处理方法及装置的制造方法
【技术领域】
[0001] 本申请涉及计算机技术领域,尤其涉及一种数据处理方法及装置。
【背景技术】
[0002] 流数据是一组顺序、大量、快速、连续到达的数据序列,一般情况下,流数据可被视 为一个随时间延续而无限增长的动态数据集合。由于流数据具有数据量巨大的特性,因此, 通常采用分布式服务器处理流数据。
[0003] 目前,分布式服务器处理流数据的过程一般是:分布式服务器接收目标设备发送 的流数据,并对接收到的流数据进行处理,再将接收到的流数据和处理后得到的结果数据 发送给数据库存储。
[0004] 对于流数据的处理而言,主要的处理是去重处理和累加处理。例如,要对某电子商 务网站各商品类目下每天的买家数量进行统计时,则一个分布式服务器接收该电子商务网 站实时发送的一个商品类目下的新增订单数据,也就是流数据,并对订单数据中携带相同 买家标识的数据进行去重处理,将去重处理后的数据的数量累加到结果数据中,最后将去 重处理后的数据和结果数据发送给数据库存储。
[0005] 假设某个分布式服务器接收到的流数据是用户A购买了某商品类目下的商品1、 用户B购买了该商品类目下的商品2、用户A购买了该商品类目下的商品2,则该分布式服 务器对接收到的这三条流数据进行去重处理后得到的数据就是用户A和用户B,再将去重 处理后的这两条数据累加到结果数据中,就得到了该商品类目下的买家数量。
[0006] 可见,由于分布式服务器在对流数据进行去重处理时,需要对比当前接收的流数 据与之前接收的流数据中指定类型的信息(如上述用户标识)是否相同,因此,分布式服务 器在处理流数据的整个过程中,都需要把流数据和结果数据存储在自身的内存中。
[0007] 在上述过程中,各分布式服务器由应用管理中心统一进行管理控制,各分布式服 务器会按照设定的时间间隔向应用管理中心发送心跳检测报文,如果应用管理中心监测 到某个分布式服务器没有在设定时间内发来心跳检测报文,则确定该分布式服务器出现故 障,控制该分布式服务器进行重启。
[0008] 然而,对于一个分布式服务器来说,当该分布式服务器重启后会清除自身内存中 的所有数据,而由于分布式服务器处理后续的流数据是要基于之前已经处理过的流数据和 结果数据进行处理的,因此,在清除自身内存中的数据后,分布式服务器需要从数据库中读 取该分布式服务器之前已经处理过的流数据和结果数据,以便基于读取的流数据和结果数 据对后续接收到的流数据进行处理。但由于数据库中存储了多个分布式服务器发送的处理 后的流数据和结果数据,重启后的该分布式服务器却并不能获知数据库中存储的哪些流数 据和结果数据是该分布式服务器处理后续的流数据所要基于的流数据和结果数据,也即, 重启后的该分布式服务器并不能获知数据库中存储的哪些流数据和结果数据是该分布式 服务器之前发送给数据库的流数据和结果数据,从而,分布式服务器重启后只能从数据库 中读取全量的流数据和结果数据,而由于数据库中存储的不只是出现故障的这一个分布式 服务器发来的流数据,而是所有分布式服务器发来的流数据,因此,出现故障的分布式服务 器重启后从数据库中读取全量的流数据的数据量是非常巨大的,这不仅会浪费网络资源, 而且也很可能会造成分布式服务器自身的内存溢出而再次出现故障并重启,从而陷入不断 重启的死循环,无法正常处理流数据。
[0009] 例如,由服务器1、服务器2、服务器3这三个分布式服务器分别统计类目a、类目 b、类目c这三个商品类目下的处理流数据,这三个分布式服务器都将自身去重处理后的流 数据以及累加处理后得到的结果数据发送给数据库存储。当服务器1出现故障而重启后, 由于其并不能获知数据库中存储的哪些流数据是服务器1之前发送给数据库的,因此服务 器1只能从数据库中读取全量的流数据,即,服务器1从数据库中读取的流数据不仅仅是之 前服务器1发送给数据库存储的流数据,而是之前这三个服务器发送给数据库存储的全部 流数据,其数据量远大于服务器1发送给数据库存储的流数据的数据量,这样不仅浪费了 传输这些数据所消耗的网络资源,服务器1也很有可能由于自身的内存溢出而再次故障重 启。
【发明内容】
[0010] 本申请实施例提供一种数据处理方法及装置,用以解决现有技术中当服务器故障 重启后从数据库中读取流数据时浪费网络资源,也很可能再次发生故障的问题。
[0011] 本申请实施例提供的一种数据处理方法,包括:
[0012] 分布式服务器接收流数据;并
[0013] 基于自身保存的对之前接收到的前续流数据进行第一处理得到的第一前续处理 数据,对接收到的流数据进行第一处理得到第一处理数据;
[0014] 在所述第一处理数据中添加所述分布式服务器的服务器标识,将添加了所述服务 器标识的第一处理数据发送给数据库存储;
[0015] 当所述分布式服务器重启后,根据自身的服务器标识,从所述数据库中读取携带 所述服务器标识的第一处理数据,并基于读取的第一处理数据对接收到的后续流数据继续 进行第一处理。
[0016] 本申请实施例提供的一种数据处理装置,包括:
[0017] 接收模块,用于接收流数据;
[0018] 第一处理模块,用于基于自身保存的对之前接收到的前续流数据进行第一处理得 到的第一前续处理数据,对接收到的流数据进行第一处理得到第一处理数据;
[0019] 第一添加模块,用于在所述第一处理数据中添加所述装置的服务器标识;
[0020] 发送模块,用于将添加了所述服务器标识的第一处理数据发送给数据库存储;
[0021] 第一读取模块,用于当所述装置重启后,根据所述装置的服务器标识,从所述数据 库中读取携带所述服务器标识的第一处理数据;
[0022] 所述第一处理模块还用于,基于读取的第一处理数据对所述接收模块接收到的后 续流数据继续进行第一处理。
[0023] 本申请实施例提供一种数据处理方法及装置,该方法分布式服务器对接收到的流 数据进行第一处理得到第一处理数据后,向第一处理数据中添加该分布式服务器的服务器 标识,并发送给数据库存储,当分布式服务器重启后,从数据库中读取携带该服务器标识的 第一处理数据,并基于读取的第一处理数据对接收到的后续流数据继续进行第一处理。通 过上述方法,分布式服务器在发生故障并重启后,无需从数据库中读取全量的第一处理数 据,只需读取携带该分布式服务器自身的服务器标识的第一处理数据即可,因此可有效降 低分布式服务器从数据库中读取数据的数据量,从而节省了网络资源,分布式服务器也不 会因读取的数据过多导致自身内存溢出而再次发生故障。
【附图说明】
[0024] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申 请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0025]