详解数据服务共享发布

点点圈 提交于 2019-11-29 06:25:52


转载本文需注明出处:微信公众号EAWorld,违者必究。

引言:

随着云计算、大数据、物联网等技术兴起,数据朝着多样性、高体量、高速度方向发展,如何将海量数据安全、稳定、高效地数据共享出去成为各企业关注的重点。本次微课堂通过普元在数据服务共享平台研发过程中的实践,和大家分享数据服务共享发布的相关经验。  

目录:

1.数据服务共享发布核心场景
2.数据服务共享发布技术架构
3.数据服务共享发布关键设计
4.数据服务共享发布安全考虑
5.结束语

1.数据服务共享发布核心场景

按功能划分核心场景



核心场景主要包括四个环节:资源目录生成、数据服务发布、数据服务消费、数据服务监控。

资源目录生成:提供数据资源目录与服务资源目录两种视图,数据资源目录通过自动化采集方式生成,对各种数据源(数据库、文件、大数据)的元数据信息进行展示;通过数据服务发布快速生成服务资源目录。

数据服务发布:基于数据资源目录可将共享区数据快速发布成实时服务(RESTful)和批量服务(File)。
数据服务消费:定义了从服务浏览、申请、审批、数据使用的详细流程,消费方通过订阅或者拉取的方式使用数据。
数据服务监控:对数据服务全生命周期管理与监控,对故障进行实时告警。

按角色进行功能场景划分



围绕核心场景定义了四类角色:数据管理员、数据开发人员、数据消费方、运维人员。

数据管理员:负责数据资源目录、服务目录的维护,参与数据服务的审批及授权。
数据开发人员:负责数据资源服务化前的转换、脱敏、核检,负责实时和批量服务的开发。
数据消费方:数据资源的使用方,通过资源目录查找相应的数据服务,向数据管理员提交数据服务申请使用数据。
运维人员:负责数据整体共享交换过程中数据资源的监控、统计分析及故障处理。

围绕核心场景,我们总结了四个典型应用场景:

场景一:让用数据的所有人知道可以提供什么样的数据



通过资源目录提供技术元数据、业务元数据、服务元数据视图,使资源更容易发现,提供分区、分节点的体系化资源目录管理,保护数据安全,快速查找数据。通过自动化采集与解析手段获取元数据信息,建立技术、业务、服务元数据的注册输入,标明数据方位。

场景二:提供接口、文件、数据库三种服务类型对外进行共享



基于数据服务目录以接口、文件、数据库三种提供给数据使用方,数据消费方可通过申请的方式主动拉取数据,也可通过订阅的方式自动获取所需数据。

场景三:自助式数据问题追踪



消费方申请数据时通过血缘分析及级影响分析能够及时发现资源在使用过程中的质量问题 ,确认是否是自己想要的数据,验证开发正确性。

场景四 :从全局了解企业数据服务应用情况



通过数据服务监控自动形成数据监控链路,提供数据服务共享的全貌地图,帮助企业了解数据共享交换的全貌及系统间数据关系,从全局了解企业的数据服务应用情况。

2.数据服务共享发布技术架构

支撑流水线式的数据服务共享发布核心架构



上图核心架构中定义了数据从数据源开始经过数据准备(清洗、转换、质量核检)后进入共享区,对共享区数据进行服务化后提供给消费方使用的处理流程及机制,支撑流水线式的数据服务共享发布。

根据数据生命周期的不同环节,架构设计上定义了三个数据区域(数据源、数据前置区、数据共享区),可根据实际情况对三个区域进行自定义或取舍。

功能架构



在功能架构上主要包括四大支撑引擎+四大功能模块。

四大支撑引擎:

实时服务引擎:实时服务发布及访问功能,以RESTful方式提供;
批量服务引擎:批量服务发布及访问功能,以File方式提供;
调度引擎:提供对批量服务的调度功能;
日志引擎:采集日志进行指标分析。


四大功能模块:

资源目录:数据消费方和数据开发人员使用视图;
数据服务发布:实现对实时服务和批量服务的发布管理;
数据使用及安全:定义数据申请使用流程及数据安全管理;
数据服务监控:对数据服务生命周期进行全链路监控。

开发采用的技术栈



在数据服务共享平台开发的中涉及到的技术栈分为五个层次:

资源层:对主流关系型数据库(Oracle、SQLServer、Mysql),大数据(HBase、Hive)、文件等多种数据源进行技术元数据的自动采集和业务元数据的管理。
访问层:基于JDBC、HTTP、RPC、SFTP等通信协议实现与资源层的访问交互。
逻辑层:提供对资源层不同数据源的适配器,同时提供可重用的安全、监控、调度及日志组件。
服务提供层:基于SpringBoot+SpringCloud以微服务架构的方式对外提供服务。
展示层:采用vue+iview+es6+axios+ECharts技术实现前端页面及展示效果。

