一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据分摊处理方法、装置及系统与流程

2022-08-13 23:36:26 来源:中国专利 TAG:


1.本发明涉及数据处理领域,具体涉及一种数据分摊处理方法、装置及系统。


背景技术:

2.为更好地管理公司,管理者通过查看财务报表了解总公司以及位于不同城市的各子公司的运营成本、盈利状况,其中,财务报表主要分为三大块:收入、成本和利润。由于财务系统的核算项目繁多(500多个预算项),每个预算项都要进行分摊计算,计算量极大,例如,近1000多万条总账数据,通过数据处理加工后近40万条待分摊的数据,再根据分摊原则将其分摊至500多个预算项中,总共计算频率2亿次,并且,不同子公司的财务数据数量存在较大差异,为保证数据处理的实时性需要对财务数据进行分摊处理。


技术实现要素:

3.因此,本发明要解决的技术问题在于克服现有技术中的数据在不同区域或项目间的不平衡性,导致数据处理存在不同步性,进而无法对所有数据进行实时计算分析的缺陷,从而提供一种数据分摊处理方法、装置及系统。
4.根据第一方面,本发明实施例提供了一种数据分摊处理方法,应用于第一服务器,所述方法包括:
5.获取待分摊数据以及所述待分摊数据对应的数据来源;
6.按照所述待分摊数据对应的数据来源对所述待分摊数据进行分类,得到若干第一数据包;
7.将各所述第一数据包发送至消息中间件;
8.接收第二服务器发送的第三数据包,所述第三数据包为所述第二服务器在监听到所述消息中间件上存在第一数据包时,按照监听顺序对各所述第一数据包进行打包生成第二数据包,并调用线程池的子线程对所述第二数据包进行分摊逻辑处理,生成第三数据包;
9.对所述第三数据包按照报表项进行分类,生成第四数据包;
10.将所述第四数据包发送至所述消息中间件;
11.接收所述第二服务器发送的第五数据包,并根据所述第五数据包得到数据分摊结果,所述第五数据包为所述第二服务器在监听到所述消息中间件上存在所述第四数据包时,按照监听顺序调用线程池子线程对各所述第四数据包进行报表项计算,生成第五数据包。
12.可选地,所述根据所述第五数据包得到数据分摊结果,包括:
13.按照所述第五数据包对应的报表项及数据来源对各所述第五数据包进行分类,得到数据分摊结果。
14.根据第二方面,本发明实施例还提供了一种数据分摊处理方法,应用于第二服务器,所述方法包括:
15.在监听到消息中间件上存在第一数据包时,按照监听顺序对各所述第一数据包进
行打包生成第二数据包,所述第一数据包为第一服务器获取待分摊数据以及所述待分摊数据对应的数据来源;按照所述待分摊数据对应的数据来源对所述待分摊数据进行分类,得到的第一数据包;
16.调用线程池的子线程对所述第二数据包进行分摊逻辑处理,生成第三数据包;
17.将所述第三数据包发送至所述第一服务器,以使所述第一服务器对所述第三数据包按照报表项进行分类,生成第四数据包;将所述第四数据包发送至所述消息中间件;
18.在监听到所述消息中间件上存在所述第四数据包时,按照监听顺序调用线程池子线程对各所述第四数据包进行报表项计算,生成第五数据包,所述第四数据包为所述第一服务器对所述第三数据包按照报表项进行分类,生成的第四数据包;
19.将所述第五数据包发送至所述第一服务器。
20.可选地,所述按照监听顺序调用线程池子线程对各所述第四数据包进行报表项计算,生成第五数据包,包括:
21.获取当前第四数据包对应的报表项公式;
22.基于所述报表项公式调用线程池子线程对所述当前第四数据包进行报表项计算,生成第五数据包。
23.可选地,在将所述第三数据包发送至所述第一服务器之前,所述方法还包括:
24.按照监听顺序统计当前批次内第二数据包的总数;
25.统计所述当前批次内第三数据包的生成总数;
26.判断所述当前批次内所述第三数据包的生成总数是否与所述第二数据包的总数相等;
27.当所述当前批次内所述第三数据包的生成总数与所述第二数据包的总数相等时,将第三数据包发送至所述第一服务器;
28.当所述当前批次内所述第三数据包的生成总数与所述第二数据包的总数不相等时,调用当前子线程对所述当前批次内的下一第二数据包进行分摊逻辑处理。
29.根据第三方面,本发明实施例提供了一种数据分摊处理装置,应用于第一服务器,所述装置包括:
30.获取模块,用于获取待分摊数据以及所述待分摊数据对应的数据来源;
31.第一处理模块,用于按照所述待分摊数据对应的数据来源对所述待分摊数据进行分类,得到若干第一数据包;
32.第一发送模块,用于将各所述第一数据包发送至消息中间件;
33.第一接收模块,用于接收第二服务器发送的第三数据包,所述第三数据包为所述第二服务器在监听到所述消息中间件上存在第一数据包时,按照监听顺序对各所述第一数据包进行打包生成第二数据包,并调用线程池的子线程对所述第二数据包进行分摊逻辑处理,生成第三数据包;
34.第一分类模块,用于对所述第三数据包按照报表项进行分类,生成第四数据包;
35.第二发送模块,用于将所述第四数据包发送至所述消息中间件;
36.第二接收模块,用于接收所述第二服务器发送的第五数据包,并根据所述第五数据包得到数据分摊结果,所述第五数据包为所述第二服务器在监听到所述消息中间件上存在所述第四数据包时,按照监听顺序调用线程池子线程对各所述第四数据包进行报表项计
算,生成第五数据包。
37.根据第四方面,本发明实施例还提供了一种数据分摊处理装置,应用于第二服务器,所述装置包括:
38.第二处理模块,用于在监听到消息中间件上存在第一数据包时,按照监听顺序对各所述第一数据包进行打包生成第二数据包,所述第一数据包为第一服务器获取待分摊数据以及所述待分摊数据对应的数据来源;按照所述待分摊数据对应的数据来源对所述待分摊数据进行分类,得到的第一数据包;
39.第三处理模块,用于调用线程池的子线程对所述第二数据包进行分摊逻辑处理,生成第三数据包;
40.第三发送模块,用于将所述第三数据包发送至所述第一服务器,以使所述第一服务器对所述第三数据包按照报表项进行分类,生成第四数据包;将所述第四数据包发送至所述消息中间件;
41.第四处理模块,用于在监听到所述消息中间件上存在所述第四数据包时,按照监听顺序调用线程池子线程对各所述第四数据包进行报表项计算,生成第五数据包,所述第四数据包为所述第一服务器对所述第三数据包按照报表项进行分类,生成的第四数据包;
42.第五处理模块,用于将所述第五数据包发送至所述第一服务器。
43.根据第五方面,本发明实施例提供了一种数据分摊处理系统,包括第一服务器、第二服务器及消息中间件,其中,
44.所述第一服务器用于获取待分摊数据以及所述待分摊数据对应的数据来源;按照所述待分摊数据对应的数据来源对所述待分摊数据进行分类,得到若干第一数据包;将各所述第一数据包发送至消息中间件;
45.所述第二服务器用于在监听到所述消息中间件上存在第一数据包时,按照监听顺序对各所述第一数据包进行打包生成第二数据包;用线程池的子线程对所述第二数据包进行分摊逻辑处理,生成第三数据包;将所述第三数据包发送至所述第一服务器;
46.所述第一服务器还用于接收所述第二服务器发送的第三数据包;对所述第三数据包按照报表项进行分类,生成第四数据包;将所述第四数据包发送至所述消息中间件;
47.所述第二服务器还用于在监听到所述消息中间件上存在所述第四数据包时,按照监听顺序调用线程池子线程对各所述第四数据包进行报表项计算,生成第五数据包;将所述第五数据包发送至所述第一服务器;
48.所述第一服务器还用于接收所述第二服务器发送的第五数据包,并根据所述第五数据包得到数据分摊结果。
49.根据第六方面,本发明实施例提供了一种电子设备,包括:
50.存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行第一/二方面,或者第一/二方面任意一种可选实施方式中所述的方法。
51.根据第七方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使计算机执行第一/二方面,或者第一/二方面任意一种可选实施方式中所述的方法。
52.本发明技术方案,具有如下优点:
53.本发明提供了一种数据分摊处理方法及装置,通过获取待分摊数据以及待分摊数据对应的数据来源;按照待分摊数据对应的数据来源对待分摊数据进行分类,得到若干第一数据包;将各第一数据包发送至消息中间件;接收第二服务器发送的第三数据包,第三数据包为第二服务器在监听到消息中间件上存在第一数据包时,按照监听顺序对各第一数据包进行打包生成第二数据包,并调用线程池的子线程对第二数据包进行分摊逻辑处理,生成第三数据包;对第三数据包按照报表项进行分类,生成第四数据包;将第四数据包发送至消息中间件;接收第二服务器发送的第五数据包,并根据第五数据包得到数据分摊结果,第五数据包为第二服务器在监听到消息中间件上存在第四数据包时,按照监听顺序调用线程池子线程对各第四数据包进行报表项计算,生成第五数据包。随着数据的增长和业务的扩大,数据量的不断增加,通过将待分摊的数据进行分类,便于后续管理人员进行整体和部分主要数据的查看,通过对第三数据包进行按照报表项进行分类,为后续进行顶层报表项计算逻辑奠定基础,通过将待分摊数据按照批次进行打包处理,大幅提高系统对于不断增加的数据进行处理的效率。
54.本发明还提供了一种数据分摊处理方法及装置,通过在监听到消息中间件上存在第一数据包时,按照监听顺序对各第一数据包进行打包生成第二数据包,第一数据包为第一服务器获取待分摊数据以及待分摊数据对应的数据来源;按照待分摊数据对应的数据来源对待分摊数据进行分类,得到的第一数据包;调用线程池的子线程对第二数据包进行分摊逻辑处理,生成第三数据包;将第三数据包发送至第一服务器,以使第一服务器对第三数据包按照报表项进行分类,生成第四数据包;将第四数据包发送至消息中间件;在监听到消息中间件上存在第四数据包时,按照监听顺序调用线程池子线程对各第四数据包进行报表项计算,生成第五数据包,第四数据包为第一服务器对第三数据包按照报表项进行分类,生成的第四数据包;将第五数据包发送至第一服务器。通过采用线程池子线程来并行处理具体的业务逻辑,防止数据量太大造成数据积压,通过第二服务器解决不同子公司、不同区域间的数据数量存在较大差异,即“数据倾斜”的问题,从而降低子线程数据处理的数量,提高了数据处理的速度,保证了多子线程间的数据处理同步性。
55.本发明实施例提供了一种数据分摊处理系统,包括第一服务器、第二服务器及消息中间件,其中,第一服务器用于获取待分摊数据以及待分摊数据对应的数据来源;按照待分摊数据对应的数据来源对待分摊数据进行分类,得到若干第一数据包;将各第一数据包发送至消息中间件;第二服务器用于在监听到消息中间件上存在第一数据包时,按照监听顺序对各第一数据包进行打包生成第二数据包;用线程池的子线程对第二数据包进行分摊逻辑处理,生成第三数据包;将第三数据包发送至第一服务器;第一服务器还用于接收第二服务器发送的第三数据包;对第三数据包按照报表项进行分类,生成第四数据包;将第四数据包发送至消息中间件;第二服务器还用于在监听到消息中间件上存在第四数据包时,按照监听顺序调用线程池子线程对各第四数据包进行报表项计算,生成第五数据包;将第五数据包发送至第一服务器;第一服务器还用于接收第二服务器发送的第五数据包,并根据第五数据包得到数据分摊结果。通过采用线程池子线程来并行处理具体的业务逻辑,防止数据量太大造成数据积压,通过第二服务器解决不同子公司、不同区域间的数据数量存在较大差异,即“数据倾斜”的问题,从而降低子线程数据处理的数量,提高了数据处理的速度,保证了多子线程间的数据处理同步性。
附图说明
56.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
57.图1为本发明实施例的数据分摊处理系统的示意图;
58.图2为本发明实施例的数据分摊处理系统的整体框架示意图;
59.图3为本发明实施例的数据分摊处理方法的交互过程示意图;
60.图4为本发明实施例的数据分摊处理装置的结构示意图;
61.图5为本发明实施例的另一数据分摊处理装置的结构示意图;
62.图6为本发明实施例的一种电子设备的结构示意图。
具体实施方式
63.下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
64.在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”、“第四”、“第五”仅用于描述目的,而不能理解为指示或暗示相对重要性。
65.在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,还可以是两个元件内部的连通,可以是无线连接,也可以是有线连接。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
66.此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
67.为了更好地对公司运营成本进行管理,目前多是采用财务报表系统对公司的盈利状况进行统计和显示。报表内容主要分成三大块,收入、成本和利润。其中成本里面有些公共成本不应该摊派到具体的某个城市或者大区的项目身上,或者不应该全部分摊到某一项目上,而是根据具体的规则分摊到全部项目上。
68.以长租业务为例,长租业务是按照出房合同维度进行管理的。每个公共成本都应该分摊到每个具体科目下。财务系统的核算科目又非常的繁多(近500个预算项),每个预算项都要进行分摊计算。例如,若目前近1000多万条总账数据,通过数据处理加工后近40万条待分摊的数据,再对其500多个预算项进行分摊处理,总共计算频次为2亿次,繁多的数据需要财务报表系统的性能较高,否则计算不出管理者所需要的预期结果。此外,由于不同区域或项目间的数据数量存在较大差异,导致数据处理存在不同步性,进而无法对所有数据进行实时计算分析。
69.基于上述问题,本发明实施例提供了一种数据分摊处理系统,如图1所示,该数据分摊处理系统包括第一服务器1、第二服务器3及消息中间件2,其中,
70.具体地,本发明实施例以基于长租税收业务金额分摊过程为例进行本发明实施例提供的数据分摊处理系统进行说明。
71.如图2所示,本发明实施例中的上述第一服务器1为生产端服务器,生产端服务器首先将公共数据(如报表项定义信息)处理加工成缓存格式(示例性地,缓存格式可为kv格式),然后将公共数据存入缓存中(示例性地,缓存可用redis缓存),将待分摊的数据按照城市分桶打包,得到若干分桶打包好的第一数据包,将所有第一数据包发送到消息中间件2上(示例性地,消息中间件2可用rabbitmq)。
72.在实际应用中,待分摊数据可为财务总账数据,包括管财差数据、房租收入数据、工资数据、营销数据、智能费用数据和小业务报表数据。
73.本发明实施例通过采用kv缓存,将公用数据放到缓存中,线程池里每个子线程处理逻辑的时候可以直接使用,减少子线程的执行时间,提高系统时效性。
74.具体地,第二服务器3用于在监听到消息中间件2上存在第一数据包时,按照监听顺序对各第一数据包进行打包生成第二数据包;用线程池的子线程对第二数据包进行分摊逻辑处理,生成第三数据包;将第三数据包发送至第一服务器1。
75.具体地,在实际应用中,本发明实施例中的上述第二服务器3为消费端端服务器,为提高对数据处理的并行执行能力,还可设置多级第二服务器3,即当数据量增加后,可通过扩充消费端服务的方式对数据进行同时处理。
76.示例性地,本发明实施例采用两级消费端服务,即消费端服务器包括一级消费端服务器和二级消费端服务器,从而解决不同区域或不同项目间“数据倾斜”的问题,降低子线程数据处理的数量,提高了服务处理的速度。
77.具体地,在实际应用中,可采用一级消费端服务器将待分摊数据按照批次进行打包处理,二级消费端服务器调用线程池子线程对打包后的数据进行具体的分摊逻辑处理。本发明实施例通过采用“分桶分批”的设计思想,通过消息中间件,将消息分发给不同的终端处理,在数据量增加时,直接增加消费端服务器终端实例即可,提高了数据分摊处理系统的可扩展性和并发性。
78.具体地,在实际应用中,待消费端服务器监听消息队列中消息,待消费端服务器收到消息后,启动线程池,让线程池的子线程进行处理。子线程将要分摊的第二数据包按照批次打包处理,发送到消息中间件2上(示例性地,消息中间件2可为rabbitmq),二级消费端服务监听消息队列中消息,待消费端收到消息后,启动线程池,让线程池的子线程进行处理。子线程去处理具体的业务分摊逻辑,待业务分摊逻辑处理完后,判断自己是不是最后一批数据,如果不是则直接结束。
79.示例性地,例如有1000条数据,以100条一个批次,那就分成10个批次,分别判断每个批次是否完成,等每个批次完成的时候,统计一下完成个数,如果完成个数是正好是10,则当前子线程内处理的数据是最后一条,此时,生产端服务器将会收到判断结果为“是”;如果不是10,则当前子线程内处理的不是最后一条。
80.具体地,在实际应用中,本发明实施例为更好地解决数据量激增的问题,采用线程池子线程来并行处理具体的业务逻辑,防止数据量太大导致数据积压的情况出现。
81.具体地,第一服务器1还用于接收第二服务器3发送的第三数据包;对第三数据包按照报表项进行分类,生成第四数据包;将第四数据包发送至消息中间件2。
82.具体地,在实际应用中,当所有子线程对业务逻辑分摊处理结束后,本发明实施例的生产端服务器收到判断结果为“是”后,将会进行报表项公式计算等操作。
83.具体地,在实际应用中,本发明实施例的生产端服务器在接收到通知后,将待计算的数据(即第三数据包)按照批次打包处理,生成第四数据包,将第四数据包发送到消息中间件2上。这里说明一下分摊逻辑主要分摊的是底层报表项的数据,报表项的公式计算则是通过底层报表项来计算出顶层报表项。
84.具体地,第二服务器3还用于在监听到消息中间件2上存在第四数据包时,按照监听顺序调用线程池子线程对各第四数据包进行报表项计算,生成第五数据包;将第五数据包发送至第一服务器1。
85.具体地,在实际应用中,消费端服务器监听消息队列中消息,待消费端服务器收到消息中间件2上存在第四数据包消息后,启动线程池,按照监听顺序调用线程池的子线程进行计算处理;子线程去处理具体的顶层报表项计算逻辑,待计算逻辑处理完后,判断自己是不是最后一批数据,如果不是则直接结束。
86.具体地,第一服务器1还用于接收第二服务器3发送的第五数据包,并根据第五数据包得到数据分摊结果。
87.具体地,在实际应用中,当所有子线程对计算逻辑分摊处理结束后,本发明实施例的生产端服务器收到判断结果为“是”后,调用生产端服务器告知处理完毕。生产端服务器在接收到信息后,生产会计期间的生成日志记录并发送消息(示例性地,可用企业微信形式发送消息)通知财务长租业务员整个分摊操作处理完毕。
88.本发明实施例通过采用消息中间件2,不同消费端服务器从消息中间件2中获取数据,当数据量激增时,可以通过扩充消费端服务器以提高并行执行的能力,提高系统稳定性,扩展性。
89.此外,由于分摊计算数据量比较大,因此,必须从各个方面去考虑性能。在软件架构方面,需要考虑分批次、并行、分布式的技术手段去处理核心数据的计算逻辑;在数据库设计方面,需要考虑数据库表设计的优化(如增加索引、并发更新引起的死锁和锁等待,等等);在硬件方面,考虑使用固态硬盘ssd代替一般的机械硬盘hdd,提高数据库的读写速度。在软件部署上面,多部署几台实例(示例性地,一个报表项流程视为一个实例),提高并行执行的能力。
90.关于上述第一服务器1、第二服务器3及消息中间件2更进一步描述参见下文对应数据分摊处理方法实施例的相关描述,在此不再进行赘述。
91.通过上述各个组成部分的协同合作,本发明实施例提供的数据分摊处理系统,包括第一服务器1、第二服务器3及消息中间件2,第一服务器1用于获取待分摊数据以及待分摊数据对应的数据来源;按照待分摊数据对应的数据来源对待分摊数据进行分类,得到若干第一数据包;将各第一数据包发送至消息中间件2;第二服务器3用于在监听到消息中间件2上存在第一数据包时,按照监听顺序对各第一数据包进行打包生成第二数据包;用线程池的子线程对第二数据包进行分摊逻辑处理,生成第三数据包;将第三数据包发送至第一服务器1;第一服务器1还用于接收第二服务器3发送的第三数据包;对第三数据包按照报表
项进行分类,生成第四数据包;将第四数据包发送至消息中间件2;第二服务器3还用于在监听到消息中间件2上存在第四数据包时,按照监听顺序调用线程池子线程对各第四数据包进行报表项计算,生成第五数据包;将第五数据包发送至第一服务器1;第一服务器1还用于接收第二服务器3发送的第五数据包,并根据第五数据包得到数据分摊结果。通过采用线程池子线程来并行处理具体的业务逻辑,防止数据量太大造成数据积压,通过第二服务器3解决不同子公司、不同区域间的数据数量存在较大差异,即“数据倾斜”的问题,从而降低子线程数据处理的数量,提高了数据处理的速度,保证了多子线程间的数据处理同步性。
92.本发明实施例还提供了一种数据分摊处理方法,该方法应用于如图1所示的第一服务器1,其中,如图3所示,
93.步骤s101:获取待分摊数据以及待分摊数据对应的数据来源。
94.具体地,在实际应用中,本发明实施例在获取待分摊数据时还同时获取公共数据,将加工后的公共数据存入缓存,可以重复使用,避免了重复查询数据加工数据,提高了本发明实施例提供的数据分摊处理方法的可利用性。
95.具体地,在实际应用中,在获取待分摊数据同时还会获取待分摊数据的来源,来源划分可以为子公司、区域、以及项目等,从而对待分摊数据进行初步处理和分类,具体情况还要由各个业务线的业务员进行核对、校验、调整、调账,直到账的信息无误为止。
96.步骤s102:按照待分摊数据对应的数据来源对待分摊数据进行分类,得到若干第一数据包。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
97.步骤s103:将各第一数据包发送至消息中间件。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
98.步骤s104:接收第二服务器发送的第三数据包,第三数据包为第二服务器在监听到消息中间件上存在第一数据包时,按照监听顺序对各第一数据包进行打包生成第二数据包,并调用线程池的子线程对第二数据包进行分摊逻辑处理,生成第三数据包。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
99.步骤s105:对第三数据包按照报表项进行分类,生成第四数据包。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
100.步骤s106:将第四数据包发送至消息中间件。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
101.步骤s107:接收第二服务器发送的第五数据包,并根据第五数据包得到数据分摊结果,第五数据包为第二服务器在监听到消息中间件上存在第四数据包时,按照监听顺序调用线程池子线程对各第四数据包进行报表项计算,生成第五数据包。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
102.具体地,在一实施例中,上述步骤s107根据第五数据包得到数据分摊结果,具体包括如下步骤:
103.步骤s108:按照第五数据包对应的报表项及数据来源对各第五数据包进行分类,得到数据分摊结果。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
104.通过执行上述步骤,本发明实施例提供的数据分摊处理方法,通过获取待分摊数据以及待分摊数据对应的数据来源;按照待分摊数据对应的数据来源对待分摊数据进行分
类,得到若干第一数据包;将各第一数据包发送至消息中间件;接收第二服务器发送的第三数据包,第三数据包为第二服务器在监听到消息中间件上存在第一数据包时,按照监听顺序对各第一数据包进行打包生成第二数据包,并调用线程池的子线程对第二数据包进行分摊逻辑处理,生成第三数据包;对第三数据包按照报表项进行分类,生成第四数据包;将第四数据包发送至消息中间件;接收第二服务器发送的第五数据包,并根据第五数据包得到数据分摊结果,第五数据包为第二服务器在监听到消息中间件上存在第四数据包时,按照监听顺序调用线程池子线程对各第四数据包进行报表项计算,生成第五数据包。随着数据的增长和业务的扩大,数据量的不断增加,通过将待分摊的数据进行分类,便于后续管理人员进行整体和部分主要数据的查看,通过对第三数据包进行按照报表项进行分类,为后续进行顶层报表项计算逻辑奠定基础,通过将待分摊数据按照批次进行打包处理,大幅提高系统对于不断增加的数据进行处理的效率。
105.本发明实施例还提供了一种数据分摊处理方法,该方法应用于如图1所示的第二服务器3,其中,如图3所示,
106.步骤s201:在监听到消息中间件上存在第一数据包时,按照监听顺序对各第一数据包进行打包生成第二数据包,第一数据包为第一服务器获取待分摊数据以及待分摊数据对应的数据来源;按照待分摊数据对应的数据来源对待分摊数据进行分类,得到的第一数据包。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
107.步骤s202:调用线程池的子线程对第二数据包进行分摊逻辑处理,生成第三数据包。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
108.具体地,实际应用中,本发明实施例采用“多级消费者”的设计思想,消除单个子线程中数据倾斜的问题,将每个实例服务处理的数据都是均匀的,平衡了每台消费端服务器的计算能力,不会导致有些消费端服务器出现空置而另一些服务满负荷运作的情况。
109.步骤s203:将第三数据包发送至第一服务器,以使第一服务器对第三数据包按照报表项进行分类,生成第四数据包;将第四数据包发送至消息中间件。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
110.步骤s204:在监听到消息中间件上存在第四数据包时,按照监听顺序调用线程池子线程对各第四数据包进行报表项计算,生成第五数据包,第四数据包为第一服务器对第三数据包按照报表项进行分类,生成的第四数据包。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
111.步骤s205:将第五数据包发送至第一服务器。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
112.具体地,在一实施例中,上述步骤s204按照监听顺序调用线程池子线程对各第四数据包进行报表项计算,生成第五数据包,具体包括如下步骤:
113.步骤s206:获取当前第四数据包对应的报表项公式。
114.具体地,在实际应用中,报表项公式已存储在缓存区,通过直接调用缓存中的报表项公式即可使用,进一步提高了数据处理速度。
115.步骤s207:基于报表项公式调用线程池子线程对当前第四数据包进行报表项计算,生成第五数据包。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
116.具体地,在一实施例中,在执行上述步骤s203将第三数据包发送至第一服务器之前,具体还包括如下步骤:
117.步骤s208:按照监听顺序统计当前批次内第二数据包的总数。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
118.步骤s209:统计当前批次内第三数据包的生成总数。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
119.步骤s210:判断当前批次内第三数据包的生成总数是否与第二数据包的总数相等。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
120.具体地,在实际应用中,本发明实施例通过判断当前批次内第三数据包的生成总数是否与第二数据包的总数相等,根据判断结果确定下一步骤为继续获取线程池数据还是返回生产端服务器,进行后续报表项计算。
121.步骤s211:当当前批次内第三数据包的生成总数与第二数据包的总数相等时,将第三数据包发送至第一服务器。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
122.步骤s212:当当前批次内第三数据包的生成总数与第二数据包的总数不相等时,调用当前子线程对当前批次内的下一第二数据包进行分摊逻辑处理。详细内容参见上述数据分摊处理系统实施例中的相关描述,在此不再进行赘述。
123.通过执行上述步骤,本发明实施例提供的数据分摊处理方法,通过在监听到消息中间件上存在第一数据包时,按照监听顺序对各第一数据包进行打包生成第二数据包,第一数据包为第一服务器获取待分摊数据以及待分摊数据对应的数据来源;按照待分摊数据对应的数据来源对待分摊数据进行分类,得到的第一数据包;调用线程池的子线程对第二数据包进行分摊逻辑处理,生成第三数据包;将第三数据包发送至第一服务器,以使第一服务器对第三数据包按照报表项进行分类,生成第四数据包;将第四数据包发送至消息中间件;在监听到消息中间件上存在第四数据包时,按照监听顺序调用线程池子线程对各第四数据包进行报表项计算,生成第五数据包,第四数据包为第一服务器对第三数据包按照报表项进行分类,生成的第四数据包;将第五数据包发送至第一服务器。通过采用线程池子线程来并行处理具体的业务逻辑,防止数据量太大造成数据积压,通过第二服务器解决不同子公司、不同区域间的数据数量存在较大差异,即“数据倾斜”的问题,从而降低子线程数据处理的数量,提高了数据处理的速度,保证了多子线程间的数据处理同步性。
124.下面将结合具体应用示例,对本发明实施例提供的数据分摊处理方法进行详细的说明。
125.结合图1-图3所示,本发明实施例通过数仓获取总账数据,生成汇总数据并存入数据汇总表中,财务操作人员对汇总数据进行一系列的加工,整体流程如下:
126.1)选择纳入合并的公司:由于集团下面有很多子公司,需要指明账务数据归纳入哪个子公司下,待生出报表后供各个子公司的负责人进行查看。通过事先将账务数据指定一个对应的公司编码和公司名称,即将账务上数据补充上公司编码及名称。
127.2)补齐数据上的预算项:由于总账明细数据没有指明预算项,需要指明明细数据的预算项。
128.3)拆分数据包:将数据拆分到不同的业务线上,为后续分发数据包做准备。
129.4)生成简版损益表:具体展现各个业务线的营收情况。
130.5)分发数据:将数据按照业务线分发给不同业务线财务人员进行核对校准,具体地,各个业务线的人员在拿到数据后,按照自己的业务操作进入子流程。
131.具体地,以长租业务为例,当长租财务业务员拿到数据后,进行后续操作,具体过程如下:
132.1)导入管财差数据:长租业务员在核对数据后,发现数据有误,对其数据进行调整,导入调整的数据。
133.2)导入房租收入/支出数据:长租业务员在核对业务数据后,导入一些线下的房租收入或者房租支出的数据。
134.3)导入工资、营销、职能费用等数据:账务信息上只体现到公司的营收情况,和部分支出,并不包含员工工资、营销、职能费用等,这部分数据需要额外手动导入文件。
135.4)推rent表明细数据:通知数仓将数据整合到一起,将处理后的数据推送到制定好的rent表中。
136.5)绑定规则:由于财务报表项过会根据业务的发展而调整,则绑定报表项的规则也在不断的调整,所以需要指定到某个版本的规则。
137.示例性地,根据预算项编号或者会计科目编号来指定报表项编号和报表项名称,预算项编号='60016701'指定报表项为房租收入-企业;会计科目编号='az010227'指定到报表项为转租配置成本。
138.6)生成长租线管报:待上述所有的数据准备工作完成后,长租业务员点击生成长租管报。如果长租业务员发现生出的管报数据不对,对错误的数据重新调整,可以再次重新上述过程,重新生成管报。
139.示例性地,当长租业务员发现增加了一条数值为100的数据,则在该项目下增加一条数据,删除数据的过程与增加数据类似,在此不再进行赘述。
140.7)发布管报:待长租业务员核对长租管报信息无误后,发布报表,各个业务线的负责人就能看到报表。
141.关闭会计区间;如果该会计区间的报表无误后,关闭会计区间后,该会计区间的数据将被锁定,不再被操作。
142.当业务员操作完成后即可生成管报,为了防止遗漏报表项,本发明实施例生成管报前,先校验是否有未绑定的报表项,如果还有未绑定的报表项,退出生成管报流程,提示用户继续绑定。如果绑定完成则开始生成管报,具体生成管报的过程如下:
143.1)初始化分摊前、分摊后管报基础表(清空当前会计期间的数据)。
144.具体地,由于数据有误或信息不全,有可能会重复生成数据,因此在每次重新生成管报基础表之前,需要首先将上一次生成的垃圾数据进行清除。
145.2)管报维度和度量值写入到分摊前管报表:将横版数据转换成列表数据。
146.具体地,在实际应用中,由于每位管理员的权限不同,通过设定管报维度和度量值,可以以“城市”、“产品线”、“业务线”、“区域”将数据进行划分,从而便于拥有不同权限的管理员进行对应查看。
147.3)计算管报基础报表项。
148.4)计算房租收入、营业收入(减免前)指标项。
149.5)导入工资模板数据。
150.6)导入职能费用模板数据。
151.7)导入营销模板数据。
152.8)计算报表项的分摊并写入到分摊后管报表:其中m版报表为管理口径(平摊算法);f版报表为财务口径(折现算法),两版系统的最大区别在于房租收入的计算取值及是否含有管财差数据的不同而导致m、f两版报表的展示不同。
153.本发明实施例通过使用了分桶和分布式的处理结构,打破了之前的三层循环(数据量越大,报表项越多,循环次数越多,软件的效率越低),提高系统执行性能,此外,通过采用了“分而治之”的设计思想,将分摊计算等核心逻辑放在子线程中完成,不在一个主线程中执行,将计算分散到不同的线程中,防止了单线程的资源占用过度(如内存占用高),提高了整体数据处理的稳定性。
154.本发明实施例提供了一种数据分摊处理装置,应用于如图1所示的第一服务器1,如图4所示,该数据分摊处理装置包括:
155.获取模块101,用于获取待分摊数据以及待分摊数据对应的数据来源。详细内容参见上述方法实施例中步骤s101的相关描述,在此不再进行赘述。
156.第一处理模块102,用于按照待分摊数据对应的数据来源对待分摊数据进行分类,得到若干第一数据包。详细内容参见上述方法实施例中步骤s102的相关描述,在此不再进行赘述。
157.第一发送模块103,用于将各第一数据包发送至消息中间件2。详细内容参见上述方法实施例中步骤s103的相关描述,在此不再进行赘述。
158.第一接收模块104,用于接收第二服务器3发送的第三数据包,第三数据包为第二服务器3在监听到消息中间件2上存在第一数据包时,按照监听顺序对各第一数据包进行打包生成第二数据包,并调用线程池的子线程对第二数据包进行分摊逻辑处理,生成第三数据包。详细内容参见上述方法实施例中步骤s104的相关描述,在此不再进行赘述。
159.第一分类模块105,用于对第三数据包按照报表项进行分类,生成第四数据包。详细内容参见上述方法实施例中步骤s105的相关描述,在此不再进行赘述。
160.第二发送模块106,用于将第四数据包发送至消息中间件2。详细内容参见上述方法实施例中步骤s106的相关描述,在此不再进行赘述。
161.第二接收模块107,用于接收第二服务器3发送的第五数据包,并根据第五数据包得到数据分摊结果,第五数据包为第二服务器3在监听到消息中间件2上存在第四数据包时,按照监听顺序调用线程池子线程对各第四数据包进行报表项计算,生成第五数据包。详细内容参见上述方法实施例中步骤s107的相关描述,在此不再进行赘述。
162.上述的数据分摊处理装置的更进一步描述参见上述数据分摊处理方法实施例的相关描述,在此不再进行赘述。
163.通过上述各个组成部分的协同合作,本发明实施例提供的数据分摊处理装置,通过随着数据的增长和业务的扩大,数据量的不断增加,通过将待分摊的数据进行分类,便于后续管理人员进行整体和部分主要数据的查看,通过对第三数据包进行按照报表项进行分类,为后续进行顶层报表项计算逻辑奠定基础,通过将待分摊数据按照批次进行打包处理,大幅提高系统对于不断增加的数据进行处理的效率。
164.本发明实施例还提供了一种数据分摊处理装置,应用于如图1所示的第二服务器3,如图5所示,该数据分摊处理装置包括:
165.第二处理模块201,用于在监听到消息中间件2上存在第一数据包时,按照监听顺序对各第一数据包进行打包生成第二数据包,第一数据包为第一服务器1获取待分摊数据以及待分摊数据对应的数据来源;按照待分摊数据对应的数据来源对待分摊数据进行分类,得到的第一数据包。详细内容参见上述方法实施例中步骤s201的相关描述,在此不再进行赘述。
166.第三处理模块202,用于调用线程池的子线程对第二数据包进行分摊逻辑处理,生成第三数据包。详细内容参见上述方法实施例中步骤s202的相关描述,在此不再进行赘述。
167.第三发送模块203,用于将第三数据包发送至第一服务器1,以使第一服务器1对第三数据包按照报表项进行分类,生成第四数据包;将第四数据包发送至消息中间件2。详细内容参见上述方法实施例中步骤s203的相关描述,在此不再进行赘述。
168.第四处理模块204,用于在监听到消息中间件2上存在第四数据包时,按照监听顺序调用线程池子线程对各第四数据包进行报表项计算,生成第五数据包,第四数据包为第一服务器1对第三数据包按照报表项进行分类,生成的第四数据包。详细内容参见上述方法实施例中步骤s204的相关描述,在此不再进行赘述。
169.第五处理模块205,用于将第五数据包发送至第一服务器1。详细内容参见上述方法实施例中步骤s205的相关描述,在此不再进行赘述。
170.上述的数据分摊处理装置的更进一步描述参见上述数据分摊处理方法实施例的相关描述,在此不再进行赘述。
171.通过上述各个组成部分的协同合作,本发明实施例提供的数据分摊处理装置,通过随着数据的增长和业务的扩大,数据量的不断增加,通过采用线程池子线程来并行处理具体的业务逻辑,防止数据量太大造成数据积压,通过第二服务器解决不同子公司、不同区域间的数据数量存在较大差异,即“数据倾斜”的问题,从而降低子线程数据处理的数量,提高了数据处理的速度,保证了多子线程间的数据处理同步性。
172.本发明实施例提供了一种电子设备,如图6所示,该电子设备包括处理器901和存储器902,存储器902和处理器901之间互相通信连接,其中处理器901和存储器902可以通过总线或者其他方式连接,图6中以通过总线连接为例。
173.处理器901可以为中央处理器(central processing unit,cpu)。处理器901还可以为其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
174.存储器902作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中方法所对应的程序指令/模块。处理器901通过运行存储在存储器902中的非暂态软件程序、指令以及模块,从而执行处理器901的各种功能应用以及数据处理,即实现上述方法实施例中的方法。
175.存储器902可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器901所创建的数据等。此外,
存储器902可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器902可选包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至处理器901。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
176.一个或者多个模块存储在存储器902中,当被处理器901执行时,执行上述方法实施例中的方法。
177.上述电子设备具体细节可以对应参阅上述方法实施例中对应的相关描述和效果进行理解,此处不再赘述。
178.本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,实现的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)、随机存储记忆体(random access memory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state drive,ssd)等;存储介质还可以包括上述种类的存储器的组合。
179.显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献