基于分布式的税费计算方法以及装置
技术领域
本申请涉及数据处理技术领域,特别涉及一种基于分布式的税费计算方法。本申请同时涉及一种基于分布式的税费计算装置,一种电子设备,以及一种计算机可读存储介质。
背景技术
税务是指和税收相关的事务。一般税务的范畴包括:税法的概念、税收的本质、税收的产生、税收的作用。税收作为经济杠杆之一,具有调节收入分配、促进资源配置、促进经济增长的作用。税收一般包括增值税、消费税、营业税、关税、企业所得税和个人所得税等等。
随着现在财务信息化的建设和互联网金融的快速发展,伴随着出现了越来越多且越来越复杂的税费计算相关业务场景,怎么能在越来越多越来越越复杂的税费计算场景中构建一套通用的税费计算引擎来支持各种各样的上游税费计算场景的需求也越来越强烈。由于税务组织结构较为复杂,涉税数据繁多,而且各个税种的税期不一致,使得税费计算这一工作变得极为不便。由于基础数据来源途径较多,数据庞大,各个税种计算方式不同等原因,会造成税费计算过程中的高出错率,并且面对庞大的涉税数据,现有技术的税费计算方法在税费计算效率方面还有待提高。因此,为了确保税费计算的准确性及高效性,亟需一种简单高效的税费计算方法。
发明内容
有鉴于此,本申请实施例提供了一种基于分布式的税费计算方法。本申请同时涉及一种基于分布式的税费计算装置,一种电子设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
本申请提供一种基于分布式的税费计算方法,包括:
接收税费计算请求,所述税费计算请求中携带有业务数据及所述业务数据所属的业务类型;
基于所述业务类型确定所述业务数据匹配的至少一条税费计算规则;
根据所述至少一条税费计算规则计算所述业务数据的税费计算复杂度;
若所述业务数据的税费计算复杂度超出预设复杂度阈值,则将所述业务数据及所述至少一条税费计算规则分发至分布式计算集群中的计算节点进行税费计算,获得税费计算结果。
可选地,所述分布式计算集群包括Map-Reduce集群;
所述Map-Reduce集群中的计算节点包括:Mapper节点、Reducer节点以及Detector节点;
相应的,将所述业务数据及所述至少一条税费计算规则分发至分布式计算集群中的计算节点进行税费计算,获得税费计算结果包括:
将所述业务数据、所述业务数据对应的至少一条税费计算规则分发至所述Map-Reduce集群中的所述Mapper节点,其中,所述至少一条税费计算规则中包含多个税费计算脚本;
通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及所述业务数据对应的税费计算规则中包含的多个税费计算脚本分发至所述Reducer节点;
通过所述Reducer节点基于所述多个税费计算脚本对所述业务数据进行税费计算,并将税费计算结果发送至Detector节点;
通过所述Detector节点对所述税费计算结果进行汇总并输出。
可选地,所述通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及分类后所述业务数据对应的税费计算规则中包含的多个税费计算脚本分发至所述Reducer节点包括:
响应于接收到任务分配节点分配的映射任务,从Mapper节点指定的存储位置读取映射任务的输入数据,所述输入数据包括所述业务数据、所述业务数据对应的至少一条税费计算规则以及所述税费计算规则中包含的多个税费计算脚本;
调用映射函数按照所述至少一条税费计算规则对所述业务数据进行分片并产生映射函数的输出;
通过对映射函数的输出做分割形成Mapper节点的输出结果。
可选地,所述通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及分类后所述业务数据对应的税费计算规则中包含的多个税费计算脚本分发至所述Reducer节点包括:
根据由所述业务数据、所述业务数据对应的至少一条税费计算规则以及所述税费计算规则中包含的多个税费计算脚本组成的数据集的分片数与Reducer节点数量之间的映射关系,确定所述数据集的分片数;
根据所述数据集的分片数,对所述数据集进行分片处理,生成所述数据集的分片数据;
根据所述分片数据中的税费计算规则与Reducer节点之间的分配映射关系,确定各分片数据对应的Reducer节点;
将所述数据集的分片数据分配到对应的Reducer节点,以使所述Reducer节点对接收到的分片数据进行税费计算。
可选地,所述根据所述至少一条税费计算规则计算所述业务数据的税费计算复杂度之后,在所述业务数据的税费计算复杂度超出预设计算复杂度阈值的情况下,并且在所述则将所述业务数据及所述至少一条税费计算规则分发至分布式计算集群中的计算节点进行税费计算步骤执行之前,还包括:
获取所述至少一条税费计算规则包含的多个税费计算脚本的标识信息;
相应的,所述将所述业务数据及所述至少一条税费计算规则分发至分布式计算集群中的计算节点进行税费计算包括:
将所述业务数据及所述至少一条税费计算规则中包含的多个税费计算脚本的标识信息分发至所述Map-Reduce集群中的所述Mapper节点;
通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及所述业务数据对应的税费计算规则中包含的多个税费计算脚本的标识分发至所述Reducer节点;
通过所述Reducer节点基于所述多个税费计算脚本的标识获取对应的多个税费计算脚本,根据所述多个税费计算脚本对所述业务数据进行税费计算,得到多个税费计算结果,并将所述多个税费计算结果发送至Detector节点;
通过所述Detector节点对所述多个税费计算结果进行汇总并输出。
可选地,所述通过所述Detector节点对所述多个税费计算结果进行汇总并输出包括:
通过所述Detector节点对所述多个税费计算结果进行求和运算,得到目标税费计算结果并输出。
可选地,所述根据所述至少一条税费计算规则计算所述业务数据的税费计算复杂度包括:
获取所述至少一条税费计算规则的复杂度;
计算所述至少一条税费计算规则的复杂度的平均值作为所述业务数据的税费计算复杂度。
可选地,所述获取所述至少一条税费计算规则的复杂度包括:
获取所述至少一条税费计算规则中包含的多个税费计算脚本的复杂度;
利用所述至少一条税费计算规则中包含的多个税费计算脚本分别对应的权重,对所述多个税费计算脚本分别对应的复杂度进行加权计算,得到所述至少一条税费计算规则的复杂度。
可选地,所述基于所述业务类型确定所述业务数据匹配的至少一条税费计算规则包括:
获取规则匹配路由根据业务数据配置的路由脚本,所述路由脚本中包含业务数据所属的业务类型;
判断所述税费计算请求中携带的业务数据所属的业务类型与所述路由脚本中包含的业务类型是否一致,若一致,则匹配成功。
本申请还提供一种基于分布式的税费计算装置,包括:
请求接收模块,被配置为接收税费计算请求,所述税费计算请求中携带有业务数据及所述业务数据所属的业务类型;
规则确定模块,被配置为基于所述业务类型确定所述业务数据匹配的至少一条税费计算规则;
复杂度计算模块,被配置为根据所述至少一条税费计算规则计算所述业务数据的税费计算复杂度;
若所述业务数据的税费计算复杂度超出预设复杂度阈值,则运行税费计算模块;
所述税费计算模块,被配置为则将所述业务数据及所述至少一条税费计算规则分发至分布式计算集群中的计算节点进行税费计算,获得税费计算结果。
可选地,所述分布式计算集群包括Map-Reduce集群;
所述Map-Reduce集群中的计算节点包括:Mapper节点、Reducer节点以及Detector节点;
相应的,所述税费计算模块包括:
第一数据分发子模块,被配置为将所述业务数据、所述业务数据对应的至少一条税费计算规则分发至所述Map-Reduce集群中的所述Mapper节点,其中,所述至少一条税费计算规则中包含多个税费计算脚本;
第二数据分发子模块,被配置为通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及所述业务数据对应的税费计算规则中包含的多个税费计算脚本分发至所述Reducer节点;
第一税费计算结果发送子模块,被配置为通过所述Reducer节点基于所述多个税费计算脚本对所述业务数据进行税费计算,并将税费计算结果发送至Detector节点;
第一数据输出子模块,被配置为通过所述Detector节点对所述税费计算结果进行汇总并输出。
可选地,所述数据分发子模块,还被配置为:
响应于接收到任务分配节点分配的映射任务,从Mapper节点指定的存储位置读取映射任务的输入数据,所述输入数据包括所述业务数据、所述业务数据对应的至少一条税费计算规则以及所述税费计算规则中包含的多个税费计算脚本;
调用映射函数按照所述至少一条税费计算规则对所述业务数据进行分片并产生映射函数的输出;
通过对映射函数的输出做分割形成Mapper节点的输出结果。
可选地,所述数据分发子模块,还被配置为:
根据由所述业务数据、所述业务数据对应的至少一条税费计算规则以及所述税费计算规则中包含的多个税费计算脚本组成的数据集的分片数与Reducer节点数量之间的映射关系,确定所述数据集的分片数;
根据所述数据集的分片数,对所述数据集进行分片处理,生成所述数据集的分片数据;
根据所述分片数据中的税费计算规则与Reducer节点之间的分配映射关系,确定各分片数据对应的Reducer节点;
将所述数据集的分片数据分配到对应的Reducer节点,以使所述Reducer节点对接收到的分片数据进行税费计算。
可选地,所述基于分布式的税费计算装置,还包括:
标识信息获取模块,被配置为获取所述至少一条税费计算规则包含的多个税费计算脚本的标识信息;
相应的,所述税费计算模块包括:
第三数据分发子模块,被配置为将所述业务数据及所述至少一条税费计算规则中包含的多个税费计算脚本的标识信息分发至所述Map-Reduce集群中的所述Mapper节点;
第四数据分发子模块,被配置为通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及所述业务数据对应的税费计算规则中包含的多个税费计算脚本的标识分发至所述Reducer节点;
第二税费计算结果发送子模块,被配置为通过所述Reducer节点基于所述多个税费计算脚本的标识获取对应的多个税费计算脚本,根据所述多个税费计算脚本对所述业务数据进行税费计算,得到多个税费计算结果,并将所述多个税费计算结果发送至Detector节点;
第二数据输出子模块,被配置为通过所述Detector节点对所述多个税费计算结果进行汇总并输出。
本申请还提供了一种电子设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
接收税费计算请求,所述税费计算请求中携带有业务数据及所述业务数据所属的业务类型;
基于所述业务类型确定所述业务数据匹配的至少一条税费计算规则;
根据所述至少一条税费计算规则计算所述业务数据的税费计算复杂度;
若所述业务数据的税费计算复杂度超出预设复杂度阈值,则将所述业务数据及所述至少一条税费计算规则分发至分布式计算集群中的计算节点进行税费计算,获得税费计算结果。
本申请还提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述基于分布式的税费计算方法的步骤。
与现有技术相比,本申请具有如下优点:
本申请提供的一种基于分布式的税费计算方法,包括:通过接收税费计算请求,所述税费计算请求中携带有业务数据及所述业务数据所属的业务类型;基于所述业务类型确定所述业务数据匹配的至少一条税费计算规则;根据所述至少一条税费计算规则计算所述业务数据的税费计算复杂度;若所述业务数据的税费计算复杂度超出预设复杂度阈值,则将所述业务数据及所述至少一条税费计算规则分发至分布式计算集群中的计算节点进行税费计算,获得税费计算结果。
本申请提供的基于分布式的税费计算方法,通过确定业务数据的业务类型,从而为其匹配对应的税费计算规则,然后通过分布式计算集群中的计算节点进行税费计算,使得所述税费计算方法能够满足不同场景、不同难度的税费计算,同时能够保证税费计算结果的准确性以及高效性。
附图说明
图1是本申请实施例提供的基于分布式的税费计算方法的流程图;
图2是本申请实施例提供的基于分布式的税费计算方法的示意图;
图3是本申请实施例提供的应用于实际场景的基于分布式的税费计算方法的流程图;
图4是本申请实施例提供的基于分布式的税费计算装置的结构示意图;
图5是本申请实施例提供的电子设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本发明一个或多个实施例涉及的名词术语进行解释。
分布式:将需要巨大计算能力的问题分解成多个子任务,并分配到多台机器并行处理,最后合并得到最终结果,能充分利用分布式机器集群中的机器资源。
高并发:通过设计保障系统能同时并行处理很多请求。
高可用:通过设计保障系统能不间断地对外持续提供服务。
本申请提供了一种基于分布式的税费计算方法。本申请还提供一种基于分布式的税费计算装置,一种电子设备,以及一种计算机可读存储介质,以下分别结合本申请提供的实施例的附图逐一进行详细说明。
本申请提供的一种基于分布式的税费计算方法实施例如下:
参见附图1,其示出了本实施例提供的一种基于分布式的税费计算方法的流程图,参照附图2,其示出了本实施例提供的一种基于分布式的税费计算方法的示意图。
图1示出了本实施例提供的一种基于分布式的税费计算方法的流程图,包括步骤102至步骤108。
步骤102:接收税费计算请求,所述税费计算请求中携带有业务数据及所述业务数据所属的业务类型。
本申请提供的一个实施例中,所述业务数据即需要进行税费计算的涉税数据,如图2所示,税费计算业务中所述业务类型包括:自营收入、外送收入、国际业务收入以及其他收入。实际应用中,所述税费计算请求中除携带业务数据所属的业务类型外,还可携带业务数据的其他维度信息,如业务类型的标识;具体的,如图2所示,若所述业务数据所属的业务类型为自营收入,则所述业务类型的标识为“self”;若所述业务数据所属的业务类型为外送收入,则所述业务类型的标识为“out”;若所述业务数据所属的业务类型为国际业务收入,则所述业务类型的标识为“international”;若所述业务数据所属的业务类型为其他收入,则所述业务类型的标识为“other”。
本实施例中,假设企业向税费计算服务器发起税费计算请求,而实际应用中,经营范围不同的企业需纳税的税种及税率不同,以所述企业的经营范围涉及销售为例,则该企业的业务数据所属的业务类型可以包括:自营收入、外送收入等。所述企业向税费计算服务器发起税费计算请求,所述税费计算请求中携带的业务数据为:当月营业额1000元,业务类型为自营收入。
步骤104:基于所述业务类型确定所述业务数据匹配的至少一条税费计算规则。
本申请提供的一个实施例中,所述基于所述业务类型确定所述业务数据匹配的至少一条税费计算规则具体可通过以下步骤实现:
获取规则匹配路由根据业务数据配置的路由脚本,所述路由脚本中包含业务数据所属的业务类型;
判断所述税费计算请求中携带的业务数据所属的业务类型与所述路由脚本中包含的业务类型是否一致,若一致,则匹配成功。
具体的,若所述税费计算请求中携带的业务数据所属的业务类型与所述路由脚本中包含的业务类型不一致,则不作处理即可。
沿用上例,企业发起的税费计算请求中携带的业务数据为:当月营业额1000元,业务类型为自营收入,由于所述企业的经营范围涉及销售,则所述企业每月应缴纳税费所涉及税种包括增值税、城建税、教育费附加税以及地方教育附加税,假设规则匹配路由根据业务数据配置的路由脚本为“税费计算规则1:Type=self,税费计算规则1中包含的税种为:增值税、城建税;税费计算规则2:Type=self,税费计算规则2中包含的税种为增值税、教育费附加税以及地方教育附加税;税费计算规则3:Type=out,税费计算规则3中包含的税种为增值税、城建税和教育费附加税”,则将税费计算请求中携带的业务数据所属的业务类型与路由脚本中包含的业务类型进行比较可得,与所述业务数据匹配的税费计算规则为税费计算规则1和税费计算规则2。
步骤106:根据所述至少一条税费计算规则计算所述业务数据的税费计算复杂度。
本说明书提供的一个实施例中,所述根据所述至少一条税费计算规则计算所述业务数据的税费计算复杂度包括:
获取所述至少一条税费计算规则的复杂度;
计算所述至少一条税费计算规则的复杂度的平均值作为所述业务数据的税费计算复杂度。
具体的,当只有一条税费计算规则的情况下,这条税费计算规则的复杂度的平均值即等于其复杂度。
具体实施时,所述至少一条税费计算规则的复杂度可根据税费计算规则与复杂度映射表确定,预存的税费计算规则与复杂度映射表如表1所示。
表1
税费计算规则 |
复杂度 |
税费计算规则1 |
2 |
税费计算规则2 |
3 |
…… |
…… |
表1中税费计算规则的复杂度包括5个等级,分别由数值1至5表示,数值越大则代表复杂度等级越高,即越复杂,由表1可知,税费计算规则1的复杂度为2,税费计算规则2的复杂度为3,则经计算可得,所述税费计算规则1和税费计算规则2的复杂度的平均值A1=(2+3)/2=2.5,即所述业务数据的税费计算复杂度为2.5,若所述税费计算复杂度超出预设复杂度阈值,则将所述业务数据及所述税费计算规则1和税费计算规则2分发至分布式计算集群中的计算节点进行税费计算,获得税费计算结果。
本说明书提供的另一实施例中,所述获取所述至少一条税费计算规则的复杂度还可通过以下步骤实现:
获取所述至少一条税费计算规则中包含的多个税费计算脚本的复杂度;
利用所述至少一条税费计算规则中包含的多个税费计算脚本分别对应的权重,对所述多个税费计算脚本分别对应的复杂度进行加权计算,得到所述至少一条税费计算规则的复杂度。
具体的,由于一条税费计算规则中可能包含多个税种,每个税种均有其对应的税费计算脚本,所述税费计算脚本即为不同税种分别对应的税费计算公式,因此所述税费计算规则的复杂度可以根据税费计算规则中包含的税种对应的税费计算公式的复杂度来确定。
仍以企业向税费计算服务器发起税费计算请求,且所述企业的经营范围涉及销售为例,该企业当月营业额为1000元,业务类型为自营收入,该企业当月应缴纳税费所涉及的税种包括增值税、城建税、教育费附加税以及地方教育附加税,而路由脚本中税费计算规则1包含的税种为增值税和城建税,税费计算规则2包含的税种为增值税、教育费附加税以及地方教育附加税,其中增值税、城建税、教育费附加税以及地方教育附加税对应的税费计算公式如表2所示。
表2
表2中包括每一条计算规则中包含的每一个税种的税费计算公式、所述税费计算公式的复杂度以及所述税费计算公式在所述税费计算规则中的权重占比,则根据表2中的信息进行计算可得:税费计算规则1的复杂度B1=3*40%+1*20%=1.4;税费计算规则2的复杂度B2=3*40%+1*20%+1*20%=1.6;则经计算可得,所述税费计算规则1和税费计算规则2的复杂度的平均值A2=(1.4+1.6)/2=1.5,即所述业务数据的税费计算复杂度为1.5。
步骤108:若所述业务数据的税费计算复杂度超出预设复杂度阈值,则将所述业务数据及所述至少一条税费计算规则分发至分布式计算集群中的计算节点进行税费计算,获得税费计算结果。
本说明书提供的一个实施例中,所述分布式计算集群包括Map-Reduce集群;
所述Map-Reduce集群中的计算节点包括:Mapper节点、Reducer节点以及Detector节点;
相应的,所述在所述分布式计算集群中的计算节点进行税费计算,获得税费计算结果具体可通过以下子步骤实现:
将所述业务数据、所述业务数据对应的至少一条税费计算规则分发至所述Map-Reduce集群中的所述Mapper节点,其中,所述至少一条税费计算规则中包含多个税费计算脚本;
通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及所述业务数据对应的税费计算规则中包含的多个税费计算脚本分发至所述Reducer节点;
通过所述Reducer节点基于所述多个税费计算脚本对所述业务数据进行税费计算,并将税费计算结果发送至Detector节点;
通过所述Detector节点对所述税费计算结果进行汇总并输出。
具体实施时,税费计算服务器接收到税费计算请求后,在所述税费计算请求中携带的业务数据的税费计算复杂度超出预设复杂度阈值,则由Map-Reduce集群中的Master节点将所述业务数据、所述业务数据对应的至少一条税费计算规则分发至Mapper节点进行数据分类。
本说明书提供的一个实施例中,所述通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及分类后所述业务数据对应的税费计算规则中包含的多个税费计算脚本分发至所述Reducer节点具体可通过以下步骤实现:
根据由所述业务数据、所述业务数据对应的至少一条税费计算规则以及所述税费计算规则中包含的多个税费计算脚本组成的数据集的分片数与Reducer节点数量之间的映射关系,确定所述数据集的分片数;
根据所述数据集的分片数,对所述数据集进行分片处理,生成所述数据集的分片数据;
根据所述分片数据中的税费计算规则与Reducer节点之间的分配映射关系,确定各分片数据对应的Reducer节点;
将所述数据集的分片数据分配到对应的Reducer节点,以使所述Reducer节点对接收到的分片数据进行税费计算。
具体的,假设Map-Reduce集群分布有5个Reducer节点,分别为节点R1、节点R2、节点R3、节点R4、节点R5,则根据由所述业务数据、所述业务数据对应的至少一条税费计算规则以及所述税费计算规则中包含的多个税费计算脚本组成的数据集的分片数与Reducer节点数量之间的映射关系,确定所述数据集的分片数可以为5个或少于5个分片;
Mapper节点按照税费计算规则对所述业务数据进行分类,仍以企业向税费计算服务器发起税费计算请求,且所述企业的经营范围涉及销售为例,该企业当月营业额为1000元,业务类型为自营收入,如图2所示,为所述营业额数据匹配税费计算规则后,将所述营业额数据及所述税费计算规则分发至Map-Reduce计算集群中的计算节点进行税费计算,若与所述营业额相匹配的税费计算规则为一条,且该条税费计算规则中包含的一个税种的税费计算公式为Amount*0.25,则根据上述公式进行税费计算计可。
具体实施时,若该企业当月营业额为1000元,业务类型为自营收入,则该企业当月应缴纳税费所涉及的税种包括增值税、城建税、教育费附加税以及地方教育附加税,与所述业务数据匹配的税费计算规则为税费计算规则1和税费计算规则2,则Mapper节点可将所述数据集分为2个分片F1和F2,F1中的分片数据即为税费计算规则1、与税费计算规则1对应的业务数据以及税费计算规则1中包含的税费计算脚本,F2中的分片数据即为税费计算规则2、与税费计算规则2对应的业务数据以及税费计算规则2中包含的税费计算脚本;
假设Map-Reduce集群中的5个Reducer节点,分别为节点R1、节点R2、节点R3、节点R4、节点R5,这5个节点与税费计算规则1、税费计算规则2、税费计算规则3、税费计算规则4、税费计算规则5一一对应,则根据上述关系可确定F1、F2对应的Reducer节点分别为节点R1和节点R2,确定各分片对应的Reducer节点后,将所述分片中的分片数据分配到对应的Reducer节点进行税费计算即可。
本说明书提供的一个实施例中,所述通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及分类后所述业务数据对应的税费计算规则中包含的多个税费计算脚本分发至所述Reducer节点具体可通过以下步骤实现:
响应于接收到任务分配节点分配的映射任务,从Mapper节点指定的存储位置读取映射任务的输入数据,所述输入数据包括所述业务数据、所述业务数据对应的至少一条税费计算规则以及所述税费计算规则中包含的多个税费计算脚本;
调用映射函数按照所述至少一条税费计算规则对所述业务数据进行分片并产生映射函数的输出;
通过对映射函数的输出做分割形成Mapper节点的输出结果。
具体的,Mapper节点接收到Master节点分配的映射任务后,读取映射任务中的输入数据,调用映射函数对所述业务数据进行分类,对分类后的数据做分割,按照预设规则对分割后的数据进行排序,根据排序顺序将所述数据发送至Reducer节点进行税费计算即可。实际应用中,所述预设规则可以为数据的税费计算复杂度。
本说明书提供的一个实施例中,根据所述至少一条税费计算规则计算所述业务数据的税费计算复杂度之后,在所述业务数据的税费计算复杂度超出预设计算复杂度阈值的情况下,并且在所述则将所述业务数据及所述至少一条税费计算规则分发至分布式计算集群中的计算节点进行税费计算,还包括:
获取所述至少一条税费计算规则包含的多个税费计算脚本的标识信息;
相应的,所述将所述业务数据及所述至少一条税费计算规则分发至分布式计算集群中的计算节点进行税费计算包括:
将所述业务数据及所述至少一条税费计算规则中包含的多个税费计算脚本的标识信息分发至所述Map-Reduce集群中的所述Mapper节点;
通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及所述业务数据对应的税费计算规则中包含的多个税费计算脚本的标识信息分发至所述Reducer节点;
通过所述Reducer节点基于所述多个税费计算脚本的标识信息获取对应的多个税费计算脚本,根据所述多个税费计算脚本对所述业务数据进行税费计算,得到多个税费计算结果,并将所述多个税费计算结果发送至Detector节点;
通过所述Detector节点对所述多个税费计算结果进行汇总并输出。
具体的,与前述实施例相比,本实施例在数据传输过程中的变化在于将传输计算脚本变为传输计算脚本标识信息,其他传输内容与具体的实现过程与前述实施例一致,在此不再赘述。
通过将税费计算规则中包含的多个计算脚本信息转化为计算脚本标识信息,在数据分发过程中,不再分发计算脚本,而只分发计算脚本标识信息,减小了数据存储空间,有利于提高数据传输速率。
此外,Detector节点对所述多个税费计算结果进行汇总并输出即对所述多个税费计算结果进行求和运算,得到目标税费计算结果并输出。
仍以企业向税费计算服务器发起税费计算请求,且所述企业的经营范围涉及销售为例,该企业当月营业额为1000元,业务类型为自营收入,该企业当月应缴纳税费所涉及的税种包括增值税、城建税、教育费附加税以及地方教育附加税,与所述业务数据匹配的税费计算规则为税费计算规则1和税费计算规则2,则Mapper节点根据税费计算规则将数据集分为F1、F2两个分片,其对应的Reducer节点分别为节点R1和节点R2,则F1、F2中的分片数据分配到对应的节点R1和节点R2进行税费计算,并将税费计算结果发送至Detector节点进行汇总。
假设节点R1输出的数据为:
1)增值税,当月营业总额/(1+3%)*3%=10000元/(1+3%)*3%=291.26元
2)城建税,当月所交增值税额*7%=291.26元*7%=20.39元
假设节点R2输出的数据为:
1)教育费附加税,当月所交增值税额*3%=291.26元*3%=8.74元
2)地方教育附加税,当月所交增值税额*1%=291.26元*1%=2.91元
Detector节点接收到节点R1和节点R2输出的数据后对所述数据进行汇总,即对上述数据进行求和运算,运算结果为323.3元,即目标税费计算结果为323.3元,将所述运算结果输出即本次税费计算完成。
具体实施时,以图2所示的一种基于分布式的税费计算方法的示意图为例,对基于分布式的税费计算方法进行进一步的描述。
实际应用中,企业M向税费计算服务器发送税费计算请求,假设税费计算请求中携带的业务数据所述的业务类型分别为自营收入、外送收入、国际业务收入以及其他收入,即税费计算请求中携带的数据为:自营收入1000元、外送收入500元、国际业务收入2000元、其他收入5000元;税费计算服务器根据所述业务类型为所述业务数据确定与其匹配的税费计算规则,如图2所示,匹配结果为:与自营收入匹配的税费计算规则1为“Type=self”;与外送收入匹配的税费计算规则2为“Type=out”;与国际业务收入匹配的税费计算规则3为“Type=international”;与其他收入匹配的税费计算规则4为“other Type=other”。
确定与业务数据匹配的税费计算规则后,根据所述税费计算规则确定业务数据的税费计算复杂度,具体可参见上述实施例中所述的复杂度计算方法及计算过程,在此不再赘述。假设业务数据的税费计算复杂度均大于预设复杂度阈值,则将所述业务数据及与其对应的税费计算规则分发至Map-Reduce集群中的计算节点进行税费计算;
具体的,将所述业务数据、所述业务数据对应的至少一条税费计算规则分发至所述Map-Reduce集群中的所述Mapper节点,其中,所述至少一条税费计算规则中包含多个税费计算脚本;
通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及所述业务数据对应的税费计算规则中包含的多个税费计算脚本分发至所述Reducer节点;
通过所述Reducer节点基于所述多个税费计算脚本对所述业务数据进行税费计算,并将税费计算结果发送至Detector节点;
具体实施时,假设Mapper节点将数据集分为4个分片P1、P1、P3和P4,其中P1包含的分片数据为自营收入1000元,税费计算规则1为“Type=self”;P2包含的分片数据为外送收入500元,税费计算规则2为“Type=out”;P3包含的分片数据为国际业务收入2000元、税费计算规则3为“Type=international”;P4中包含的分片数据为其他收入5000元,税费计算规则4为“other Type=other”。
分片完成后将P1、P1、P3和P4中的分片数据分别分发至Reducer节点中的R1节点、R2节点、R3节点和R4节点;假设税费计算规则1中包含的税种的税费计算公式为税值N1=Amount*0.25;税费计算规则2中包含的税种的税费计算公式为税值N2=Amount*0.2;税费计算规则3中包含的税种的税费计算公式为税值N3=Amount/(1+0.06)*0.06;税费计算规则4中包含的税种的税费计算公式为税值N4=Amount*0.06;R1节点、R2节点、R3节点和R4节点根据业务数据及税费计算规则进行计算并输出计算结果,即R1节点的输出结果为1000*0.25=250;R2节点的输出结果为:500*0.2=100;R3节点的输出结果为:2000/(1+0.06)*0.06=113.2;R4节点的输出结果为:5000*0.06=300。
Reducer节点计算完成后将税费计算结果发送至Detector节点,Detector节点接收到Reducer输出的数据后对所述数据进行汇总,即对上述数据进行求和运算,运算结果为763.2元,即目标税费计算结果为763.2元,将所述运算结果输出即本次税费计算完成。
综上所述,本申请提供的基于分布式的税费计算方法,通过确定业务数据的业务类型,从而为其匹配对应的税费计算规则,并在业务数据的税费计算复杂度较高的情况下,利用分布式计算集群中的计算节点进行税费计算,基于分布式计算集群的高可用性和高并发性,使得所述基于分布式的税费计算方法能够满足不同场景、不同难度的税费计算,同时能够保证税费计算结果的准确性以及高效性。
图3示出了本实施例提供的应用于实际场景的基于分布式的税费计算方法的流程图,包括步骤302至步骤318。
步骤302:接收税费计算请求。
具体的,所述税费计算请求中携带有业务数据及所述业务数据所属的业务类型。
实际应用中,所述业务数据即需要进行税费计算的涉税数据,若某企业M向税费计算服务器发送税费计算请求,则所述税费计算请求中携带的业务数据所述的业务类型可以包括自营收入、外送收入、国际业务收入以及其他收入,具体如图2所示。
步骤304:确定所述业务数据匹配的至少一条税费计算规则。
具体实施时,假设企业M发起的税费计算请求中携带的业务数据为:当月营业额1000元,业务类型为自营收入,由于所述企业的经营范围涉及销售,则所述企业每月应缴纳税费所涉及税种包括增值税、城建税、教育费附加税以及地方教育附加税,假设规则匹配路由根据业务数据配置的路由脚本为“税费计算规则1:Type=self,税费计算规则1中包含的税种为:增值税、城建税;税费计算规则2:Type=self,税费计算规则2中包含的税种为增值税、教育费附加税以及地方教育附加税;税费计算规则3:Type=out,税费计算规则3中包含的税种为增值税、城建税和教育费附加税”,则将税费计算请求中携带的业务数据所属的业务类型与路由脚本中包含的业务类型进行比较可得,与所述业务数据匹配的税费计算规则为税费计算规则1和税费计算规则2。
步骤306:根据所述至少一条税费计算规则计算所述业务数据的税费计算复杂度。
具体的,步骤304中确定与所述业务数据匹配的税费计算规则为税费计算规则1和税费计算规则2,则可根据所述税费计算规则1和税费计算规则2中包含的不同税种对应的不同税费计算公式计算所述税费计算规则1和税费计算规则2的复杂度,并根据所述税费计算规则1和税费计算规则2的复杂度确定所述业务数据的税费计算复杂度。
本实施例中的所述税费计算规则1和税费计算规则2的复杂度的计算方法可参见上述实施例,在此不再赘述。计算结果为税费计算规则1的复杂度为1.4;税费计算规则2的复杂度为1.6;则经计算可得,所述税费计算规则1和税费计算规则2的复杂度的平均值为1.5,即所述业务数据的税费计算复杂度为1.5。
步骤308:判断所述业务数据的税费计算复杂度是否超出预设复杂度阈值,若是,则执行步骤310;若否,则执行步骤312。
若所述预设复杂度阈值为1,则所述业务数据的税费计算复杂度超出所述预设复杂度阈值,则执行步骤310即可。
步骤310:将所述业务数据、所述业务数据对应的至少一条税费计算规则分发至所述Map-Reduce集群中的所述Mapper节点。
具体实施时,所述业务数据、所述业务数据对应的至少一条税费计算规则即:当月营业额1000元,业务类型为自营收入,税费计算规则1:Type=self,税费计算规则1中包含的税种为:增值税、城建税;税费计算规则2:Type=self,税费计算规则2中包含的税种为增值税、教育费附加税以及地方教育附加税。
步骤312:基于所述业务数据及所述业务数据对应的至少一条税费计算规则进行税费计算,得到目标税费计算结果并输出。
本说明书提供的一个实施例中,若所述预设复杂度阈值为2,则所述业务数据的税费计算复杂度未超出所述预设复杂度阈值,则在本地进行税费计算即可。
步骤314:通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及所述业务数据对应的税费计算规则中包含的多个税费计算脚本分发至所述Reducer节点。
Mapper节点根据税费计算规则对业务数据进行分片,由于上述步骤确定的与所述业务数据匹配的税费计算规则为税费计算规则1和税费计算规则2,则可将所述业务数据分为2个分片F1和F2,F1中的分片数据即为税费计算规则1、与税费计算规则1对应的业务数据以及税费计算规则1中包含的税费计算脚本,F2中的分片数据即为税费计算规则2、与税费计算规则2对应的业务数据以及税费计算规则2中包含的税费计算脚本;将业务数据分片完成后将分片数据分发至对应的Reducer节点进行税费计算。
步骤316:通过所述Reducer节点基于所述多个税费计算脚本对所述业务数据进行税费计算,并将税费计算结果发送至Detector节点。
具体实施时,节点R1输出的数据为:
1)增值税,当月营业总额/(1+3%)*3%=10000元/(1+3%)*3%=291.26元
2)城建税,当月所交增值税额*7%=291.26元*7%=20.39元
节点R2输出的数据为:
1)教育费附加税,当月所交增值税额*3%=291.26元*3%=8.74元
2)地方教育附加税,当月所交增值税额*1%=291.26元*1%=2.91元
步骤318:通过所述Detector节点对所述多个税费计算结果进行求和运算,得到目标税费计算结果并输出。
Detector节点接收到节点R1和节点R2输出的数据后对所述数据进行汇总,即对上述数据进行求和运算,运算结果为323.3元,即目标税费计算结果为323.3元,将所述运算结果输出即本次税费计算完成。
本说明书提供的一个实施例中,通过为业务数据匹配税费计算规则,并将税费计算复杂度较高的业务数据分发至Map-Reduce集群中的计算节点进行税费计算,有利于提高税费计算的准确性和高效性。
本申请提供的一种基于分布式的税费计算装置实施例如下:
在上述的实施例中,提供了一种基于分布式的税费计算方法,与之相对应的,本申请还提供了一种基于分布式的税费计算装置,下面结合附图进行说明。
参见附图4,其示出了本申请提供的一种基于分布式的税费计算装置实施例的示意图。
由于装置实施例基本相似于方法实施例,所以描述的比较简单,相关的部分请参见上述提供的方法实施例的对应说明即可。下面描述的装置实施例仅仅是示意性的。
本申请提供一种基于分布式的税费计算装置,包括:
请求接收模块402,被配置为接收税费计算请求,所述税费计算请求中携带有业务数据及所述业务数据所属的业务类型;
规则确定模块404,被配置为基于所述业务类型确定所述业务数据匹配的至少一条税费计算规则;
复杂度计算模块406,被配置为根据所述至少一条税费计算规则计算所述业务数据的税费计算复杂度;
若所述业务数据的税费计算复杂度超出预设复杂度阈值,则运行税费计算模块408;
所述税费计算模块408,被配置为则将所述业务数据及所述至少一条税费计算规则分发至分布式计算集群中的计算节点进行税费计算,获得税费计算结果。
可选地,所述分布式计算集群包括Map-Reduce集群;
所述Map-Reduce集群中的计算节点包括:Mapper节点、Reducer节点以及Detector节点;
相应的,所述税费计算模块包括:
第一数据分发子模块,被配置为将所述业务数据、所述业务数据对应的至少一条税费计算规则分发至所述Map-Reduce集群中的所述Mapper节点,其中,所述至少一条税费计算规则中包含多个税费计算脚本;
第二数据分发子模块,被配置为通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及所述业务数据对应的税费计算规则中包含的多个税费计算脚本分发至所述Reducer节点;
第一税费计算结果发送子模块,被配置为通过所述Reducer节点基于所述多个税费计算脚本对所述业务数据进行税费计算,并将税费计算结果发送至Detector节点;
第一数据输出子模块,被配置为通过所述Detector节点对所述税费计算结果进行汇总并输出。
可选地,所述数据分发子模块,还被配置为:
响应于接收到任务分配节点分配的映射任务,从Mapper节点指定的存储位置读取映射任务的输入数据,所述输入数据包括所述业务数据、所述业务数据对应的至少一条税费计算规则以及所述税费计算规则中包含的多个税费计算脚本;
调用映射函数按照所述至少一条税费计算规则对所述业务数据进行分片并产生映射函数的输出;
通过对映射函数的输出做分割形成Mapper节点的输出结果。
可选地,所述数据分发子模块,还被配置为:
根据由所述业务数据、所述业务数据对应的至少一条税费计算规则以及所述税费计算规则中包含的多个税费计算脚本组成的数据集的分片数与Reducer节点数量之间的映射关系,确定所述数据集的分片数;
根据所述数据集的分片数,对所述数据集进行分片处理,生成所述数据集的分片数据;
根据所述分片数据中的税费计算规则与Reducer节点之间的分配映射关系,确定各分片数据对应的Reducer节点;
将所述数据集的分片数据分配到对应的Reducer节点,以使所述Reducer节点对接收到的分片数据进行税费计算。
可选地,所述基于分布式的税费计算装置,还包括:
标识信息获取模块,被配置为获取所述至少一条税费计算规则包含的多个税费计算脚本的标识信息;
相应的,所述税费计算模块包括:
第三数据分发子模块,被配置为将所述业务数据及所述至少一条税费计算规则中包含的多个税费计算脚本的标识信息分发至所述Map-Reduce集群中的所述Mapper节点;
第四数据分发子模块,被配置为通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及所述业务数据对应的税费计算规则中包含的多个税费计算脚本的标识分发至所述Reducer节点;
第二税费计算结果发送子模块,被配置为通过所述Reducer节点基于所述多个税费计算脚本的标识获取对应的多个税费计算脚本,根据所述多个税费计算脚本对所述业务数据进行税费计算,得到多个税费计算结果,并将所述多个税费计算结果发送至Detector节点;
第二数据输出子模块,被配置为通过所述Detector节点对所述多个税费计算结果进行汇总并输出。
本说明书提供的一个实施例中,通过为业务数据匹配税费计算规则,并将税费计算复杂度较高的业务数据分发至Map-Reduce集群中的计算节点进行税费计算,有利于提高税费计算的准确性和高效性。
本申请提供的一种电子设备实施例如下:
图5示出了根据本说明书一实施例的电子设备500的结构框图。该电子设备500的部件包括但不限于存储器510和处理器520。处理器520与存储器510通过总线530相连接,数据库550用于保存数据。
电子设备500还包括接入设备540,接入设备540使得电子设备500能够经由一个或多个网络560通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备540可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,电子设备500的上述部件以及图5中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图5所示的电子设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
电子设备500可以是任何类型的静止或移动电子设备,包括移动计算机或移动电子设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的电子设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止电子设备。电子设备500还可以是移动式或静止式的服务器。
其中,处理器520用于执行如下计算机可执行指令:
接收税费计算请求,所述税费计算请求中携带有业务数据及所述业务数据所属的业务类型;
基于所述业务类型确定所述业务数据匹配的至少一条税费计算规则;
根据所述至少一条税费计算规则计算所述业务数据的税费计算复杂度;
若所述业务数据的税费计算复杂度超出预设复杂度阈值,则将所述业务数据及所述至少一条税费计算规则分发至分布式计算集群中的计算节点进行税费计算,获得税费计算结果。
可选地,所述分布式计算集群包括Map-Reduce集群;
所述Map-Reduce集群中的计算节点包括:Mapper节点、Reducer节点以及Detector节点;
相应的,所述在所述分布式计算集群中的计算节点进行税费计算,获得税费计算结果包括:
将所述业务数据、所述业务数据对应的至少一条税费计算规则分发至所述Map-Reduce集群中的所述Mapper节点,其中,所述至少一条税费计算规则中包含多个税费计算脚本;
通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及所述业务数据对应的税费计算规则中包含的多个税费计算脚本分发至所述Reducer节点;
通过所述Reducer节点基于所述多个税费计算脚本对所述业务数据进行税费计算,并将税费计算结果发送至Detector节点;
通过所述Detector节点对所述税费计算结果进行汇总并输出。
可选地,所述通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及分类后所述业务数据对应的税费计算规则中包含的多个税费计算脚本分发至所述Reducer节点包括:
响应于接收到任务分配节点分配的映射任务,从Mapper节点指定的存储位置读取映射任务的输入数据,所述输入数据包括所述业务数据、所述业务数据对应的至少一条税费计算规则以及所述税费计算规则中包含的多个税费计算脚本;
调用映射函数按照所述至少一条税费计算规则对所述业务数据进行分片并产生映射函数的输出;
通过对映射函数的输出做分割形成Mapper节点的输出结果。
可选地,所述通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及分类后所述业务数据对应的税费计算规则中包含的多个税费计算脚本分发至所述Reducer节点包括:
根据由所述业务数据、所述业务数据对应的至少一条税费计算规则以及所述税费计算规则中包含的多个税费计算脚本组成的数据集的分片数与Reducer节点数量之间的映射关系,确定所述数据集的分片数;
根据所述数据集的分片数,对所述数据集进行分片处理,生成所述数据集的分片数据;
根据所述分片数据中的税费计算规则与Reducer节点之间的分配映射关系,确定各分片数据对应的Reducer节点;
将所述数据集的分片数据分配到对应的Reducer节点,以使所述Reducer节点对接收到的分片数据进行税费计算。
可选地,所述根据所述至少一条税费计算规则计算所述业务数据的税费计算复杂度之后,在所述业务数据的税费计算复杂度超出预设计算复杂度阈值的情况下,并且在所述则将所述业务数据及所述至少一条税费计算规则分发至分布式计算集群中的计算节点进行税费计算步骤执行之前,还包括:
获取所述至少一条税费计算规则包含的多个税费计算脚本的标识信息;
相应的,所述将所述业务数据及所述至少一条税费计算规则分发至分布式计算集群中的计算节点进行税费计算包括:
将所述业务数据及所述至少一条税费计算规则中包含的多个税费计算脚本的标识信息分发至所述Map-Reduce集群中的所述Mapper节点;
通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及所述业务数据对应的税费计算规则中包含的多个税费计算脚本的标识分发至所述Reducer节点;
通过所述Reducer节点基于所述多个税费计算脚本的标识获取对应的多个税费计算脚本,根据所述多个税费计算脚本对所述业务数据进行税费计算,得到多个税费计算结果,并将所述多个税费计算结果发送至Detector节点;
通过所述Detector节点对所述多个税费计算结果进行汇总并输出。
可选地,所述通过所述Detector节点对所述多个税费计算结果进行汇总并输出包括:
通过所述Detector节点对所述多个税费计算结果进行求和运算,得到目标税费计算结果并输出。
可选地,所述根据所述至少一条税费计算规则计算所述业务数据的税费计算复杂度包括:获取所述至少一条税费计算规则的复杂度;
计算所述至少一条税费计算规则的复杂度的平均值作为所述业务数据的税费计算复杂度。
可选地,所述获取所述至少一条税费计算规则的复杂度包括:
获取所述至少一条税费计算规则中包含的多个税费计算脚本的复杂度;
利用所述至少一条税费计算规则中包含的多个税费计算脚本分别对应的权重,对所述多个税费计算脚本分别对应的复杂度进行加权计算,得到所述至少一条税费计算规则的复杂度。
可选地,所述基于所述业务类型确定所述业务数据匹配的至少一条税费计算规则包括:
获取规则匹配路由根据业务数据配置的路由脚本,所述路由脚本中包含业务数据所属的业务类型;
判断所述税费计算请求中携带的业务数据所属的业务类型与所述路由脚本中包含的业务类型是否一致,若一致,则匹配成功。
上述为本实施例的一种电子设备的示意性方案。需要说明的是,该电子设备的技术方案与上述的基于分布式的税费计算方法的技术方案属于同一构思,电子设备的技术方案未详细描述的细节内容,均可以参见上述基于分布式的税费计算方法的技术方案的描述。
本申请提供的一种计算机可读存储介质实施例如下:
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时用于:
接收税费计算请求,所述税费计算请求中携带有业务数据及所述业务数据所属的业务类型;
基于所述业务类型确定所述业务数据匹配的至少一条税费计算规则;
根据所述至少一条税费计算规则计算所述业务数据的税费计算复杂度;
若所述业务数据的税费计算复杂度超出预设复杂度阈值,则将所述业务数据及所述至少一条税费计算规则分发至分布式计算集群中的计算节点进行税费计算,获得税费计算结果。
可选地,所述分布式计算集群包括Map-Reduce集群;
所述Map-Reduce集群中的计算节点包括:Mapper节点、Reducer节点以及Detector节点;
相应的,所述在所述分布式计算集群中的计算节点进行税费计算,获得税费计算结果包括:
将所述业务数据、所述业务数据对应的至少一条税费计算规则分发至所述Map-Reduce集群中的所述Mapper节点,其中,所述至少一条税费计算规则中包含多个税费计算脚本;
通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及所述业务数据对应的税费计算规则中包含的多个税费计算脚本分发至所述Reducer节点;
通过所述Reducer节点基于所述多个税费计算脚本对所述业务数据进行税费计算,并将税费计算结果发送至Detector节点;
通过所述Detector节点对所述税费计算结果进行汇总并输出。
可选地,所述通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及分类后所述业务数据对应的税费计算规则中包含的多个税费计算脚本分发至所述Reducer节点包括:
响应于接收到任务分配节点分配的映射任务,从Mapper节点指定的存储位置读取映射任务的输入数据,所述输入数据包括所述业务数据、所述业务数据对应的至少一条税费计算规则以及所述税费计算规则中包含的多个税费计算脚本;
调用映射函数按照所述至少一条税费计算规则对所述业务数据进行分片并产生映射函数的输出;
通过对映射函数的输出做分割形成Mapper节点的输出结果。
可选地,所述通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及分类后所述业务数据对应的税费计算规则中包含的多个税费计算脚本分发至所述Reducer节点包括:
根据由所述业务数据、所述业务数据对应的至少一条税费计算规则以及所述税费计算规则中包含的多个税费计算脚本组成的数据集的分片数与Reducer节点数量之间的映射关系,确定所述数据集的分片数;
根据所述数据集的分片数,对所述数据集进行分片处理,生成所述数据集的分片数据;
根据所述分片数据中的税费计算规则与Reducer节点之间的分配映射关系,确定各分片数据对应的Reducer节点;
将所述数据集的分片数据分配到对应的Reducer节点,以使所述Reducer节点对接收到的分片数据进行税费计算。
可选地,所述根据所述至少一条税费计算规则计算所述业务数据的税费计算复杂度之后,在所述业务数据的税费计算复杂度超出预设计算复杂度阈值的情况下,并且在所述则将所述业务数据及所述至少一条税费计算规则分发至分布式计算集群中的计算节点进行税费计算步骤执行之前,还包括:
获取所述至少一条税费计算规则包含的多个税费计算脚本的标识信息;
相应的,所述将所述业务数据及所述至少一条税费计算规则分发至分布式计算集群中的计算节点进行税费计算包括:
将所述业务数据及所述至少一条税费计算规则中包含的多个税费计算脚本的标识信息分发至所述Map-Reduce集群中的所述Mapper节点;
通过所述Mapper节点按照所述税费计算规则对所述业务数据进行分类,并将分类后的所述业务数据以及所述业务数据对应的税费计算规则中包含的多个税费计算脚本的标识分发至所述Reducer节点;
通过所述Reducer节点基于所述多个税费计算脚本的标识获取对应的多个税费计算脚本,根据所述多个税费计算脚本对所述业务数据进行税费计算,得到多个税费计算结果,并将所述多个税费计算结果发送至Detector节点;
通过所述Detector节点对所述多个税费计算结果进行汇总并输出。
可选地,所述通过所述Detector节点对所述多个税费计算结果进行汇总并输出包括:
通过所述Detector节点对所述多个税费计算结果进行求和运算,得到目标税费计算结果并输出。
可选地,所述根据所述至少一条税费计算规则计算所述业务数据的税费计算复杂度包括:
获取所述至少一条税费计算规则的复杂度;
计算所述至少一条税费计算规则的复杂度的平均值作为所述业务数据的税费计算复杂度。
可选地,所述获取所述至少一条税费计算规则的复杂度包括:
获取所述至少一条税费计算规则中包含的多个税费计算脚本的复杂度;
利用所述至少一条税费计算规则中包含的多个税费计算脚本分别对应的权重,对所述多个税费计算脚本分别对应的复杂度进行加权计算,得到所述至少一条税费计算规则的复杂度。
可选地,所述基于所述业务类型确定所述业务数据匹配的至少一条税费计算规则包括:
获取规则匹配路由根据业务数据配置的路由脚本,所述路由脚本中包含业务数据所属的业务类型;
判断所述税费计算请求中携带的业务数据所属的业务类型与所述路由脚本中包含的业务类型是否一致,若一致,则匹配成功。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的基于分布式的税费计算方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述基于分布式的税费计算方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。