一种数据预处理方法、装置及其存储介质
技术领域
本发明涉及计算机领域,尤其是指一种数据预处理方法、装置及其存储介质。
背景技术
随着大数据的发展,数据处理的复杂程度不断提高。比如在电商领域,对支付数据和对应的期限数据需要进行海量数据的处理。以电商的白条业务为例,属于一款信贷产品,每笔交易、每一次领取优惠券、每次额度提升,都需要严格的风险控制。
在巨量的消费限额、历史单量、逾期天数等数据面前,不仅数据的处理量激增,还需要对这些数据进行预处理(流水中计算、统计汇总等),以便用户调用或系统自动调用,但是现在的处理方式在高并发的交易时,无法满足性能上的要求。以今年双十一为例,来自整个交易链路的查询QPS已超过40W(即数据的调用),而以标准物理机(128G内存,32核CPU)来看,性能测试得到的数据,仅可同时支持3000TPS和10000QPS,远远无法满足大促流量峰值的数据处理要求。
所以发明人发现现有技术中至少存在如下问题,由于数据处理量巨大状态下,现有技术无法满足性能需求的技术问题。
发明内容
本申请提供了一种数据预处理方法,该方法包括:
当预定的至少一个预调用触发条件触发时,从预设的数据源中获取与所述预调用触发条件具有共同数据特征的热点数据,其中,所述热点数据为预调用触发条件触发时数据源中待进行预处理的数据;
对所述热点数据进行调用前的预处理;
将预处理后的热点数据分配为多组数据;
将分配后的多组数据分别根据预定规则存储在多个存储单元中。
可选地,将分配后的多组数据分别根据预定规则存储在预建的多个存储单元中包括:
将预建的多个存储单元按第二预定方式分配为多个存储单元集群;
获取所述存储单元集群中的存储单元状态,其中,所述存储单元状态为存储单元是否可以存储热点数据;
根据所述存储单元状态按预定条件选取目标集群,其中,所述目标集群为多个所述存储单元集群中符合预定条件的集群;
将分配后的多组数据根据预定规则存储在所述目标集群的存储单元中。
可选地,所述将分配后的多组数据分别根据预定规则存储在预建的多个存储单元中,其中,所述存储单元用于数据的存储和读取步骤后,该方法还包括:
接收权限配置信息,其中,所述权限配置信息为获取所述存储单元中数据的权限配置;
获取所述权限配置信息的生效指令;
根据所述生效指令按所述权限配置信息对本地的权限配置进行更新。
可选地,所述将分配后的多组数据分别根据预定规则存储在预建的多个存储单元中步骤后,该方法还包括:
接收用于调用所述存储单元数据的调用指令;
根据本地的权限配置对所述调用指令进行识别,得到符合权限配置的调用指令;
根据符合权限配置的调用指令调用所述存储单元中存储的数据。
可选地,所述存储单元具有多个存储相同数据的冗余存储单元。
本申请还提供了一种数据预处理装置,该装置包括:
获取模块,用于当预定的至少一个预调用触发条件触发时,从预设的数据源中获取与所述预调用触发条件具有共同数据特征的热点数据,其中,所述热点数据为预调用触发条件触发时数据源中待进行预处理的数据;
预处理模块,用于对所述热点数据进行调用前的预处理;
分配模块,用于将预处理后的热点数据分配为多组数据;
存储模块,用于将分配后的多组数据分别根据预定规则存储在预建的多个存储单元中,其中,所述存储单元用于数据的存储和读取。
可选地,该装置还包括:
所述分配模块,用于将预建的多个存储单元按第二预定方式分配为多个存储单元集群;
所述获取模块,用于获取所述存储单元集群中的存储单元状态,其中,所述存储单元状态为存储单元是否可以存储热点数据;
选取模块,用于根据所述存储单元状态按预定条件选取目标集群,其中,所述目标集群为多个所述存储单元集群中符合预定条件的集群;
所述存储模块,用于将分配后的多组数据根据预定规则存储在所述目标集群的存储单元中。
可选地,该装置还包括:
接收模块,用于接收权限配置信息,其中,所述权限配置信息为获取所述存储单元中数据的权限配置;
所述获取模块,用于获取所述权限配置信息的生效指令;
更新模块,用于根据所述生效指令按所述权限配置信息对本地的权限配置进行更新。
本申请还提供了一种数据预处理装置,所述装置包括:处理器和存储器;
所述存储器中存储有可被所述处理器执行的应用程序,用于使得所述处理器执行如所述的数据预处理方法的步骤。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现所述的数据预处理方法的步骤。
如上可见,基于上述实施例,通过上述的方法对数据源中海量数据进行了分类,将有可能需要进行预处理的数据进行预先的预处理,并分别存储在不同的存储单元中,提供了一种在大数据处理中的高可用技术方案。解决了在数据处理量巨大的条件下,现有技术无法满足性能需求的技术问题。
附图说明
图1为一个实施例中数据处理方法流程100的示意图;
图2为一个实施例中数据处理方法流程200的示意图;
图3为一个实施例中数据处理方法流程300的示意图;
图4为一个实施例中数据处理方法流程400的示意图;
图5为一个实施例中数据处理方法流程500的示意图;
图6为一些实施例中数据处理方法应用场景600的示意图;
图7为一些实施例中数据处理方法应用场景700的示意图;
图8为一些实施例中数据处理方法应用场景800的示意图;
图9为一个实施例中数据处理装置架构900示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
图1为一个实施例中数据处理方法流程100的示意图,如图1所示,在一实施例中,本申请提供了一种数据预处理方法,该方法包括:
S101,当预定的至少一个预调用触发条件触发时,从预设的数据源中获取与所述预调用触发条件具有共同数据特征的热点数据,其中,所述热点数据为预调用触发条件触发时数据源中待进行预处理的数据;
在本步骤中提供了一种从数据源获取热点数据的具体方法,预定预调用触发条件是对热点数据进行选取的具有预设关联性的条件,其关联性体现在具有共同数据特征,以此对数据源的热点数据进行获取。需要指出的是预定预调用触发条件可以是多个,当所有预定预调用触发条件都符合要求后,从数据源中获取热点数据。另外,热点数据是亟待进行调用前预处理的数据。
S102,对所述热点数据进行调用前的预处理;
在本步骤中提供了一种预处理方法,在数据源中存储着大量的数据,这些数据中有一些需要进行预处理。比如,白条业务中的流水计算和统计汇总,这些待预处理的数据应该与上述预定预调用触发条件具有关联,即上述的热点数据。简言之,预处理所需的数据就是热点数据。
S103,将预处理后的热点数据分配为多组数据;
在本步骤中将预处理后的热点数据按照一定的预定原则进行分配,以便后续将多组数据分别存储。
S104,将分配后的多组数据分别根据预定规则存储在预建的多个存储单元中,其中,所述存储单元用于数据的存储和读取。
在本步骤中将上述被分配的多组数据进行分别存储,需要指出的是本步骤中指出的存储单元可以是虚拟的存储单元,也可以是实体的存储硬件。
在本实施例中,首先建立至少一个预定预调用触发条件,当满足预定预调用触发条件时,从数据源中获取热点数据,热点数据为需要进行预处理的数据,并且这些数据与预定预调用触发条件之间存在关联,以便根据预定预调用触发条件进行获取数据。需要指出的是预定预调用触发条件可以随时进行人为或自动的修改、添加和删除。然后对热点数据进行分组得到多组数据,将多组数据存储在不同的多个存储单元中进行去中心化。在本实施例的方法中对海量的数据进行了分类,即预定预调用触发条件相关的预处理数据,以及其他数据。选取其中与预定预调用触发条件具有关联的数据。实际上预定预调用触发条件的触发是热点数据需要进行预处理的先兆,简言之,当预定预调用触发条件被触发时,热点数据就有可能需要预处理并进行后续的调用。通过上述的方法对数据源中海量数据进行了分类,将有可能需要进行预处理的数据进行预先的数据处理,并分别存储在不同的存储单元中,减小了在高并发状态下的数据处理量,以及现有技术容灾风险高的技术问题,进而提供了一种在大数据处理中的高可用数据预处理技术方案。
图2为一个实施例中数据处理方法流程200的示意图。如图2所示,在一实施例中,本申请提供了一种数据处理方法,将分配后的多组数据分别根据预定规则存储在预建的多个存储单元中包括:
S201,将预建的多个存储单元按第二预定方式分配为多个存储单元集群;
在本步骤中对多个存储单元进行分组形成多个存储单元集群,每个存储单元集群内包括至少一个存储单元,每个存储单元集群中可以多个存储单元。
S202,获取所述存储单元集群中的存储单元状态,其中,所述存储单元状态为存储单元是否可以存储热点数据;
在本步骤中获取存储单元的存储单元状态,需要指出的是存储单元状态即存储单元是否可以存储热点数据,制约存储单元状态的情况可能是因为存储单元内已经存储了数据无法再进行存储,或者存储单元彻底故障无法进行存储。
S203,根据所述存储单元状态按预定条件选取目标集群,其中,所述目标集群为多个所述存储单元集群中符合预定条件的集群;
在本步骤中根据存储单元状态从宏观的角度来确定存储单元集群的可存储能力,根据这个存储能力选择出符合预定条件的集群,即目标集群。预定条件可以理解为集群中存储单元的可存储状态。
S204,将分配后的多组数据根据预定规则存储在所述目标集群的存储单元中。
在本步骤中选取目标集群以后,则将多组数据存储在目标集群的存储单元中,目标集群的存储单元可以为多个。
本实施例中提供了一种利用集群进行数据分配存储单元的宏观方法,首先将多个存储单元分配给不同的存储单元集群,利用存储单元状态选取具有可供存储预定条件的目标集群进行存储数据,实现了宏观的统一调度,实时切换可用的集群用于数据的存储。
图3为一个实施例中数据处理方法流程300的示意图。如图3所示,在一实施例中,所述将分配后的多组数据分别根据预定规则存储在预建的多个存储单元中,其中,所述存储单元用于数据的存储和读取步骤后,该方法还包括:
S301,接收权限配置信息,其中,所述权限配置信息为获取所述存储单元中数据的权限配置;
本步骤中接收对数据调用的权限配置信息,作为客户端想从存储单元中获取数据要对客户端的来源进行权限授权,可以通过分配调用ID和token的方式实现,所以这里提到的权限配置信息即可以理解为包括调用ID和/或token的信息数据。
S302,获取所述权限配置信息的生效指令;
本步骤中得到一个生效指令,虽然在上述步骤中已经获得了ID和/或token,可以实现授权,但是还需要一个生效机制使其可以产生作用。
S303,根据所述生效指令按所述权限配置信息对本地的权限配置进行更新。
本步骤中当获得了权限配置信息和生效指令后,则可以对本地之前的权限配置进行更新,以便使新的权限授权生效。
在本实施例中提供了权限的授权方法,即在获取了权限配置信息和生效指令后,对调用数据的权限进行更新,以使新的用户可以调用存储单元中的数据。
图4为一个实施例中数据处理方法流程400的示意图。如图4所示,在一实施例中,所述将分配后的多组数据分别根据预定规则存储在预建的多个存储单元中步骤后,该方法还包括:
S401,接收用于调用所述存储单元数据的调用指令;
在本步骤中接收到了调用存储单元数据的调用指令。
S402,根据本地的权限配置对所述调用指令进行识别,得到符合权限配置的调用指令;
在本步骤中需要根据本地的权限配置对调用指令进行识别,确认其来源是否符合本地的权限配置。本地的权限配置也可以通过调用ID和/或token的方式进行实现。
S403,根据符合权限配置的调用指令调用所述存储单元中的数据。
在本步骤中当调用指令的来源符合本地的权限配置时,则允许对存储单元中的数据进行调用。
在本实施例中提供了一种根据本地权限配置进行识别后,进行存储单元数据调用的具体方法,可以起到权限控制的作用,进而也可以实现流量的限流控制。
在一实施例中,所述存储单元具有多个存储相同数据的冗余存储单元。
在本实施例中提供了一种提供多个备用存储单元的具体方法,当其中一个存储单元出现故障时,其冗余存储单元具有数据备份,确保后续数据的正常调用。
基本原理和工作过程:
以下利用白条业务对本申请进行详细说明,需要指出的是白条业务只是为了更好的说明本申请,并非是对本申请的限定。
图5为一个实施例中数据处理方法流程500的示意图。如图5所示,在一实施例中,本申请还提供了一种数据预处理方法,该方法包括:
S501,当预定的至少一个预调用触发条件触发时,从预设的数据源中获取与所述预调用触发条件具有共同数据特征的热点数据,其中,所述热点数据为预调用触发条件触发时数据源中待进行预处理的数据;
本步骤中数据源可以理解为Mysql数据库,Mysql数据库记录着白条业务的相关数据,比如白条交易规则、账户属性以及账务数据等,其均会以流水记录的形式存储在关系型MySQL数据库中。其中,MySQL是一个关系型数据库管理系统。
预定预调用触发条件的设定要根据具体的场景进行合理配置。下面以白条业务中用户的最大逾期天数为例来说明,用户的最大逾期天数往往在借款、领券、发券、提额等环节作为风险校验的重要规则,然而逾期天数是关联在用户分期单上的属性。
比如用户消费一笔贷款,分了12期还款,根据这笔贷款会为用户生成12个分期单,由于每个分期单的最后还款日不同,第一期在第一个月就要计逾期,最后一期则要一年后才算逾期,而每天凌晨的计息规则以及用户还款动作触发更新分期单上的逾期天数。那么最大逾期天数对应数据的触发事件就是每日计息动作以及用户还款的动作。另外防止网络异常或者事件消息丢失等情况,一般会增加每日全量更新的补偿事件。所以最大逾期天数的触发事件包括计息动作、还款动作以及全量补偿事件三个。根据上述的三个事件就可以对应设置阈值建立预定预调用触发条件。
S502,对所述热点数据进行调用前的预处理;
对于白条业务的最大逾期天数而言,通过分析监控数据可得,原始的数据是以流水或者各种关联明细的形式存储在MySQL数据库中,还需要进行流水计算和统计汇总等预处理。类似的很多数据处理都需要进行调用前的统计、分析、汇总输出等预处理,这些预处理往往又是最花费时间和消耗性能的。本申请的方法需要根据预定预调用触发条件获取具有关联的待预处理数据并在本步骤中提前进行处理。以避开在高并发的交易时,同时完成上述的预处理和数据调用,从而减低同时的数据处理量。
S503,将预处理后的热点数据分配为多组数据;
预处理后的数据保存也十分重要,为了提供一种高可用的保存方式。需要先将处理后的热点数据按预定原则进行分配为多组数据,以为以后的存储提供基础。
S504,将预建的多个存储单元按第二预定方式分配为多个存储单元集群;
图6为一些实施例中数据处理方法应用场景600的示意图。如图6所示,存储单元可以为redis单分片。选择将处理好的多组数据分别存储在基于内存又支持持久化的redis中。redis主机单分片一般能支持5W到10W的QPS。为了防止数据不均出现数据倾斜的情况,单分片的峰值QPS按照5W计算分配分片数量。数据被分散存储在50多个分片中,即便某个分片出现故障,造成的影响要小很多。另外,针对存储有数据的存储单元可以设置多个存储有相同数据的冗余存储单元,以防止其中某个存储单元损坏、存储数据丢失。redis是一个key-value存储系统,key-value分布式存储系统。
图7为一些实施例中数据处理方法应用场景700的示意图。如图7所示,基于上述redis单分片的基本架构,本步骤提供了一种将存储单元即redis单分片分配为多个存储单元集群的具体实施方式。
为了建立容灾能力强和高可用的架构,采用jimdb、r2m两客户端、主从四集群保障,任意一个集群出现故障均可采用主从切换或者客户端切换处理。jimdb、r2m可以理解为两种分布式存储。
除了对于集群的配置外,针对应用服务器层的高可用多活方案,目前共部署两地(广州、北京)多机房(广州、黄村、亦庄2、马驹桥),通过JSF对外发布服务,全局负载均衡,即图7中的机房1和机房2,表示多地布局机房。JavaServer Faces(JSF)是一种用于构建JavaWeb应用程序的标准框架。
S505,获取所述存储单元集群中的存储单元状态,其中,所述存储单元状态为存储单元是否可以存储热点数据;
本步骤中的存储单元状态可以理解为从jimdb的主从集群和r2m的主从集群宏观上进行确定。
S506,根据所述存储单元状态按预定条件选取目标集群,其中,所述目标集群为多个所述存储单元集群中符合预定条件的集群;
以上一步骤作为基础,根据不同集群中存储单元状态。本步骤中的预定条件可以是一种选取的策略,比如不同集群中可存储的存储单元数量,存储单元的故障情况等等。其目的在于,选取出可用并最优化的目标集群。
S507,将分配后的多组数据根据预定规则存储在所述目标集群的存储单元中;
根据上述的策略在执行层面可以通过在redis客户端上增加图7中的Manager层,统一调度,实时切换故障集群,支持r2m或者jimdb单独扛量、r2m和jimdb共同扛量的两种模式。
S508,接收权限配置信息,其中,所述权限配置信息为获取所述存储单元中数据的权限配置;
当根据上述的策略进行存储后,用户便可以调用存储单元其中已经进行预处理的数据,但是为了达到控制权限和限流的作用,需要对权限配置进行处理。本申请可以在上述的集群管理架构上添加sevice层,并基于sevice层上再添加proxy层。proxy层可针对不同的系统来源控制方法粒度的调用权限,并对恶意流量攻击做防刷、降级处理。
图8为一些实施例中数据处理方法应用场景800的示意图。如图8所示,更进一步,为了对接新的用户接口,首先需要接收权限配置信息,此处的权限配置信息可以理解为用户用于调用数据的ID或者token。按系统维度配置不同的角色,并赋予各个方法调用权限,其分配ID或者token可以通过图中建立的权限控制Manager层进行控制。
S509,获取所述权限配置信息的生效指令;
对上面的新用户的权限配置信息,zk(即ZooKeeper)利用生效指令将权限持久化到Mysql数据库的权限配置进行生效。ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。
S510,根据所述生效指令按所述权限配置信息对本地的权限配置进行更新。
通过ZK触发应用服务器(即图8中的服务器)更新记录配置信息,存储到本地内存,实现了添加新用户调用权限的目的。
最后,对于已经生效的权限配置,当接收到调用指令后(可以包括用于调用数据ID和/或token),会根据本地的权限配置对所述调用指令进行识别,得到符合权限配置的调用指令,根据符合权限配置的调用指令调用所述存储单元中的数据。
图9为一个实施例中数据处理装置架构900示意图。如图9所示,在一实施例中,本申请提供了一种数据处理装置,该装置包括:
获取模块101,用于根据至少一个预定预调用触发条件从预设的数据源中获取热点数据,其中,所述热点数据为与所述预定预调用触发条件具有共同数据特征的预调用数据;
预处理模块102,用于对所述热点数据进行调用前的预处理;
分配模块103,用于将预处理后的热点数据分配为多组数据;
存储模块104,用于将分配后的多组数据分别根据预定规则存储在预建的多个存储单元中,其中,所述存储单元用于数据的存储和读取。
在一实施例中,该装置还包括:
所述分配模块103,用于将预建的多个存储单元按第二预定方式分配为多个存储单元集群;
所述获取模块101,用于获取所述存储单元集群中的存储单元状态,其中,所述存储单元状态为存储单元是否可以存储热点数据;
选取模块105,用于根据所述存储单元状态按预定条件选取目标集群,其中,所述目标集群为多个所述存储单元集群中符合预定条件的集群;
所述存储模块104,用于将分配后的多组数据根据预定规则存储在所述目标集群的存储单元中。
在一实施例中,该装置还包括:
接收模块106,用于接收权限配置信息,其中,所述权限配置信息为获取所述存储单元中数据的权限配置;
所述获取模块101,用于获取所述权限配置信息的生效指令;
更新模块107,用于根据所述生效指令按所述权限配置信息对本地的权限配置进行更新。
在一实施例中,本申请还提供了一种数据读写方法,所述装置包括:处理器和存储器;
所述存储器中存储有可被所述处理器执行的应用程序,用于使得所述处理器执行所述的数据处理方法的步骤。
在一实施例中,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现所述的数据处理方法步骤。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。