APP下载

分布式计算技术在交通一卡通清分管理系统中的应用研究

2018-04-18方秋水陈卫国何建兵

计算机应用与软件 2018年3期
关键词:分布式计算一卡通数据处理

方秋水 陈卫国 何建兵 徐 锋

(广东岭南通股份有限公司 广东 广州 510110)

0 引 言

自城市交通一卡通系统建设以来,经历了20多年的发展,承担着广大民众在公交、轮渡、地铁、轻轨、出租汽车等公共交通工具的电子支付服务功能,为人们日常生活、出行提供了便利环境。城市交通一卡通已经成为人们生活中快捷、便利的支付手段与途径,同时也积累了庞大的数据资源。以广东岭南通为例,旧有的清算系统已经运行了多年,存储了数百亿条历史交易数据,随着交通一卡通应用规模的扩大,数据量将呈现快速的上升趋势。对海量数据的交易与处理很大程度上增加了原有清分系统运算负荷,降低了运行性能和处理速度。通过对一卡通业务发展分析可知,从目前城市交通一卡通交易数据的变化趋势来看,交易数据量逐日增加,可以预见的是,未来接受处理的历史交易数据量将以百亿计,日均处理的交易数据量将达千万级别,现有的系统硬件及清算系统显然是无法满足未来庞大的清算业务量需求。

另一方面,随着交通运输部全国交通一卡通互联互通工程的开展和《城市公共交通IC卡技术规范》的颁布实施,旨在统一全国范围内的交通一卡通标准体系,进一步规范交通行业支付领域的业务管理系统、信息接口、安全技术、读写终端、卡片产品以及设备认证检测等技术标准,为新一代城市一卡通提供技术标准与指引,从而推进全国交通一卡通互联互通工作。但研究发现,大部分省市现有的交通一卡通清分系统均不满足交通部颁布的新技术规范,如果在原有清算系统的基础上进行升级改造,不仅工作量巨大且技术风险较高,难以确保与交通部清算系统的正常对接[1-3]。

在此背景下,为满足未来数据量剧增的系统处理需求及全国统一标准的接入要求,本文提出一种基于分布式计算技术的交通一卡通清分结算管理系统。该系统采用目前流行的Storm平台模式,为行业企业提供弹性计算、存储及实时业务处理,适用于一卡通行业大数据分析与应用。

1 建设需求分析

随着城市一卡通业务的发展和数据规模的扩展,对交易数据清分管理功能及性能提出了更高的要求,在满足日益增加的交易数据量情况下,新系统应能高效、准确地对交易数据进行统计分析,针对多场景化应用数据的多样性,满足其清分的需求。

该系统在设计上充分考虑了其性能水平的可扩展性,即随着交易数据的增加,在不中断服务的情况下,系统可通过添加资源,让服务在更多的进程以及服务器之间并行处理,在提高其处理性能同时,不影响清分功能的稳定性、健壮性,使得系统具有海量数据的处理能力。

针对交通一卡通目前及未来将要开展的信用支付业务、电子票证业务、小额理财业务等互联网增值应用的发展需求,该系统在保障基本清分功能的基础上,进一步满足各种不同业务类型数据需求,并随着业务数据种类的不断增加,系统能方便进行扩展并屏蔽数据之间的差异性,为企业提供可靠的数据处理。

另外,该系统还需具有可持续计算,对数据实时分析的能力,最大限度地降低交易延迟。一旦有数据流入系统就即刻处理并及时生成清分结果。在系统出现故障的时候,仍能对外正常提供清分服务,具有良好的容错能力。

2 系统平台构建

分布式计算是一门计算机科学,主要研究分布式系统。分布式应用系统主要包括若干台通过网络实现互联的计算机,这些计算机互相配合以完成一个共同的应用目标或服务目标。具体的过程是:将需要进行大量计算的项目数据分割成小块,由多台计算机分别计算,再上传运算结果后统一合并得出数据结论。在分布式系统上运行的计算机程序称为分布式计算程序;分布式编程就是编写上述程序的过程。

