设为首页 | 收藏本站 | 关于我们 | 广告服务
 
 
当前位置:首页 > 中国金融电脑 > 2016年12月
基于大数据技术的多平台协同交易数据查询系统的构建

  中国农业银行软件开发中心副总经理 王怡

文  |   中国农业银行软件开发中心 王怡 王昭 梁生吉

  近年来,随着银行业务的发展,业务交易数据的规模和种类也在持续、快速增加。在业务交易数据管理上,目前业内多采用按应用分散管理或者按类别小规模集中的方式,数据可访问性和易维护性方面存在不足。同时,数据分散管理也带来了存储随意、管理无序、使用困难等问题。此外,银行在长期业务发展中,积累了海量的历史交易数据,这些数据通常不再发生变化,被访问的频度也显著降低,为满足“保存5年甚至更长时间”的监管要求,商业银行大都采用关系型数据库或数据仓库,通过分表、分区等解决方案实现对上述历史数据的长期存储,硬件则采用小型机及SAN存储,数据管理成本高。

  Hadoop技术起源于Google公司发表的分布式存储及计算方面的论文,通过分布式架构实现海量数据的存储与处理,后被Apache软件基金会采纳,成为开源软件。以Hadoop为代表的大数据技术最早应用于国外互联网公司,后逐渐被国内互联网公司引入用于数据分析、内容搜索等领域。

  一、多平台协同交易数据查询系统总体架构

  2013年初,为了解决海量历史交易明细数据的管理和使用问题,农业银行通过对大数据核心技术进行深入分析,决定采用分布式大数据框架Hadoop及NoSQL数据库HBase作为历史交易数据的存储容器。一方面,依据业务数据特点对数据存储结构进行优化,并对HBase数据访问逻辑进行抽象,提炼出HAO数据访问模型,简化数据访问过程,提供高并发的数据访问服务,缓解了过去由于数据分散导致的存储随意、管理无序、使用困难等问题。另一方面,为了降低数据出入库的批量操作时间,数据导入采用数据仓库工具Hive进行数据清洗和处理,提供了多层次的数据清洗策略,满足个性化数据清洗的要求,并对外提供数据查询、分析服务。

  系统整体架构包括用户展现层、服务层、功能组件层和数据层。

  1.用户展现层

  用户展现层包括柜面、网银、自助设备等接入渠道端,通过提交联机查询指令查询业务交易数据,根据交易规范组装输入数据,访问数据查询联机服务,并解析查询结果进行展示。

  2.服务层

  服务层包括系统管理服务、数据查询联机服务、数据批量处理服务、数据分析服务。系统管理服务供系统管理端访问实现系统管理;数据查询联机服务提供业务交易数据的统一查询服务,供渠道端调用;数据批量处理服务完成明细数据的导入,供调度系统统一调度执行;数据分析服务提供对明细数据的检索、分析等服务,供有权机关查询使用。

  3.功能组件层

  功能组件层是服务层的基础,提供逻辑功能组件,实现服务层的功能逻辑。数据批量导入导出组件实现数据批量导入、导出功能,供数据批量处理服务调用;数据联机访问组件实现联机访问的输入数据解析、逻辑处理、输出数据组装等功能;交易数据查询组件实现业务交易数据的查询功能,负责查询业务系统中的当期明细以及HBase数据库中的历史明细数据;数据分析组件基于分析条件进行数据检索、分析,并提供分析结果;系统管理和平台管理组件实现系统交易日志管理、交易量统计管理、HBase参数管理等功能。

  4.数据层

  数据层包括活期交易明细、定期交易明细、理财交易明细、贷款交易明细和基金交易明细等业务交易数据以及系统管理所需的交易量等数据。交易数据保存在HBase数据库中,并根据数据特点进行Region划分,以保障数据写入速度及联机访问效率。

  系统从服务上分为数据联机访问服务和数据批量导入服务。联机访问服务支持柜面、网银、自助设备等多种渠道接入,各渠道通过统一查询服务(HWS)方式接入访问。

  系统采用Hadoop集群进行数据管理,以NoSQL数据库HBase作为交易数据的存储容器,保存业务系统历史交易数据。历史交易数据通过数据交换平台传输到本系统,通过批处理服务(HBatch)每日批量执行数据导入。

  联机访问服务提供了统一的查询服务接口,覆盖交易系统(ABIS、BoEing等)中的当期交易数据以及本系统中的历史交易数据。HWS根据查询条件分别访问交易系统和Hadoop集群,汇总查询结果并排序。

  二、可配置的批量处理框架

  系统上线后,面临着各种类型的数据接入的需求,如果为每一种类型的数据都定制批量数据导入工具,一方面开发成本过高,重复开发量大,资源浪费严重;另一方面多次开发容易增加系统潜在的运行风险,增加运维管理的难度。为此农业银行设计了一套通用可配置的批量数据导入框架,面对新的数据接入需求,只需要编写一个配置文件,即可通过现有工具,完成批量数据导入任务。

  1.批量数据导入任务的配置文件模型

  根据经验,所有的批量数据导入任务,都可以按照该配置文件模型,转化成一个任务描述配置文件。上述以配置文件驱动的批量数据导入机制,在创建之初只需根据约定的规则,编写一个配置文件,就可完成一项新增批量数据导入的任务。在批量程序运行后,如需对批量处理流程进行修改,只需修改相应的配置文件,无需修改一行程序代码,大大增强了批量数据程序的通用性和扩展性。

  2.数据、操作分离的松耦合结构

  批量数据导入流程基本上是一个线性处理流程,中间划分了多个处理步骤。通过对处理步骤的分析,农业银行采取了将处理操作和处理数据分离的方式,将处理操作包装成固定操作类,进行通用优化。处理操作与处理数据的松散耦合符合软件工程的规律原则,不但提高了代码的复用率,而且核心处理代码经过长时间的使用和不断优化,健壮性和效率也得以不断提升。

  3.插件式的批处理操作扩展

  在基于配置文件驱动的批量数据导入模型中,批处理程序在配置文件中使用Java反射机制来动态调用执行任务的Java类。结合配置文件动态加载使用的机制,形成了一种插件式的任务处理机制。用户在编写配置文件时可根据不同的任务类型,设置对应的操作反射类。初始阶段,批处理程序为用户提供了几种基础的数据导入任务的处理类,同时,基于配置文件和Java反射的松散耦合机制,允许用户在必要的情况下,根据自己的需求,按照指定的流程,编写自己的扩展任务类。用户编写完毕、测试通过后,打包放置到指定的位置,就可以在配置文件中,调用自己的扩展操作类。

  4.性能良好的数据清洗插件

  系统进行批量数据导入的时候,由于数据来源多样,难免存在部分脏数据,因此系统设计了性能良好的数据清洗插件,提供多层次数据清洗策略,确保数据清洗稳定、高效、完备,同时提供了插件式的数据清洗框架,允许系统根据实际需求,适时调整清洗组件。

  三、通用联机访问接口

  系统针对已经接入的各应用数据类型,设计了通用的联机访问接口,并支持对未来接入多种应用数据类型的灵活扩展。

  1.HBase通用访问框架

  在系统中,业务数据存储在HBase中。为了实现业务逻辑与数据访问的分离,向业务层提供友好的数据访问接口,农业银行搭建了HBase通用访问框架,实现了HBase访问对象(HAO,HBaseAccessObject)。HAO通过对访问过程的抽象和HBaseNativeJavaAPI的封装,实现了对HBase的数据访问。

  应用逻辑通过HAO接口调用HAO的数据访问方法对输入输出进行了统一抽象,需要继承抽象类BasicHBaseInput和BasicHBaseOutput且实现其中的抽象方法。HAO首先对BasicHBaseInput进行解析,根据输入对象实现的RowKey定义生成查询范围(HBase中RowKey的范围)、根据输入对象实现的Filter定义生成查询条件(Filter过滤条件),然后将查询范围和查询条件组装成查询对象(HBaseScan),最后调用HBaseAPI访问数据并获得返回结果。对于HBase返回统一格式的数据(字符串数组List),HAO先根据分页条件实现分页逻辑,之后再根据输出对象实现的结果映射方法,将字符串列表拼装成相应的数据对象返回给应用逻辑。

  HAO通用访问框架将HBase的数据访问过程抽象成输入解析、查询范围生成、查询条件生成、查询对象组装、HBaseAPI调用、分页逻辑和输出结果映射等环节,且每个环节均可以通过配置文件灵活配置,基本适用于各种场景对HBase数据的访问。通过HAO接口输入输出的抽象实现了应用层同数据持久层的解耦,通过对HBaseAPI的封装实现了应用逻辑同HBase的隔离,方便了应用对HBase数据的访问。

  2.可灵活配置的RowKey生成规则

  KeyValue数据库中,Key起着至关重要的作用,它几乎决定了数据存储和数据访问的性能、效率。在HBase中,Key就是RowKey行主键,它是HBase用来检索记录的主键,且HBase中的数据也是按照RowKey的字典序存储的。通过对RowKey设计和使用方式的分析,我们提炼出了RowKey的生成规则,并实现了通过配置就可以灵活使用的方式。

  RowKey生成规则可以分为字段来源筛选、字段处理、排序和拼接三个环节,首先根据配置的筛选规则,从BasicHBaseInput中筛选出RowKey包含的字段列表,然后对各字段进行处理,最后根据配置的排序及拼接规则,将字段列表组装成相应的RowKey。字段处理环节中,包含校验、翻转、补齐和变换四种操作,每种操作均有默认实现,均可灵活配置。为了增强适应性和扩展性,校验和变换还支持自定义函数,通过这种方式可以灵活地为指定数据配置特殊的校验函数和变换函数。

  3.定制过滤器提高数据访问效率

  目前基于大数据技术的多平台协同交易数据查询系统存储了农业银行个人客户5年内超过1000亿条历史交易明细记录,随着业务的高速发展,业务交易数据还将大幅增长,海量数据存储于HBase中,Hbase上建立的是一种清晰的KeyValue对照关系,通过RowKey能很快进行查询定位,但不能像关系型数据库那样做复杂的关联查询,而在实际业务场景中,BoEing的个贷交易明细查询存在多种条件查询组合,如果按照RowKey进行查询,则数据返回客户端后再进行遍历找到符合条件的数据,这增加了服务端和客户端的数据传输量,降低了查询效率。为此,系统采用了其他解决方案,在配置文件中根据实际需求定制过滤器字段、过滤器类型、比较符和比较器等,针对RowKey和列值等进行复杂的过滤来获取符合查询条件的数据,以此提高数据访问效率。定制过滤器包含三个环节:普通过滤器构建、FilterList过滤器构建和分页过滤器构建。

  过滤器在服务端生效,通过谓词下推,确保被过滤的数据不会被传送到客户端,在降低服务端和客户端之间的数据传输量的同时,提高了渠道端应用系统的查询效率。系统使用的Filter技术能根据实际业务需求进行数据的前缀或定制过滤,使得查询支持复杂的业务逻辑,满足了更灵活的查询访问需求。

  基于大数据技术的多平台协同交易数据查询系统投产以来,已接入包括贷款、存款、贷记卡、基金、投资理财等业务在内的交易明细记录超过1200亿条,日查询交易笔数超1000万,交易平均响应时间86毫秒。每日数据下移的同步批量耗时仅15分钟,期间可提供7×24小时的不间断访问能力。随着业务和数据的不断集成,基于大数据技术的多平台协同交易数据查询系统已经成为农业银行向柜面、网银、自助终端、微信等多渠道提供一站式客户交易信息查询的重要系统。

 
过刊查询
2022年03月 2022年02月 2022年01月
2021年12月 2021年11月 2021年10月
2021年09月 2021年08月 2021年07月
2021年06月 2021年06月 2021年05月
查看所有过刊
本期精选
《中国金融电脑》2016年第12期目录
打造信息系统全球化服务支持体系
基于大数据技术的多平台协同交易数据查询..
新理念引领新核心,新核心打造新起点
光大银行私有云建设实践
华夏银行构建基于物联网的流程化动态IT资..
招商银行新一代分布式核心系统建设
 
企业简介 | 版权声明 | 免责声明 | 频道介绍 | 安全提示 | 法律顾问 | 网上投稿 | 客服电话 | RSS订阅
Copyright © 2005 Fcc.Com.Cn, All Rights Reserved. ,《中国金融电脑》杂志社版权所有
电话:010-51915111-805 传真:010-51915236,网络出版服务许可证(署)网出证(京)字第337号
京ICP备14024077号-1 京公安网备:11010802025321 技术支持:站多多