您的位置:首页 > 编程语言 > Java开发

大众点评开发前台Galaxy设计与实现

2016-07-08 10:37 239 查看

1.

1.1.1.1 Galaxy模块设计

传输平台的开发前台从功能上划分包括任务配置,任务管理,任务监控,代码上线等模块。整体设计见下图(图5.13):



图5.13  传输平台整体设计

首先介绍任务配置模块设计。具体分为两种任务配置:

一种是传输任务配置设计(见图5.14、图5.15)。这种任务配置信息包括四部分:第一部分是数据源和数据目标以及一个自增字段;第二部分是任务调度信息配置,这部分包括周期,Cron表达式,并发数,启动命令等;第三部分是这个任务的上游任务信息,以便构成一个工作流;第四部分就是Wormhole插件参数,包括Reader插件的参数和Writer插件的参数。



图5.14  传输任务基本配置模块设计

 图5.15  传输任务Wormhole配置模块设计

另一种是计算任务配置设计(见图5.16、图5.17)。计算任务的配置包括三部分:第一部分是任务调度信息和任务启动命令。计算任务任务启动命令这一项是关键,因为计算任务是运行第三方代码,所以必须指明正确的启动命令。第二部分是任务的前驱依赖信息。第三部分是目标表。因为计算任务是负责数据清洗和转换的,所以必须执行目标表,之所以在这里绑定也是为了数据平台资源能够更好的管理。

 


图5.16  计算任务基本配置模块设计

图5.17  计算任务目标表配置模块设计

其次我们看看任务管理模块设计(图5.18、图5.19)。任务配置成功后,我们必须允许用户修改它已经配置好的任务。但是一些关键的东西,比如目标表,以及源表字段变更等,必须按照约定来进行。比如源表变更必须在字段末尾新增字段,不允许删除字段和变更目标表等。

 


图5.18  计算任务管理模块设计

图5.19  传输任务管理模块设计

再次,我们介绍一下任务实例监控模块设计(图5.20)。这个模块就是从数据库的实例表中拿数据,展示在Web界面,同时还允许用户操控实例的状态。比如挂起,置为成功等。



图5.20  任务监控模块设计

最后,我们看看任务代码上线模块设计(图5.21)。因为我们任务代码还没有做到在线编辑的便捷程度,所以我们必须自己把代码打包,从Web平台上操作上线。支持代码本地上传和从Git拉取两种方式。



图5.21  任务代码上传模块设计

1.1.1.2Galaxy具体设计与实现

Galaxy开发前台是个Web项目,在该企业中叫做Galaxy,服务访问层项目叫做Galaxy-Halley。我们后端是采用经典的Springmvc+Mybatis实现的,前端是采用AngularJs和Bootstrap进行快速开发。由于要和数据传输平台耦合,代码中会有些Zookeeper和Hadoop的客户端API。

Galaxy项目的类文件可按不同业务功能进行区分。每个业务功能众多类文件的结构是Controller-Handler-Service三层次结构。Controller是控制器,接收前台请求参数,做一些参数的检查、适配和封装,然后在调用处理具体逻辑的Handler类的方法,Handler在做一些逻辑处理后,就需要做数据持久化工作,这就要调用Service类的方法。Service类的方法发起远程RPC调用,调用Galaxy-Halley项目的方法完成数据库操作。

Galaxy项目的业务功能有:

1)  通用业务功能。对应的类是CommonController/Handler/Service。这一组类主要是为其他业务功能服务,提供一些公用的服务。如值班信息、用户的权限信息、SQL解析、发布Git文件,获取当前登录用户信息等。

2)  计算任务管理功能。对应的类是JobManangeController/Handler/Service。这一组类主要功能是任务管理服务。比如任务条件查询、获取指定Id的任务信息、新增任务、预跑任务、生效任务、更改任务、删除任务等。

3)  任务监控功能。对应的类是JobMonitorController/Handler/Service。这一组类主要功能是监控任务实例状态。比如实例条件查询,获取实例的下游实例、获取实例的上游实例,获取实例对应的任务信息、实例查询、实例重跑、实例挂起、实例置为成功、实例级联重跑,实例状态分析等。

4)  日志传输任务管理功能。对应LogTransferController/Handler/Service。这组类的主要功能是日志传输任务管理。比如日志传输任务默认配置信息,查询目标表在hive中是否存在,获取任务的Hadoop ETL配置信息等。

5)  元数据表信息管理。对应TableController/Handler/Service。这组类的主要功能是表的元数据信息管理。比如表的条件查询,不同数据源类型建表操作,获取当前支持的数据源/目标类型、获取表的列信息、获取表的schema信息、获取数据库的url连接信息等。

6)  传输任务管理功能。对应TransferManagerController/Handler/Service。这组类的功能树传输任务管理。比如获取传输任务默认配置信息,查询任务的调度配置和Wormhole配置信息,获取任务的源表和目标表信息以及一些基本的任务管理功能。

7)  代码发布功能。对应TaskPublishController/Handler/Service。这组类主要是代码发布功能,把要本地上传的或从Git拉取的文件上传到Hdfs,并把消息通过zookeeper分布式消息队列传递消息给执行机,执行机下载文件后把执行情况插入数据库,Galaxy服务器以一定的间隔不断查询数据库,获取发布结果,并把发布状态返回给客户端。

Galaxy-Halley项目包括两部分:一部分是封装为RPC的各种数据库访问服务。另一部分是代码发布流程执行机上的部分。Galaxy-Halley的各项服务与Ga-laxy各项业务功能对应,包括:

1)  CommonService。这个服务就是管理值班信息、权限信息等持久化服务。

2)  InstanceService。这个服务就是管理实例的信息。比如插入实例、实例条件查询、实例状态查询、实例的任务信息查询、实例的挂起、重跑和置为成功等。

3)  LogTransferService。这个服务就是管理传输任务信息。如传输任务查询,插入传输任务,修改传输任务、删除传输任务等。

4)  TaskService。这个服务就是管理任务信息。如新建任务、任务条件查询、修改任务信息、获取任务信息、删除任务等。

5)  TransferService。这个服务就是管理传输任务信息。如获取传输任务基本配置和Wormhole配置信息、修改任务配置、新建传输任务、删除传输任务等。

6)  WormholeItemService。这个服务是获取Wormhole各个数据源或数据目标类型配置项的默认配置信息的服务。

代码发布流程执行机上的部分代码是用Zookeeper的客户端框架Cruator-Framework实现的。执行机上进程启动时先获取Zookeeper连接,然后启动监听对应该执行机的分布式队列,并指定队列的消费程序,队列的消费程序负责从消息中获取要下载的文件的Url,并从Hdfs中下载文件,下载成功后往数据库中插入一条消息。这部分代码上线流程与Galaxy-Halley不同,需要手动上线jar包并执行脚本。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息