随着云计算、⼤数据、物联⽹等技术兴起,数据朝着多样性、⾼体量、⾼速度⽅向发展,如何将海量数据安全、稳定、⾼效地数据共享出去成为各企业关注的重点。本次微课堂通过普元在数据服务共享平台研发过程中的实践,和⼤家分享数据服务共享发布的相关经验。⽬录:
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框架实现的微服务架构引擎,⽀持分布式部署,线性扩展。提供扩展能⼒,封装内部技术实现细节,提供扩展接⼝实现对特殊需求的服务发布。⽀持三种数据类型服务:
数据源服务:基于数据资源⽬录将整个数据源发布服务;单表服务:基于数据资源⽬录将选定的单表及字段发布成服务;
结果集服务:基于数据资源⽬录将选定的多张表及字段组装形成新的结果集,按⾃定义的结果集发布成服务。实时服务发布-发布逻辑
实时服务发布逻辑主要分为⼏个步骤:1. 选择所要发布的资源;2. 填写所发布服务的基本信息;
3. 实时服务引擎根据预先定义的vm模板,动态⽣成API、controller、service、dao、Model等层的Java代码,编译后发布为RESTful服务,提供Swagger服务描述。批量服务发布引擎
批量服发布引擎基于数据流的异步处理模型,可将DB、Hive资源快速⽣成指定的⽂件类型服务,主要提供Excel、Csv、Xml三种⽂件类型。批量服务提供三种访问⽅式:
1. sftp:将⽂件推送到ftpserver,通过sftp的⽅式进⾏下载;2. https:通过https⽅式下载⽂件;
3. 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:请问,数据标准这块怎么理解,具体包括哪些内容?
答:普元有⾃⼰的数据标准产品,数据标准包括基础标准和分析类标准,基础标准包括数据内容格式、数据类型及数据含义;分析类标准含有指标的计算⼝径、纬度和定义等。
因篇幅问题不能全部显示,请点此查看更多更全内容