Storm是一个分布式的、可靠的、容错的数据流处理平台,目前由Apache软件基金会进行维护。Storm项目License遵循Apache License,Version2.0协议。Apache License协议是对商业应用友好的许可,使用者也可以在需要的时候修改代码来满足需求并作为开源或者商业用途。Storm的使用案例广泛,国内如支付宝、淘宝、百度等公司用其进行大数据的实时计算分析处理。大数据计算主要包括批量计算和实时计算,解决了批量计算处理历史数据而不能实现低延迟高响应的缺点[4]。由于数据增长永不停息,伴随着这种巨大的业务增长潜力,需要深入思考不同的数据处理方式。

与Hadoop相比,Storm技术具有更大的优势,将成为下一代云计算、大数据的核心技术[5]。Storm技术可使持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。Storm经常用于实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。Storm的部署管理非常简单,在同类的流式计算工具中其性能是非常出众的。

针对一卡通清分管理系统的各种特性要求,经研究分析,提出一种基于Storm的新型大数据处理解决方案,旨在使大数据处理功能更稳定、高效,并对通过对本方案进行相关性能测试 ,结果表明这种新型架构是高效、稳定、可行的[6]。

在设计上采用Storm作为清分处理的基础平台。该平台具有以下特性:

(1) 广泛的适用场景基于分布式计算系统提供的基础原语之上可以构建满足多应用场景的实时计算应用。如实时分析、持续计算等。

(2) 高可伸缩性资源管理节点来配置进程管理,使得分布式计算系统的集群扩展十分方便,通过增加资源可相应提高性能。

(3) 高性能使用高性能的序列化工具和消息队列,且因为消息是无状态的,数据流不需要持久化,因此有着非常优秀的性能。

(4) 高可靠性高效可靠的消息确认机制,保证每一条消息都会被处理。

(5) 异常健壮更容易进行集群管理,其节点的无状态性和fail-over的设计使得它并不存在单点故障问题。

(6) 容错性保证一个拓扑计算节点一直运行,数据在处理过程中发生异常,分布式计算系统能够重新发现异常的场景。

3 系统架构设计

3.1 架构设计

构建面向全省的交通一卡通清分管理系统,利用基于Storm的分布式计算技术实现对全省各地市交通一卡通的交易数据进行统一化、标准化管理,并推动清分服务与全国交通一卡通互联互通系统进行业务对接。鉴于未来发展的应用需求,该应用研究对系统整体架构进行合理有效的设计,系统架构自下而上可划分为4个层次,分别是接口层、系统功能层、集成层、视窗层,如图所示。

图1 系统架构图

(1) 接口层接口层是指该系统与所有外部系统的接口,负责对接的系统包括密钥管理系统、结算中心系统、部级清分结算平台等,接口根据业务类型可分为4类接口数据采集接口、校验接口、数据下发接口、公用服务接口。

(2) 系统功能层系统功能层包括了系统功能子系统,集中、直观地体现一卡通清分管理系统的各项业务功能。

(3) 集成层基于系统功能层规划出集成各个子系统所需的系统功能,主要分为页面集成和数据处理集成。

(4) 视窗层面向用户交互,用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。

3.2 技术架构

图2 技术架构图

客户端使用Web浏览器(IE/Firefox/chrome)、手机、数据下发系统等三种途径进行系统交互。表现层与业务逻辑层通过HTTP HTML进行交互。移动端和后台服务器端可通过socket接口进行数据获取;数据采集部分可通过FTP/SOCKET/HTTP等协议进行上传和下载业务数据。

业务逻辑层即应用服务器层,既包含使用JSP/Servlet、FineReport、socket/ws接口、JDBC等持久化技术的J2ee Web应用,也包含数据接口服务组件。

核心组件层即数据处理层,核心处理组件为基于Storm计算框架的数据处理引擎。为匹配其高速处理的性能,需要配备高速缓存Redis作为缓存中间件,其中保留处理监控信息以及处理配置数据。同时配备高速稳定的消息队列中间件Kafka作为数据处理入口,以处理高吞吐的海量数据。配备Zookeeper作为管理配置服务器,为Storm做负载均衡的调节。同时在数据核查中使用分布式存储数据库MongDB作为核查数据的存储,并配有数据核查程序进行各种数据核查。使用Oracle客户端程序SQLLoader作为数据入库程序,可以满足该系统数据库入库速率要求。

