具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。相反,本申请的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
图1是本申请一实施例提出的数据累积方法的流程示意图,该方法包括:
S11:配置数据累积策略,并发布所述数据累积策略。
其中,配置和发布数据累积策略可以具体是指动态配置和动态发布,从而可以随时配置新的数据累积策略并动态发布,以便实时根据新的数据累积策略进行相应的数据累积。
S12:根据所述数据累积策略,对在线业务的数据进行数据累积。
其中,为了满足高并发大数据量的需求,可以采用集群进行数据累积。
具体的,本实施例可以设置数据累积策略管理设备(DataAccMng)和数据累积执行设备(DataAcc),数据累积策略管理设备用于配置数据累积策略,以及发布数据累积策略,数据累积执行设备用于当有数据输入时,根据数据累积策略进行数据累积。
本实施例通过配置并发布数据累积策略,并根据数据累积策略对在线业务的数据进行数据累积,可以实现在线数据累积,满足实时性需求。
图2是本申请另一实施例提出的数据累积方法的流程示意图,该方法包括:
S21:配置数据累积策略。
可选的,配置数据累积策略可以包括:
配置数据累积时的如下参数:
累积主体类型,触发事件,触发条件,累积指标。可以理解的是,配置的参数还可以包括:策略名称和策略描述等。
参见图3,为配置数据累积策略的界面的一种示意图。
累积主体类型是累积的实体的类型,可以对累积的对象进行分类,便于管理和使用;
触发事件是数据累积执行系统的输入数据,每个累积策略不是对每个输入的数据都进行数据累积,不同的触发事件对应不同的累积策略,触发事件和累积策略可以是多对多的关系;
触发条件是为了对累积的数据进行限制,有一定的条件约束,是判断是否进行累积的判断条件。通过累积不同条件的数据,会对应不同的业务场景,这些累积的数据也会有不同的应用场景。
累积指标是累积实体的各种不同的指标,是累积的数据点,针对不同条件的不同类别的数据,累积的指标也会不一样。
例如,针对银行转账的事件,配置的数据累积策略可以包括:累积主体类型是“账户”,触发事件是“银行转账事件”,触发条件是“转账成功”,累积指标是“转账金额”,这样就可以实时累积银行转账成功的金额。
配置完成的数据累积策略可以存入数据库中,从而完成一个数据累积策略的配置。
S22:发布数据累积策略。
数据累积策略可以是实时发布的。
可选的,所述发布所述数据累积策略,包括:
将所述数据累积策略发送给预设的配置服务器,以使所述配置服务器将所述数据累积策略发送给订阅所述数据累积策略的设备,其中,所述集群中的设备预先向所述配置服务器注册并订阅所述数据累积策略。
具体的,为了支持高并发大数据量的数据累积,可以部署集群进行数据累积,其中,集群可以由多个数据累积执行设备(DataAcc)组成。为了能一次发布到整个集群中所有的设备,可以预设配置服务器(ConfigServer),协助资源的推送。
数据累积执行设备(DataAcc)可以预先向配置服务器(ConfigServer)注册,以订阅数据累积策略。参见图4,注册流程可以包括:
S41:数据累积执行设备(DataAcc)启动本地服务器(server)。
S42:数据累积执行设备向配置服务器(ConfigServer)发送注册消息,以及,配置服务器向数据累积执行设备返回相应的响应消息。
S43:数据累积执行设备向配置服务器发送订阅消息,以及,配置服务器向数据累积执行设备返回相应的响应消息。
其中,不同资源可以用不同的DataId标识,假设数据累积策略对应的标识是第一DataId,则DataAcc向ConfigServer发送订阅第一DataId对应的资源的订阅消息。
参见图5,发布数据累积策略的流程可以包括:
S51:数据累积策略管理设备(DataAccMng)在配置数据累积策略后,向配置服务器(ConfigServer)发送发布信号,该发布信号中包含数据累积策略对应的标识信息(DataId)。
例如,数据累积策略对应第一DataId,则数据累积策略管理设备向配置服务器发送的发布信号中包含第一DataId,则配置服务器根据该第一DataId可以确定第一DataId对应的资源存在更新。
S52:配置服务器查询的该标识信息对应的订阅者。
例如,数据累积执行设备预先订阅了第一DataId,则配置服务器可以查询出订阅者是数据累积执行设备。
可选的,在注册时,集群中的所有数据累积执行设备都可以向配置服务器订阅第一DataId,则配置服务器可以查询到集群中的所有数据累积执行设备。
S53:配置服务器向订阅者发送发布信号,该发布信号中包含数据累积策略对应的标识信息(DataId)。
例如,配置服务器向集群中的所有数据累积执行设备发送该发布信号,集群中的数据累积执行设备接收到发布信号后,获知存在新的数据累积设备,则可以存储数据累积策略的数据库中获取数据累积策略。具体的,数据累积执行设备接收到发布信号后可以将其放入线程池队列中,当执行到该发布信号后从数据库中获取数据累积策略。
数据累积执行设备接收到发布信号后可以向配置服务器返回响应消息,以及,配置服务器向数据累积策略管理设备返回响应消息。
S23:根据数据累积策略,对在线业务的数据进行数据累积。
其中,数据累积执行设备中可以配置主分析器和备分析器。
可选的,所述根据所述数据累积策略,对在线业务的数据进行数据累积,包括:
采用所述备分析器分析所述数据对应的数据累积策略;
将所述备分析器切换为主分析器;
根据切换后的主分析器确定的所述数据对应的数据累积策略,对所述数据进行数据累积。
其中,数据累积策略可以有多个,为了对数据进行累积,先要确定出数据满足的数据累积策略,例如,数据是登录事件,需要确定出登录事件对应的数据累积策略,或者,数据是转账事件,需要确定出转账事件对应的数据累积策略。分析器可以用来在多个数据累积策略中确定出当前业务数据对应的数据累积策略。
在高并发大数据量的场景下,如果仅存在一个分析器,当分析器分析时就需要暂停数据累积,以避免高并发的大数据被漏统计。但是暂停数据累积就会影响效率。本实施例通过设置主分析器和备分析器,可以由备分析器分析策略,在确定出当前业务数据对应的策略后进行主备切换,因此确定数据累积策略和数据累积可以并行执行,不会造成数据累积的阻塞,从而提高效率。
参见图6,数据累积执行设备进行分析器的主备切换的流程可以包括:
S61:收到发布信号。
例如,数据累积执行设备接收到配置服务器发送的发布信号。
S62:从数据库加载所有的数据累积策略。
例如,数据累积执行设备接收到发布信号后,可以从保存数据累积策略的数据库中加载数据累积策略。
S63:获取备分析器。
例如,数据累积执行设备中可以设置主分析器和备分析器,根据设置信息获取备分析器。
S64:启动备分析器。
S65:将备分析器设置为主分析器。
S66:停用原主分析器。
通过启动备分析器以及将其设置为主分析器,以及停用原主分析器,可以实现主备切换。
在主备切换后,切换后的主分析器,也就是原被分析器进行数据累积策略的分析,确定当前业务数据对应的数据累积策略。
S67:结束。
可以理解的是,当下次再存在新的数据累积策略后,备分析器,也就是原主分析器还可以再次切换为主分析器。
具体的,每个分析器都会维护由所有的数据累积策略生成的知识库,然后也会维护一个线程池来支持异步的数据累积处理。
采用主备的模式,为了提高发布的效率,同时也为了减少资源的竞争,不会阻塞正常的数据累积的业务,累积策略的发布不是实时性要求很高的功能,所以初始化备分析器以及主备分析器进行切换都是异步完成的,发布流程无需等待上述全部过程完成后才结束。
在分析器确定出对应的数据累积策略后,可以根据对应的数据累积策略执行数据累积。
参见图7,数据累积的流程可以包括:
S701:客户端生成累积事件。
例如,客户端进行登录,转账等事件。
S702:业务接入模块对所述累积事件进行参数检查和格式转换,得到累积的标准输入数据;
为了保证数据累积处理过程的顺利执行,在累积之前会对累积事件进行参数检测和格式转换。
S703:分析器筛选出对应所述累积事件的数据累积策略,所述筛选出的数据累积策略包括至少一条数据累积策略。
例如,每个累积策略都会定义触发的事件,也就是说每次有事件输入,不会调用所有的累积策略来执行,需要通过分析器来根据策略触发事件和策略条件进行筛选,对筛选出的策略来异步执行数据累积。
S704:循环处理筛选出的每个数据累积策略。
由于累积事件可以对应多个数据累积策略,循环处理每个数据累积策略可以理解为依次根据每个数据累积策略进行数据累积。
具体的根据每个数据累积策略进行数据累积可以包括如下步骤:
S705:循环处理每个数据累积策略中的每个指标。
例如,数据累积策略中可以对应多个指标,例如,参见图3,数据累积策略中的指标可以包括次数,金额,个数,缺失数量,长度等中的一项或多项。
可以依次对每个指标进行数据累积。
S706:计算累积指标的存储索引值(key)。
每个累积策略同样会配置多个指标,对每个指标都会做数据累积,为了数据的存储和读取方便,可以为每个指标都生成一个存储key。
为了保证key的唯一性,可选的,key的生成公式如下:
Key=Index(Md5(累积主体类型+触发条件+触发事件+累积指标))+累积主体。
因为“累积主体类型+触发条件+触发事件+累积指标”的内容长度较长,为了存储方便,可以对其生成Md5摘要,然后在系统内,对每个策略指标的Md5摘要做索引,只保存索引ID即可,Index()就是获取Md5摘要的索引。
累积主体就是结合输入事件和累积主体类型得出,比如累积主体类型为账户,输入事件为账户ID为“001”的相关事件,此时累积主体就是“001”。
通过以上的公式就能保证每个主体不同策略的不同指标有不同的存储key,同时这个key是随时都可以结合事件和策略计算出来,保证能查询到累积数据。
S707:计算累积指标的值。
有了存储key之后,每个指标都会有对应的值(value),每个指标可能是输入事件的某个属性,也可能是某几个属性通过一段逻辑处理之后的值,所以可以在累积策略里为每个指标配置一段脚本代码,在系统里可以动态的执行脚本代码来计算该指标的累积值。
S708:获取当前的系统时间作为累积数据的版本。
数据累积是为了积累一段时间内的指标值,所以每次存储累积数据的时候,都会设置一个数据版本,一般采用当前的系统时间为版本号(version),这样读取累积数据的时候,就可以通过设置起始时间来获取指定事件在一定时间段内的所有累积数据,非常灵活和易用。
S709:累积数据。
为了支持大数据量的存储,选用分布式数据库来存储累积数据,同时要选用支持数据版本的key-value数据库是较好的。
累积数据可以用key-value-version对应保存。
S710:客户端确定累积结束。
例如,数据累积执行设备进行数据累积后,可以向客户端发送指令,通知客户端累积结束。
S24:使用累积数据。
其中,数据累积执行设备获取累积数据后,该累积数据可以被使用,例如,不同业务的客户端可以随时来查询数据来支撑业务。在查询时可以指定累积主体、累积指标、起始时间等中的一项或多项来查询累积的数据。
本实施例通过动态配置和发布数据累积策略,可以在线对业务数据进行数据累积,实现实时的数据累积,并持久化,因此业务系统可以实时的使用这些累积的数据,为大数据高并发环境下,实现实时的数据累积;本实施例通过设置主备分析器,可以满足高并发大数据量的需求。
图8是本申请另一实施例提出的数据累积装置的结构示意图,该装置80包括配置和发布模块81,以及累积模块82。
配置和发布模块81用于配置数据累积策略,并发布所述数据累积策略;
其中,配置和发布数据累积策略可以具体是指动态配置和动态发布,从而可以随时配置新的数据累积策略并动态发布,以便实时根据新的数据累积策略进行相应的数据累积。
累积模块82用于根据所述数据累积策略,对在线业务的数据进行数据累积。
其中,为了满足高并发大数据量的需求,可以采用集群进行数据累积。
具体的,本实施例中的配置和发布模块可以相当于方法实施例中的数据累积策略管理设备(DataAccMng),本实施例中的累积模块可以相当于方法实施例中的数据累积执行设备(DataAcc),数据累积策略管理设备用于配置数据累积策略,以及发布数据累积策略,数据累积执行设备用于当有数据输入时,根据数据累积策略进行数据累积。
可选的,参见图9,所述配置和发布模块81包括第一单元811,所述第一单元811用于配置数据累积策略,所述第一单元811具体用于:
配置数据累积时的如下参数:
累积主体类型,触发事件,触发条件,累积指标。
参见图3,为配置数据累积策略的界面的一种示意图。
累积主体类型是累积的实体的类型,可以对累积的对象进行分类,便于管理和使用;
触发事件是数据累积执行系统的输入数据,每个累积策略不是对每个输入的数据都进行数据累积,不同的触发事件对应不同的累积策略,触发事件和累积策略可以是多对多的关系;
触发条件是为了对累积的数据进行限制,有一定的条件约束,是判断是否进行累积的判断条件。通过累积不同条件的数据,会对应不同的业务场景,这些累积的数据也会有不同的应用场景。
累积指标是累积实体的各种不同的指标,是累积的数据点,针对不同条件的不同类别的数据,累积的指标也会不一样。
例如,针对银行转账的事件,配置的数据累积策略可以包括:累积主体类型是“账户”,触发事件是“银行转账事件”,触发条件是“转账成功”,累积指标是“转账金额”,这样就可以实时累积银行转账成功的金额。
配置完成的数据累积策略可以存入数据库中,从而完成一个数据累积策略的配置。
可选的,所述累积模块82具体用于:
采用预先设置的集群,根据所述数据累积策略,对在线业务的数据进行数据累积。
参见图9,可选的,所述配置和发布模块81包括第二单元812,所述第二单元812用于发布所述数据累积策略,所述第二单元812具体用于:
将所述数据累积策略对应的标识信息发送给预设的配置服务器,以使所述配置服务器将所述数据累积策略对应的标识信息发送给订阅所述数据累积策略的设备,其中,所述集群中的设备预先向所述配置服务器注册并订阅所述数据累积策略对应的标识信息。
具体的,为了支持高并发大数据量的数据累积,可以部署集群进行数据累积,其中,集群可以由多个数据累积执行设备(DataAcc)组成。为了能一次发布到整个集群中所有的设备,可以预设配置服务器(ConfigServer),协助资源的推送。
数据累积执行设备(DataAcc)可以预先向配置服务器(ConfigServer)注册,以订阅数据累积策略。
具体的订阅以及发布流程可以参见图4和图5,在此不再赘述。
可选的,所述集群中的设备包括主分析器和备分析器,所述累积模块82具体用于:
采用所述备分析器分析所述数据对应的数据累积策略;
将所述备分析器切换为主分析器;
根据切换后的主分析器确定的所述数据对应的数据累积策略,对所述数据进行数据累积。
其中,数据累积策略可以有多个,为了对数据进行累积,先要确定出数据满足的数据累积策略,例如,数据是登录事件,需要确定出登录事件对应的数据累积策略,或者,数据是转账事件,需要确定出转账事件对应的数据累积策略。分析器可以用来在多个数据累积策略中确定出当前业务数据对应的数据累积策略。
在高并发大数据量的场景下,如果仅存在一个分析器,当分析器分析时就需要暂停数据累积,以避免高并发的大数据被漏统计。但是暂停数据累积就会影响效率。本实施例通过设置主分析器和备分析器,可以由备分析器分析策略,在确定出当前业务数据对应的策略后进行主备切换,因此确定数据累积策略和数据累积可以并行执行,不会造成数据累积的阻塞,从而提高效率。
具体的分析器的主备切换流程可以参见图6,在此不再赘述。
可选的,所述累积模块82具体用于:
接收累积事件,并对所述累积事件进行参数检测和格式转换,得到累积的标准输入数据;
累积事件例如客户端进行登录,转账等事件。
为了保证数据累积处理过程的顺利执行,在累积之前会对累积事件进行参数检测和格式转换。
筛选出对应所述累积事件的数据累积策略,所述筛选出的数据累积策略包括至少一条数据累积策略;
例如,每个累积策略都会定义触发的事件,也就是说每次有事件输入,不会调用所有的累积策略来执行,需要通过分析器来根据策略触发事件和策略条件进行筛选,对筛选出的策略来异步执行数据累积。
对应筛选出的每条数据累积策略的每个指标,计算所述指标的存储索引值,以及确定所述指标的累积值并确定版本号;
例如,数据累积策略中可以对应多个指标,例如,参见图3,数据累积策略中的指标可以包括次数,金额,个数,缺失数量,长度等中的一项或多项。
可以依次对每个指标进行数据累积。
将所述存储索引值,累积值和所述版本号对应保存。
每个累积策略同样会配置多个指标,对每个指标都会做数据累积,为了数据的存储和读取方便,可以为每个指标都生成一个存储key。
可选的,所述累积模块82具体用于:
采用如下公式计算所述指标的存储索引值:
key=index(Md5(累积主体类型+触发事件+触发条件+累积指标))+累积主体;
其中,key是指标的存储索引值,Md5()表示生成Md5摘要,index()是Md5摘要的索引值。
因为“累积主体类型+触发条件+触发事件+累积指标”的内容长度较长,为了存储方便,可以对其生成Md5摘要,然后在系统内,对每个策略指标的Md5摘要做索引,只保存索引ID即可,Index()就是获取Md5摘要的索引。
累积主体就是结合输入事件和累积主体类型得出,比如累积主体类型为账户,输入事件为账户ID为“001”的相关事件,此时累积主体就是“001”。
通过以上的公式就能保证每个主体不同策略的不同指标有不同的存储key,同时这个key是随时都可以结合事件和策略计算出来,保证能查询到累积数据。
有了存储key之后,每个指标都会有对应的值(value),每个指标可能是输入事件的某个属性,也可能是某几个属性通过一段逻辑处理之后的值,所以可以在累积策略里为每个指标配置一段脚本代码,在系统里可以动态的执行脚本代码来计算该指标的累积值。
可选的,所述累积模块82具体用于:
将系统当前时间确定为版本号。
数据累积是为了积累一段时间内的指标值,所以每次存储累积数据的时候,都会设置一个数据版本,一般采用当前的系统时间为版本号(version),这样读取累积数据的时候,就可以通过设置起始时间来获取指定事件在一定时间段内的所有累积数据,非常灵活和易用。
为了支持大数据量的存储,选用分布式数据库来存储累积数据,同时要选用支持数据版本的key-value数据库是较好的。
累积数据可以用key-value-version对应保存。
本实施例通过动态配置和发布数据累积策略,可以在线对业务数据进行数据累积,实现实时的数据累积,并持久化,因此业务系统可以实时的使用这些累积的数据,为大数据高并发环境下,实现实时的数据累积;本实施例通过设置主备分析器,可以满足高并发大数据量的需求。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。