时间:2024-07-28
武晋飞
(中国铁道科学研究院集团有限公司 电子计算技术研究所, 北京 100081)
随着铁路客票发售和预订系统(简称:客票系统)的不断发展,业务需求的不断增加,数据节点、数据种类以及数据量呈不断增加的趋势。营销系统是以客票系统业务数据为基础,利用先进信息技术和决策分析方法构建的系统,具有历史数据查询和趋势分析、实时预售分析预警、辅助决策等功能[1-2]。这些功能的实现依赖于历史数据和实时数据的准确、及时传输。目前主要采用开发收数程序、工作流程序调用、dbcs 数据传输中间件的方式进行[3]。
目前市场用各种各样的ETL[4]工具,Information Powercenter 可以访问各种主流业务系统、主流数据格式,并可按任意速度交付数据,具有高可扩展性、高可用性、高性能的优点[5];文献[6]以开源分布式软件Kettle 为基础,设计了具备可移植性的ETL 系统,通过开发插件实现了用户交互和任务调度,进行自动化增量数据抽取;文献[7]利用开源工具Kettle 建立模型,实现了高校多源异构数据集成,形成了可分析性数据;文献[8]提出了基于Pentaho 的铁路客运营销辅助决策解决方案,解决了商用软件不能完全自定义个性化需求的问题,但系统安全性和并发性需进一步优化;文献[9]对数据交换过程中的一致性和完整性提出了应对方案,应对传输过程中的不稳定因素。
本文基于铁路客票系统现有架构,结合当前营销数据收集、交换中遇到的问题,以开源ETL 工具Kettle 为核心,提出了铁路客运营销数据交换平台,确保各类营销数据的及时收集与实时交换。通过平台可以更好地打通信息壁垒、消除信息孤岛,兼容多种数据库产品和多种数据格式,通过灵活可配置的数据处理流程,对不同的运行环境和业务需求自动完成各种数据处理和传输工作,能够有效地提高数据的及时性、准确性,提高工作效率。
ETL(Extraction-Tansformation-Loading)即将数据从来源端经过抽取、转换、加载到目的端的过程。在ETL 过程中,数据抽取即是从数据源中抽取数据的过程,也可从多个数据源中进行数据抽取;数据转换即是对抽取数据进行清洗,通过清洗策略和合并、转换以及数学运算等操作,去除数据中存在的错误和冗余,也可根据要求变换数据格式,保证数据质量; 数据装载即是将转换好的数据保存到数据库或文件中。目前,越来越多的厂商致力于ETL 工具的研发,而较常用的开源工具有 Kettle、Talend、Octopus 等,其中以开源 Java 工具 Kettle 应用最广,表现最为突出。Kettle 是一款用 Java 编写的开源 ETL 工具,其主要由转换(Transformation)和作业(Job)两部分组成。其中,“转换” 是由一系列步骤组成的,每一个步骤表示对一个或多个数据流进行特定的转换操作。 “作业” 基于工作流模型,协调数据源、执行过程和相关依赖性的 ETL 活动,其将功能性和实体过程聚合起来,完成对整个工作流的控制。
(1)数据传输功能。数据传输功能是数据交换平台的核心功能,客运相关数据存放在不同的数据库平台、不同节点甚至是不同网络中;数据交换平台需要能够支持多种网络协议,支持多种数据库,进而实现数据的传输,达到数据收集和交换功能;并且在数据传输过程中要确保数据的安全性和准确性。
(2)人机交互功能。用户可以通过数据交换平台管理、配置当前数据传输任务,随着业务需求的扩展,用户可以通过在平台配置实现新数据任务的传输或交换,避免大量的代码工作,同时,在传输任务过程中,用户可以清晰掌握所关注任务的传输状态。
(3)数据监控功能。数据的完整性和准确性是数据交换平台的基本要求,通过数据监控功能,自动对比数据源和数据目标的一致性;通过分析任务执行日志,自动汇总任务执行状态并展现给用户,对异常情况,平台给予多种形式的报警提醒,从而保证数据的完整性和一致性。
(4)定时任务功能。用户可定义任务执行方式,平台按照约定定规则自动启动执行任务。
(1)当前营销数据主要为客票系统历史生产数据和实时数据,数据的完整性和一致性是搭建数据交换平台的基础,也是铁路客运营销辅助决策系统的基本要求。在数据传输过程中必须实时监控数据状态,保证数据的完整性和一致性,提供异常数据快速处理解决办法。
(2)铁路实行实名制购票之后,系统中包含了旅客的隐私信息,保护用户隐私信息不被泄漏是数据交换平台的另一个重要功能。对于分析不需要的隐私信息,在传输过程中进行脱敏处理;对于历史生产数据的备份传输,则采用加密传输解密入库,防止在数据传输过程中信息泄漏,保证数据安全性。
(3)当前售票系统生产环境主要采用Sybase数据库,随着业务不断发展深入,增加了Mysql、Oracle、Gbase、PostGresSQL 等数据库,对于营销分析,还可能会用到文本数据,如Excel、txt 等文件,要求数据交换平台有有良好的适应性,能够适配多种数据库和多种数据格式。
(4)铁路售票数据具有数据量大、多源性等特点,精准营销分析依赖于数据的实时性和准确性,对数据交换平台的工作效率提出了更高的要求。
(5)随着业务需求不断发展,客票生产数据节点呈增加趋势,客运营销分析需求也呈不断增加趋势,要求数据交换平台的数据库、数据结构的适配和后端并发处理方便,都有良好的可扩展性。
数据传输平台总体框架设计为3 层:Web 前端展示层,Web 后端处理层和执行层,如图1 所示。
图1 数据交换平台总体架构
3.1.1 Web前端展示层
前端展示层为整个平台的入口,为整个平台提供显示的界面,除此之外,前端展示层将用户的配置进行收集和整理,将这些配置信息以rest 的形式传递给Web 后端。整个前端展示层需要实现4 个方面的界面。
(1)数据连接管理界面:包括单个数据连接的配置和修改界面,全部数据连接的显示界面。
(2)转换管理界面:包括转换任务的配置和修改界面,转换运行信息的显示界面。
(3)作业管理界面:包括作业的配置和修改页面,作业运行的运维信息展示界面。
(4)用户管理界面:包括登陆界面,新增和修改用户信息界面。
3.1.2 Web后端处理层
后端处理层是后台的入口,与前台进行交互,将前台传递过来的配置存储到数据库中,并实现将数据库中的转换配置和作业配置下发给执行层,触发执行层的执行。
后端处理层从数据流上主要实现4 个功能:
(1)为前端提供接口,实现将数据库中的需要的信息传递给前端;
(2)接受前端传入的信息,将其写入数据库;
(3)将数据库中的信息传递给执行层,触发执行层的执行;
(4)接收执行层的执行结果,更新数据库中对应项。
3.1.3 执行层
执行层负责ETL 工作,接收Web 后端传递过来的执行信息进行执行。数据传输平台的ETL 操作部分采用了Kettle 的内核,故而执行层主要进行以下工作:接收Web 后端发送过来的处理信息并进行分发和处理;将Kettle 内核按照功能需求进行修改和分布式部署;在分布式基础上实现性能优化。
根据业务需求,平台主要6 个功能模块:用户管理模块、传输任务配置模块、转换管理模块、作业调度管理模块、传输监控模块和日志报警模块。各功能模块间简要数据流图,如图2 所示。
(1)用户管理模块主要实现用户管理和访问权限管理;
(2)传输任务配置模块用于定义传输任务,包括传输任务的数据库类型、数据表、数据库连接信息、定时执行配置等信息;
(3)转换管理模块主要实现Kettle 转换配置、转换调用情况、转换运行测试等功能;
图2 功能模块简要流程图
(4)调度管理模块实现定时任务的自动执行和手工执行任务,包括数据传输前处理、后处理等流程;
(5)传输监控模块实现整个数据传输平台所有任务执行状态监控,执行日志记录、对比,错误信息颜色预警等功能;
(6)日志报警模块主要功能为将任务执行情况发送给第三方接收平台,如短信、微信和钉钉等,目前,平台采用钉钉发送信息的方式实现报警。
3.3.1 用户管理相关接口
包含用户管理类和用户权限类。用户管理类用于实现用户创建、信息维护、获取用户信息等功能;用户权限类用于管理用户对不同功能模块的访问权限。
3.3.2 数据库访问信息配置接口
Kettle 支持多种数据库的连接访问,通过数据库访问信息配置接口管理不同任务的信息配置,并将信息存储在数据库中供Kettle 转换和作业调用访问。多个服务器与多个数据库的组合配置转化,如图3 所示。
图3 Kettle 数据访问配置示例
3.3.3 Kettle转换接口
转换接口主要包含转换配置类和执行类。转换配置类提供对转换的新增、修改、删除等操作;转换执行类主要实现转换提交、更新、移除和停止转换关系。图4 为包含数据导出和获取过程日志的一个转换流程。
图4 Kettle 转换流程示例
3.3.4 Kettle作业管理接口
作业管理模块主要实现作业管理和作业运行,在整个数据传输平台中作业是对转换的一个调度,当需要不同的转换相互协调来完成数据传输过程时就需要对作业进行配置。作业管理接口主要提供了两个接口类,作业管理类和作业执行类。作业管理接口提供作业添加、修改、删除、查询功能。作业执行接口类则提供提交作业和停止作业两个接口,一个Kettle 作业流程,如图5 所示。
图5 Kettle 作业流程示例
3.3.5 日志报警接口
日志报警接口主要提供日志查询功能,包括历史任务的执行日志和当前执行任务的实时日志信息,用于执行任务检查和异常信息报警。
营销数据交换平台前端基于B/S 架构实现,采用Spring MVC 和JQuery 框架进行开发,平台各应用间通信和方法调用通过高速服务框架实现,数据库采用PostGresSQL数据库,创建Kettle 资料库和交换平台数据库用于数据管理。数据交换平台主要功能可分为两大类:
(1)以开源ETL 工具Kettle 为核心的数据层开发,结合Spring 和Quartz 任务调度框架,实现营销数据的多数据源分布式采集,并提供简洁高效的页面供使用者进行操作管理;
(2)以Solr 搜索引擎为基础的资源索引建立和平台搜索功能,用户可通过配置文件或API 接口进行索引配置和生成,还提供Web 管理页面,方便用户操作。
在任务执行过程中全程记录执行状态,执行完成后自动生成汇总信息,并对异常已经预警。
对于平台报警显示的异常数据,为用户提供带有参数的处理界面,方便用户处理异常。
通过向第三方办公软件发送post 请求,实现办公软件实时报警。
执行层是数据交换平台的核心层,运行初期执行层部署在由4 个节点组成的Kettle 集群上,集群主节点负责完成转换运行和任务切分,为集群指定TCP 端口,把任务分发到指定的负载节点, 负载节点收到任务后打开TCP 端口,并连接主节点,处理集群任务。考虑到现有IT 基础设施资源利用率低,应用在物理机或者虚拟机中部署周期长,系统扩容不便,因此采用容器技术部署平台前端Web 应用,实现应用的可持续集成和可扩展部署。
当前数据交换平台主要配置了存根、运能、运量和实名制等60 余项数据的作业任务。针对不同数据设定了相应的任务执行计划以及预警规则,在与原系统平行运行期间,运行效率较之前系统有很大提升,完成所有数据交换任务总耗时减少2 h 左右。在整个数据作业过程中,系统自动完成完整性、一致性检验,数据准确性得到了很大保证,钉钉办公软件及时获取信息并进行预警通知,极大地方便了数据维护工作。在发生异常时,维护人员可通过日志快速、准确地定位到异常环节,并通过界面操作进行处理,提高了工作效率。
本文基于KETTLE 构建了铁路客运营销数据交换平台,用于铁路客运营销历史数据收集和实时数据交换,有效保证了营销系统的数据及时性、准确性和完整性,提高了营销数据交换与传输的效率;良好的适配性和可扩展性有效减少了业务需求增加带来的重复开发工作;严格的日志记录与展现结合第三方办公软件及时报警,以及界面异常处理功能,提高了数据维护的效率。为提高铁路客运营销系统数据效率、实现精准营销提供了数据支撑。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!