大众点评开发前台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包并执行脚本。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android之获取手机上的图片和视频缩略图thumbnails
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序