3.3 Storm架构

图3 Storm架构图

如图3所示,当一个流计算拓扑定义好后被提交,首先会由分布式计算系统提供的方法把编写好的程序包上传到任务调度节点(Nimbus),接着对分布式计算系统本身和拓扑计算节点进行校验,主要检查分布式计算系统的状态是否为在线以及拓扑计算节点是否有同名的实例在运行。下一步,任务调度节点(Nimbus)对每个拓扑计算节点都会做出详细的预算,如工作量,它会根据拓扑计算节点中定义的parallelism hint参数,来给计算节点设定工作量(Task)数目,并且分配与其对应的Task-id,再把分配好的工作量信息写入资源管理节点(Zookeeper)上的/tasks目录下。然后任务调度节点(Nimbus)会给管理进程(Supervisor)分配工作,方法是把任务信息写在资源管理节点(Zookeeper)的管理目录下。管理进程(Supervisor)每隔一定时间都会查看管理目录,检查任务调度节点(Nimbus)是否有新任务分配,当有新提交的任务时,将先下载代码,然后根据任务信息安排计算节点(Worker)执行这些任务。每个计算节点(Worker)都是一个JVM实例,工作量(Task)会被分配到具体的计算节点中执行,计算节点(Worker)与工作量(Task)支持并行度的配置。

图4为Storm中运行的一个实时应用程序,由于各组件间的消息流动形成逻辑上的一个拓扑结构。一个Topology是Spout和Bolt组成的图,通过Stream Groupings将图中的Spout和Bolt连接起来。消息源Spout是Storm里面一个Topology里面的消息生产者,Spout从来源处读取数据并放入Topology。Topology中所有的处理都由Bolt完成。即所有的消息处理逻辑被封装在Bolt里面。Bolt负责完成具体的事项,比如连接的过滤、聚合、访问文件、数据库等。图4描述的是一个Topology在设计上的结构模型,具体的task的设置可由以下代码完成,其中Spout的task数量为2,Bolt A的task数量为4,Bolt B与Bolt C的task数量为3。Bolt A与Bolt B从Spout处订阅消息,Bolt C从Bolt A处订阅消息。

图4 Topology结构图

3.4 系统拓扑结构

该系统中拓扑的设计严格遵循Storm平台关于松耦合、高内聚的原则,支持业务数据的多样性,具有优秀的横向扩展能力。系统的整体拓扑结构图5所示。

图5 系统总体拓扑关系图

从数据采集阶段开始,数据被流转到文件处理的拓扑中,不同类型的数据(如城市一卡通数据、国标卡数据、信用管理数据、电子票证数据等)将被系统归类并交给不同的拓扑进行文件处理。当新增业务数据类型的时候,只需新增对应的拓扑进行处理即可,不影响现有的拓扑。文件处理拓扑与数据存储服务层密切交互,获取执行期间所需的基础数据(如票卡信息、黑名单等),并保存执行的结果数据(有效数据、挂起数据等)。各种类型的业务数据经过文件处理阶段之后,统一进入到数据检查、异常处理、挂起数据核查等拓扑,此类拓扑以数据存储服务层作为数据的源头,进行相应的数据处理,处理的结果通过数据接口服务进行数据下发。系统的所有拓扑均处于系统监控模块的监视之下,该模块将及时对数据处理执行的过程进行反馈。

以下就系统中的地标卡数据处理拓扑进行说明,其他拓扑的设计过程与此类似。如图6所示。

图6 系统文件检查拓扑图

图6描述的是关于某城市一卡通数据的文件检查的拓扑,具体处理流程如下:

数据从数据接口采集然后流入到ZIP Spout,ZIP Spout获取数据后发送给节点ZIP Check Bolt。

ZIP Check Bolt进行文件包基础检查,包括文件包标示符、命名长度等。检查合法之后,将数据流转到下一节点Audit File Check Bolt进行审计检查。

审计检查节点Audit File Check Bolt在比对文件包文件数据,数据条数,总交易金额等信息与审计文件所描述的一致之后,继续将数据发送到下一节点File Base Check Bolt进行数据包内文件的检查。

