1.1. 数据中心架构设计
数据中心自下而上依次为:数据层、数据服务层、数据处理层、数据交换层、数据采集层、管理层6部分,各层业务功能如下:
数据层
数据层为D3平台的持久化层,数据范围包括结构化的数据和非结构 化数据两部分。结构化数据分成支撑D3平台的系统库和存储元数据的应用库,而非结构化的数据主要包括目前能通过计算机识别的文档、图片、音视频文件。
数据服务层
数据服务层提供供上层服务使用的调用服务,包括对数据库的读写和对文件的存取。同时,为了提高数据的并发处理能力和响应速度,为数据增加了二级存储和基于Redis的内存级存储。在文档处理方面,利用搜索引擎功能,实现对文档的全文索引功能。对于图片处理,提供了基于图片的缩略图处理引擎,可以建立快速检索的图片加载器。视频流媒体处理引擎,可以对视频进行分段存储,分断加载,实现视频的在线播放功能。
数据处理层
数据处理层主要是对收到的数据进行深度加工处理。通过数据处理流程,将数据进行不同级别的加工处理。在对元数据结构定义完成后,可以对元数据的流程处理环节进行定义,设置不同的数据处理环节和顺序。
数据交换层
本层提供其它系统的访问及接收接口服务,以及不同系统平台的数据转换服务。根据元数据和定义及接入平台的数据订阅情况,将加工处理后的元数据进行转发。同时,对于转发的结果情况进行接收处理,可以进行重新发送处理。
数据采集层
数据采集层是以插件的形式,数据采集提供统一的处理接口标准,采集器通过只要符合接入标准,并对采集器的接入进行授权,则采集器即可将数据推送到D3平台。平台标配的采集器为基于WebService的接入接口,基本RMI的插件接口,基于SQL语言的数据库查询采集等。同时,扩展采集器可以实现对多种文档,如:Word,Excel,Project,txt,html,xml,pdf,dat,硬件设备等多种媒体的数据采集工作,此外还可以根据需要扩展更多的采集器程序。
管理层
本层主要是对平台的参数进行配置管理,同时对平台的执行情况进行跟踪。本层作为用户可以见层,可以对元数据进行定义,对元数据和加工过程进行配置,也可以对接入的平台进行授权管理,并对接入平台的数据接收器进行配置管理。
1.2. 统一门户架构设计
统一门户平台是是基于数据采集平台的数据层及数据服务层进行设计。所以自下而上依次为数据层、数据服务层、数据调度层、模块加载层、管理层、用户层六个层次。各业务功能层设计如下:
数据层
数据层为D3平台的持久化层,数据范围包括结构化的数据和非结构 化数据两部分。结构化数据分成支撑D3平台的系统库和存储元数据的应用库,而非结构化的数据主要包括目前能通过计算机识别的文档、图片、音视频文件。
数据服务层
数据服务层提供供上层服务使用的调用服务,包括对数据库的读写和对文件的存取。同时,为了提高数据的并发处理能力和响应速度,为数据增加了二级存储和基于Redis的内存级存储。在文档处理方面,利用搜索引擎功能,实现对文档的全文索引功能。对于图片处理,提供了基于图片的缩略图处理引擎,可以建立快速检索的图片加载器。视频流媒体处理引擎,可以对视频进行分段存储,分断加载,实现视频的在线播放功能。
数据调度层
通过调用数据中心平台的采集层插件,进行数据请求,数据收集。数据采集层是以插件的形式,数据采集提供统一的处理接口标准,采集器通过只要符合接入标准,并对采集器的接入进行授权,则采集器即可将数据推送到D3平台。平台标配的采集器为基于WebService的接入接口,基本RMI的插件接口,基于SQL语言的数据库查询采集等。同时,扩展采集器可以实现对多种文档,如:Word,Excel,Project,txt,html,xml,pdf,dat,硬件设备等多种媒体的数据采集工作,此外还可以根据需要扩展更多的采集器程序。
模块加载层
模块加载层作为portlet的界面解析器,主要是负责将数据调度层取到的数据,根据页面的模板进行数据转化加工,最终形成可以让浏览器识别的HTML,CSS,JS语言,从而展现给用户。
本次展现的模板分为普通文字列表式类模板、表格类模板、图表类模板三大类及三方系统快速导航菜单。
文字列表类模板设计为显示新闻公告,通知消息,待办任务类的信息,也可以显示统计类数据。
表格类模板为展现普通行式数据,也可以展现为数据交叉类表格,多表头表格等。
图表类模板展现为饼图、柱图、线图、面积图等多种常用图表。
管理层
本次主要是用来配置页面内容、页面布局、页面的元数据模型、数据源配置、接入平台的单点登录配置以及页面的分组授权、页面授权的配置等。
用户层
展现平台中配置的各模块的业务数据、模块的复用、页面的风格等。
2. 模块设计
2.1. 数据中心
2.1.1. 消息队列
数据验证
接收来自接口通过权限验证并符合文件命名规范的数据文件,对元数据的完整性进行校验,确认文件是否符合定义的标准,是否缺少元素节点等,对不符合规则的数据进行记录,反馈结果信息给发布平台。同时对元数据的处理过程进行日志记录。
数据的验证过程通过验证模块完成,队列只负责调度,将需要验证的元数据推送给数据验证模块即可。验证模块可以利用多线程模式进行处理。
存储队列
通过验证的元数据提交到存储队列中准备存储,由存储队列调用存储服务完成对元数据的数据库重复性验证,根据是否重复来增加或修改数据,并存储。
加工队列
数据加工处理用来对数据做深度加工,多数据整合形成综合性数据后,进行存储或转发。
加工模块为一个流程处理过程,可以根据元数据的定义对数据进行不同程度的加工处理。加工的模块及流程通过配置功能进行配置,无配置则不需要加工。
转发队列
本队列设计为发布-订阅模式,根据元数据的定义,各三方平台需要定义需要订阅哪几种元数据。转发队列根据订阅者的需要进行是否将该数据进行转发。
在转发前,需要根据该接收平台的具体数据要求对元数据进行处理,转换成对应平台可以识别的数据,如下拉存储的字典编号需要进行系统间转换。
2.1.2. 元数据定义
对需要进行采集,存储,交换的数据进行结构定义。定义的元数据的结构最终会生成JAVA的实体类,有三种类型的实体类,即主表实体、主子关联表实体、子表实体。
对于单表的元数据,只设置单表实体即可,如果是主子表的实体关系,则需要设置对应关系。
设置的实体要设置实体生成的实体类名称,同时,自动生成的实体类的路径统一存储到同一类路径下,定义为com.ltech.etrans.entity.xml。
在监控处理方面,需要设置元数据是否需要监控跟踪订阅情况,以及订阅者是否正常等待接收,同时需要定义元数据是否需要经过转换。对于元数据,需要设置数据的排序关系,可以根据关系进行默认排序。
在元数据的属性关系即字段方面,除了要设置显示名称,名称,数据类型,长度,精度外,还要设置字段关系是否是唯一验证字段,是否需要对该字段关系进行编码,是否需要验证该字段是否存在等。
元数据设置完成后,要动态生成对应的实体class,供JAVA程序直接使用,不需要从开发阶段定义实体类。
2.1.3. 元数据采集
采集的数据需要支持多种格式,多种方式的采集工作,包括数据库的标准记录数据,三方系统提供的结构化数据,非结构化数据以及通过配套的采集器抓取的Word,Excel,Pdf,xml,html,Dat和硬件设备的数据等。
对于结构化数据,平台设置一类统一的接口,协议方式设计四种:WebService,Socket,RMI、SQL。接口的元数据用XML作为数据载体进行传输,设置接收的数据封装格式要求。WebService、Socket、RMI 要求对外开放统一的接口名称、统一的参数、统一的加密压缩机制。对于SQL方式,根据输入的数据源和SQL语句进行主动抓取后进行存储及转发。
对于非结构化数据,平台设置文件类形的数据接收接口,采集方式设置为基于REST标准的上传机制,采集点和平台间要设置识别码进行认证。对于非结构化数据,需要进行索引库的建立,以便于进行后期的数据分析统计。对于图片类数据,实现缩略图的功能,后续可以增加OCR识别接口。
采集器设计为根据不同的数据格式多样化,同时,采集器与服务器间需要保持通讯,可以通过服务器集中管理各采集点。采集点根据配置要求实现数据的抓取、初步处理、编码、上传等工作。上传的数据传输采用WebService方式或Socket方式,采集点与服务器间要采用socket方式双向通讯,从而保证指令的下达。
2.1.4. 元数据验证
数据的验证包括采集点或三方系统提交数据到平台的时进行数据的封装压缩的安全性验证和认证通过后的元数据的完整性验证两种。
安全性验证:需要对统一接口传入的数据进行验证,是否为空,是否符合加密压缩标准。压缩方式采用Gzip进行压缩及解压,首先要对认证授权的用户信息进行解密认证,通过后,再对格式要求的文件标识名进行校验,完全通过后,再对内容文件进行解密,并对过程进行日志记录。
完整性校验:主要是根据元数据的定义,对数据包进行完整性校验,校验是利用元数据对应的实体类与XML进行对比,判断是否缺少或多结点信息,数据不完整。数据包中一次包含多条数据需要逐条进行验证,对验证结果进行日志记录,记录的结果要通过反馈接口反馈给发送平台。
通过验证的数据包,需要进行数据包与实体的数据转换工作,将XML数据形式的数据包转换成程序可以调用的实体类,以便在平台中传输加工处理等工作。
2.1.5. 元数据存储
存储数据前需要根据元数据的定义情况,对数据进行唯一性验证,利用元数据定义的统一字段,与数据库中的对应表中的数据进行唯一性比对 ,如果存在则更新数据,如果不存在则增加,保存到数据库中,同时对保存到数据库中的数据进行日志记录,记录处理的数据数。对于需要进行反馈的平台,要发送存储的结果到发送平台中。
2.1.6. 元数据转换
数据转换过程是需要将元数据转换成各不同平台需要的数据,转换可以对元数据的任何字段进行转换,转换的平台可以是任何平台中的定义的数据。
对于转换的数据,需要提供转换字典,系统根据字典数据完成转换工作,字典的设计需要按数据类别,平台类别进行定义。
转换过程采用按记录,这那字段替换的过程进行处理。
元数据转换是一转多的形式,一份数据需要根据三方平台的订阅情况进行转换,转换成各平台需要的数据。
2.1.7. 元数据转发
元数据转发是实时性的,要求转换完成后,立即进行发送。发送方式根据各平台的接入方式不同,设计为WebService和Socket方式两种。数据转发到三方平台时,首先要进行加密和压缩工作,同时需要对用户信息进行加密,再根据三方平台提供的接收接口,将数据推送到三方平台,并记录转发的结果,若转发失败,则首先进入待重发队列中,重发队列会浓度再次发送,三次失败后,则不再发送。
2.1.8. 转发反馈处理
提供转发失败的反馈接口,该接口采用WebService和Socket方式,接收三方平台异步处理的数据结果,本功能根据实际需要可以进行配置是否异步反馈,以及反馈失败后的异常信息,以便管理人员能快速定位问题。
2.1.9. 日志跟踪
在元数据的采集接收、数据验证、数据存储、数据转换、数据转发的环节中,详细记录元数据的处理轨迹,让管理员可以方便的查看数据处理情况。
2.1.10. 元数据转换字典
元数据转换字典是一组映射数据,不同的数据类型不同的三方平台数据类型不同,分别设置源数据与目标数据,目标数据要区分平台。
需要对字段数据进行缓存处理,以便在转换时,数据可以快速加载识别。
2.2. 统一门户设计
2.2.1. 数据模型
根据页面需要展示的数据形式,设计元数据的结构,本部分元数据都设计为单表数据。需要设计元数据的显示名称、对应的实体名称,类名设计统一存储到com.ltech.etrans.entity.xml下,同时需要设计元数据的排序字段。
对于元数据的字段关系,需要设计中文名称、英文字段名称、数据类型、长度、是否压缩、是否验证、是否为空及字段排序等。
本部分的元数据需要生成对应的实体类,但可以不生成对应的数据库表,本部分数据只是作为数据传输处理及显示的载体,不需要进行存储。
2.2.2. 数据加载器(动作模型)
数据加载器,主要是用来将不同形式的数据来源进行转换,封装成标准的对应的数据模型。
数据加载器需要对页面提供统一的接口,底层的数据来源需要根据配置实现加载不同的数据。
内部数据库加载器:直接读取平台内的数据库中的数据信息,利用配置的实体或SQL完成数据的加载。
外部数据库加载器:通过配置的数据源连接到外部数据库上,通过给定的SQL执行数据加载。
WebService数据加载器:通过对三方平台的接入配置情况,利用服务访问三方平台,加载三方平台的数据,三方平台返回的数据格式采用XML的形式进行封装,同时要对数据进行传输的加密压缩处理,保证数据的安全。
Socket数据加载器:远程调用服务,加载远程数据,数据格式采用XML的形式进行封装,同时要对数据进行传输的加密压缩处理。
对于其它的数据格式,需要由采集器将数据主动推送到平台中,再利用平台内部数据库加载方式完成数据的加载工作。
2.2.3. 页面模块管理
模块设计采用模板机制,模板设计分别是为:列表、普通表格、交叉表格,图片新闻,九宫格,饼图、线图、横道图、柱图、列表菜单,图片轮播、日历及其它自定义的模板内容。
页面模块定义时,可以设置数据加载器、设置页面自动刷新的时间,发布后需要以静态的html+js的方式发布。
页面内部的数据加载以freemaker来处理页面数据,页面可以用freemaker的表达式进行处理。
2.2.4. 页面布局管理
门户展现页面展现为多页签模式,本模块管理定义页面的页签信息,增加、修改、删除页签。以及页签内部包括页面模块和页面模块在整个页签中的位置等。
2.2.5. 页面授权管理
主要是对登录门户的用户进行页签的授权,不同的用户可以查看不同的页签,授权时可以对用户进行分级授权,按单位部门授权等。
授权上级单位的页面,在下级时,可以单独做删除操作,排除上级授权的页签。
2.2.6. 单点用户映射
对于用户在门户平台上需要登录到其它业务系统时,可以通过配置信息实现登录。
针对登录用户,若其它系统的登录名与门户不同时,则可以针对不同的系统做登录名映射,从而实现用户单点登录。
对于单位登录的机制,在系统接入管理模块进行定义,定义出单点登录的地址,用户名标识,token等。