3.数据服务共享发布关键设计

数据服务共享发布设计主要从数据服务发布、故障告警、数据质量核检、数据服务监控四个层面去考虑。

数据服务发布

数据服务发布提供两种类型的服务发布:实时服务发布、批量服务发布。

实时服务发布:将DB、HBase、File数据发布成实时服务,以RESTful方式提供。
批量服务发布:将DB、Hive数据发布成批量服务,以文件方式提供。

实时服务发布-微服务架构的实时服务引擎



实时服务引擎是基于SpringBoot框架实现的微服务架构引擎,支持分布式部署,线性扩展。提供扩展能力,封装内部技术实现细节,提供扩展接口实现对特殊需求的服务发布。

支持三种数据类型服务:

数据源服务:基于数据资源目录将整个数据源发布服务;
单表服务:基于数据资源目录将选定的单表及字段发布成服务;
结果集服务:基于数据资源目录将选定的多张表及字段组装形成新的结果集,按自定义的结果集发布成服务。

实时服务发布-发布逻辑



实时服务发布逻辑主要分为几个步骤:

选择所要发布的资源;
填写所发布服务的基本信息;
实时服务引擎根据预先定义的vm模板,动态生成API、controller、service、dao、Model等层的Java代码,编译后发布为RESTful服务,提供Swagger服务描述。

批量服务发布引擎

批量服发布引擎基于数据流的异步处理模型,可将DB、Hive资源快速生成指定的文件类型服务,主要提供Excel、Csv、Xml三种文件类型。

批量服务提供三种访问方式:

sftp:将文件推送到ftpserver,通过sftp的方式进行下载;
https:通过https方式下载文件;
P2P:借助于普元文件传输工具实现点对点的可靠文件传输。

故障告警



通过事件的方式按照定义规则进行检查,当满足规则时进行告警,支持以站内信息、邮件、短信方式进行通知。

服务引擎告警:对服务引擎CPU、内存指标进行检测,当达到阈值时进行告警;
服务状态告警:实时探测服务状态,当服务停止运行及时进行告警通知;
服务质量告警:针对服务的访问异常、响应时间进行监控,当访问出现异常或者响应时间达到配置阈值时自动进行告警。

数据质量检核



在数据服务共享发布整个环节提供对数据资源质量检核能力,在事前、事中、事后进行质量核检,保证数据质量。支持按照自定义规则进行检核。

事前:对主外键、时间戳字段、数据类型等进行检查;
事中:对非空、重复记录等进行核检;
事后:对及时性、一致性等进行核检。

数据服务监控

数据服务监控主要从异步日志落地、日志读取解析指标、指标存储及故障处理等方面去考虑。



在运行环境中日志引擎(SSM)与Gateway一对一部署,通过异步分析Gateway调用日志提供服务调用结果、服务性能、服务调用耗时等指标。数据服务监控详细机制普元工程师阿良做过《普元数据服务监控解密》的分享,在这里不做详细赘述。

4.数据服务共享发布安全考虑

数据服务共享发布安全主要从服务访问控制、数据加密及脱敏、基于安全协议访问三个方面进行考虑。

服务访问控制



消费方系统通过SpringCloud Gateway访问数据服务,依次通过token授权、IP白名单、访问频度、访问流量多重拦截器进行控制,保证服务访问安全。

数据加密及脱敏


数据服务引擎端提供安全组件,保证数据访问安全,主要从以下几个方面进行控制:

数据加密:提供MD5、DES、AES、RSA等多种数加密方式;
数据脱敏:根据脱敏规则对字段任意数据进行脱敏,如常规替换、加密替换等;
行列级权限:对消费方系统提供行级、列级数据权限控制。

基于安全协议进行数据传输



在数据访问的过程中基于HTTPS、SFTP安全协议进行传输,防止数据在传输过程中不被窃取、篡改,确保数据的完整性。

5.结束语

数据服务共享发布是企业数据资源“纵向贯通”、“横向互联”的共享通道,从数据准备、数据质量、数据发布、数据共享、数据安全等多个环节去详细考虑,它将向着服务自助化、智能化的方向发展,帮助企业更加有效、可靠的管理和使用数据。


关于作者:不凡,普元软件产品部架构师,十余年IT从业经验,致力于数据服务共享、数据集成、服务治理、数据治理相关产品的架构与研发,具备较为领先的产品研发思路和丰富的实施落地经验,带领和参与了普元DSP、DI、ESB、MetaCube产品的研发,同时参与政府、保险、电力、公安、通信等多个领域数据项目的前期咨询及实施工作。


关于EAWorld:微服务,DevOps,数据治理,移动架构原创技术分享。长按二维码关注!
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!