引言:
随着云计算、大数据、物联网等技术兴起,数据朝着多样性、高体量、高速度方向发展,如何将海量数据安全、稳定、高效地数据共享出去成为各企业关注的重点。本次微课堂通过普元在数据服务共享平台研发过程中的实践,和大家分享数据服务共享发布的相关经验。
目录:
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.结束语
数据服务共享发布是企业数据资源“纵向贯通”、“横向互联”的共享通道,从数据准备、数据质量、数据发布、数据共享、数据安全等多个环节去详细考虑,它将向着服务自助化、智能化的方向发展,帮助企业更加有效、可靠的管理和使用数据。
精选提问:
问1:****列级权限怎么控制的?是基于接口配置字段控制,还是基于 SQL 解析器动态改写SQL?
答:列级权限控制是通过动态改写SQL的方式控制。
问2:****数据加密中的对等加密和非对等加密,哪个加密的安全性要高些?
答:非对称加密安全性高。
问3:****数据共享系统长什么样的,适用于哪些场景,哪些企业?
答:普元有自己的数据服务共享平台,具体的可以从官网(www.primeton.com)查看。适用于政府、金融、保险等有数据交换、共享及使用的场景的各行业领域。
问4:****数据共享安全管控中如何对非结构化的数据资源进行安全控制,如影像地图等,如何进行按地理区域来控制访问的权限及安全?
答:数据共享安全管控中对影像地图类非结构化的数据资源很难从内容上去做控制,可以配置地理区域标识与服务的对应关系、地理区域IP与服务对关系,从服务访问的角度来控制。
问5:****即使用了https,数据是不是还有被修改的可能,目前能做到数据不被修改吗?
答:https中将服务器端公钥证书同客户端绑定,由客户端在交互过程中去验证证书的合法性,可以避免中间人攻击,防止抓包和篡改,需要客户端有验证的逻辑。
问6:****在数据中台和业务中台是否也需要这个?前期如何规划?
答:数据服务共享发布可以做为数据中台和业务中台的一部分,关注将已有数据资产发布成数据服务。前期可从数据标准、数据质量、数据治理的角度去规划。
问7:****数据服务共享,核心是数据质量可靠,请问数据质量核检能否保证数据质量,有无办法对数据质量的真实性、完整性、时效性进行有效的管控。行业及普元是否有相关的解决办法?
答:普元有专门的数据质量产品,在金融、政企行业有关的解决方案。
问8:****请问如何对数据服务从计量的角度进行监控,满足监控数据共享程度的热度、使用的频率和按数据的访问流量计价等?
答:可以借助于SparkStreaming、Flink等流式处理框架对数据服务的交易日志进行相关指标的计算。
问9:****为什么数据服务共享中,是否有报表共享服务?
答:可以将报表以接口服务或者文件的方式提供给数据使用方。
问10:****场景三中的血缘分析及级影响分析,能否具体举例说明下?
答:血缘分析是基于当前资源向上追溯分析影响,影响分析基于当前资源分析对下游产生哪些资源产生影响。比如:当表某个字段发生变更时,可以通过血缘分析与影响分析查看对上游和下游所牵扯到的哪些系统有影响。
问11:****密钥怎么管理?
答:秘钥需要考虑从整个生命周期进行管理,进行定期备份与存储,建议从网上查看下相关资料。
问12:****请问,数据标准这块怎么理解,具体包括哪些内容?
答:普元有自己的数据标准产品,数据标准包括基础标准和分析类标准,基础标准包括数据内容格式、数据类型及数据含义;分析类标准含有指标的计算口径、纬度和定义等。