APP下载

基于Hadoop的渠道费用结算系统设计与实现

2018-11-03梁伟晟

现代计算机 2018年28期
关键词:计酬酬金引擎

梁伟晟

(中国移动通信集团广东有限公司,广州 510623)

0 引言

为了促进市场竞争和业务发展,运营商针对不同的业务制定相应的费用结算政策,渠道费用结算系统统计渠道代理商的业务办理情况,根据其不同业务办理量,匹配相应的政策规则计算出结算给渠道代理商的费用(酬金)。为了平衡业务发展和降低管理风险,运营商通常设计比较复杂的费用结算规则,针对不同的业务类别,设计不同的发放周期。渠道费用结算系统承担着酬金计算和支付的功能。酬金结算是渠道管理中的重要环节,需要一个灵活高效的系统提供支持。如何建立更高效的渠道费用结算支撑体系,加快渠道代理商的资金周转,提高渠道代理商的粘性,是亟需寻求突破的问题。在系统体系架构方面目前通常采用主机加中间件、Java程序、主流数据库Oracle的方式。由于系统需要采集超过十亿的原始业务数据并进行预处理,这些数据有的保存两、三年,有的则需要长期保留,在预处理过程中数据库主机的内存与CPU使用率和负荷较高,受限于传统数据库瓶颈,程序并发进程数目无法进一步提高。需要采用新的系统架构,提高结算数据预处理的性能,降低数据库的负荷,提高费用结算的效率。

1 系统设计

渠道费用结算系统实现对社会渠道酬金的计算。系统定期从周边系统采集业务办理及状态数据,对外围采集的数据进行预处理,包括数据清洗、数据转换等操作,然后根据酬金规则对预处理完数据进行费用结算,类似计费的批价流程,最后从酬金计算结果生成酬金报表。

图1 传统系统架构

Hadoop是Apache软件基金会开发和推出的用于海量数据存储和计算的分布式系统基础架构。Hadoop框架最核心的是:HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce为海量的数据提供了计算。用户需要将所处理的问题转化为MapReduce的模型,提供相应的Map函数以及Reduce函数即可并行处理海量数据。

为提高渠道费用结算的效率,对系统的数据采集、数据预处理和规则引擎进行架构改造。引入Hadoop框架,充分利用Hadoop的分布式存储和计算能力,实现弹性伸缩,提高酬金预处理的性能。同时利用内存数据库降低计酬规则引擎对传统数据库的负荷,提高出酬效率。

(1)数据采集

使用Sqoop方式替代Dblink采集数据,数据采集后直接入库到HDFS,业务办理及状态数据不再入库到传统数据库中。

(2)数据预处理

将周边系统采集的数据通过文本格式入库到HDFS,然后利用Hive对采集数据进行数据清洗及数据转换操作。完成预处理的数据直接入库到内存数据库中。基于MapReduce框架的分布式计算平台,完成酬金预处理数据抽取、转换、装载。

(3)计酬规则引擎改造

计酬规则引擎的数据源由传统数据库改为从内存数据库获取,引擎所应用的SQL语句针对内存数据库进行适配性改造。酬金规则从传统数据库同步到内存数据库。计酬规则引擎完成酬金计算后,将计酬结果入库到传统数据库中,供查询和报表展现。

图2 基于Hadoop系统架构

渠道费用结算系统采用“Hadoop+内存数据库+x86服务器+Oracle数据库+小型机”的架构模式,其技术架构由基础设施层、数据存储层、应用层和展示层组成。基础设施层提供基础的硬件资源,如CPU、内存、磁盘、网络传输。数据存储层的大数据平台从BOSS、BI等采集基础业务明细数据,存储到Hadoop分布式文件系统HDFS,酬金预处理后的数据放入内存数据库,酬金计算结果最后入库到Oracle数据库中。在应用层,基于MapReduce框架完成数据抽取、转换、装载等酬金预处理过程,然后采用现有酬金引擎对酬金预处理后的数据进行酬金计算,生成酬金计算结果。系统的技术架构如图3所示。

图3 系统技术架构

2 系统实现及效果

系统实现的关键部分包括数据采集Sqoop实现、源数据和酬金因子数据预处理改造和计酬引擎适配性改造。

(1)数据采集

系统从周边系统采集的业务办理明细数据要转换Hadoop存储的数据。从周边系统采集的数据是关系型数据库的结构化数据或者文件,这就涉及数据迁移和转换问题。Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将关系型数据库中的数据导入到Hadoop存储系统中,也可以将Hadoop的数据导入到关系型数据库中。使用Sqoop工具完成数据从Oracle/文件采集到Hive,同时也可以完成将计酬结果数据从Hive导出到Oracle。

(2)源数据和酬金因子数据预处理改造

采集到Hive中的数据表,按照分用户建表并按采集周期分区,存储按ORC格式保存,原来处理关系型数据库的采集预处理程序改为处理Hive存储数据的程序。参数配置表设计、中间表逻辑和采集快照表需按照Hive模型建立,采集预处理接口进行HiveSQL适配优化改造。Hive并不是传统的数据库,部分传统SQL语句需要依据MapReduce工作原理和设计思想进行开发。Insert、Update、Delete、Row_number函数等要按指定分区操作的方式修改。使用Join的时候小表排列在前面,放到MapJoin里面。设置block为128M来控制文件大小,通过合并方式减少import的小文件数。

(3)计酬引擎适配性改造

经过预处理的采集数据直接保存到内存数据库中,酬金规则数据也保存在内存数据库中,计酬规则引擎直接从内存数据库获取数据进行酬金结算,引擎所使用的SQL语句需针对内存数据库进行适配性改造。最终计酬结果是入库到传统数据库中,可以供前台查询和出具统计报表。

通过对渠道费用结算系统进行基于Hadoop的架构改造,酬金预处理清洗和转换时间由7天减少为3天,减少了60%。酬金预处理与酬金计算不再共用传统数据库,酬金预处理采用HDFS,酬金计算采用内存数据库。预处理过程中数据库主机的内存与CPU使用率和负荷降低到合理水平。当部分数据预处理完成时,规则引擎即可以提前对相应的规则启动多个酬金计算并发进程。数据预处理和计算过程可以并行执行,整体计算过程可以缩短到半天。

表1

酬金预处理采用Hadoop框架改造后,传统数据库原来所使用的高端存储可以大部分释放出来,改为使用低端存储,在降低成本的同时提高扩展性。

3 结语

本文给出了基于Hadoop的渠道费用结算系统的设计和实现,以此解决大量业务数据预处理和计算在传统主机数据库下的处理瓶颈和性能依赖。实际系统建设表明,架构改造后出酬时间缩短,出酬效率得到提高,在降低出酬过程中主机负荷的同时,减少了对小型机的依赖,扩展性和系统成本均优于原有的架构。

猜你喜欢

计酬酬金引擎
物业行业住宅类酬金制项目会计处理探讨——对比境外物业住宅酬金制处理
蓝谷: “涉蓝”新引擎
古稀抒抒怀
欲多则欢少
欲多则欢少
无形的引擎
基于Cocos2d引擎的PuzzleGame开发
“团队计酬”式传销的前世今生
浅析成本加酬金合同模式下发包方的成本管理问题
高职院校教学工作计酬模式初探