File Base Check Bolt节点对文件的标示符、命名长度等检查通过之后,将交易数据流转到File Record Relipcation Check Bolt进行文件内数据重复的检查。将非交易数据发送到Other File Handle Bolt进行处理。

文件内数据重复检查节点在检查过程中会剔除掉重复数据,将非重复数据发送给File Prev And Next Trade Check Bolt进行文件内上下笔的检查。

非交易数据处理节点Other File Handle Bolt对数据进行校验之后,将数据入库。

数据检查节点出现数据校验不通过的情况下,将数据流转到Invalid Handls Bolt进行处理。

如数据通过所有文件检查的节点,将被放置进分布式消息队列Kafka,以便其他Topology或者计算节点从中获取数据继续执行任务,同时将检查过程中产生的配置或结果数据缓存进Redis。文件检查Topology在执行过程中还与数据库进行交互,获取基础配置数据。

以上整个流程受系统监控模块的监控,对各节点出现数据校验不通过的情况进行预警,及时将任务执行过程进行反映。

4 结 语

随着城市智能交通应用体系的不断发展与健全,交通信息化应用服务功能的不断扩展,以及交通一卡通大数据应用技术的不断深入发展,越来越多的复杂系统将成为定量分析的对象,如何打造合适的数据分析技术是未来企业发展的重要支撑点[7]。本文所研究的城市交通一卡通清分管理系统是基于一卡通业务发展、交通大数据分析服务以及未来智慧城市发展需求而建设,构筑以云平台为基础设施,以主流的分布式计算技术为核心,具备高效性、高安全性、高可靠性的数据清分管理系统。实验证明,基于Storm的云计算适用于清分系统处理的实时数据业务和非实时数据业务[8]。另外,在满足现有清分系统功能需求的同时,根据未来业务拓展的需求开发全新的清分系统,极大提升了通卡企业的清分业务功能,为构建诸如电子票证、信用支付、金融服务等增值业务打下坚实的基础。通过本研究所提出的数据清分系统设计方案,不仅能有效实现一卡通在大数据环境下的清分结算,也能为企业、商户等单位提供有价值的数据分析服务。

[1] 中华人民共和国交通运输部. 城市公共交通IC卡技术规范: Technical specification on IC card for urban public transport[S]. 人民交通出版社股份有限公司, 2015.

[2] 吴金成, 谢振东, 伍冠桦,等. 基于交通一卡通数据的交通状态分析及动态控制研究[J]. 广东工业大学学报, 2017, 34(3):77-82.

[3] 刘强, 何建兵, 张景奎,等. 基于云计算的公共交通大数据处理机制研究[J]. 科技致富向导, 2014(20):192-192.

[4] 赵菲, 林穗, 高西刚. 面向大数据的Storm框架研究与应用[J]. 微型机与应用, 2016, 35(6):12-14.

[5] 靳永超, 吴怀谷. 基于Storm和Hadoop的大数据处理架构的研究[J]. 现代计算机, 2015(3):9-12.

[6] 王利卿, 张华敏. 分布式计算框架的研究[J]. 信息技术与信息化, 2015(10):199-200.

[7] 刘聪, 许莉娟. 基于Java的分布式高性能计算架构[J]. 盐城工学院学报(自然科学版), 2013, 26(3):10-13.

[8] 胡宇舟, 范滨, 顾学道,等. 基于Hadoop的云计算在清分系统中的应用[J]. 电子世界, 2014(13):16-17.

猜你喜欢

分布式计算一卡通数据处理
一卡通失卡招领系统设计
认知诊断缺失数据处理方法的比较:零替换、多重插补与极大似然估计法*
基于低频功率数据处理的负荷分解方法
无人机测绘数据处理关键技术及运用
高层建筑沉降监测数据处理中多元回归分析方法的应用研究
高层建筑沉降监测数据处理中多元回归分析方法的应用研究
基于云计算的大数据处理与分析综述
基于云计算的移动学习平台设计与实现
云计算中MapReduce分布式并行处理框架的研究与搭建
向心加速度学习一卡通