2021-03-01 07:30 浏览量:645
笔者08年就开始参与企业应用集成项目建设,经历了点对点数据集成、总线式数据集成、离线批量数据集成,流式数据集成等数据集成方式。所以,没有人比我更了解数据集成。
数据集成是把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享。
数据集成的核心任务是要将互相关联的异构数据源集成到一起,使用户能够以透明的方式访问这些数据资源。
数据集成的目的是指维护数据源整体上的数据一致性,解决企业“信息孤岛”的问题,提高信息共享和利用的效率。
01
点对点数据集成
点多点集成是最早出现的应用集成模式,采用点对点的方式开发接口程序,把需要进行信息交换的系统一对一地集成起来,从而实现整合应用的目标。
点对点的连接方式在连接对象比较少的时候,确实是一种简单和高效的连接方式,具有开发周期短、技术难度低的优势。但其最大的问题是,当连接对象多的时候,连接路径会以指数方式剧增,效率和维护成本是最大的问题。
当需要连接的应用系统越来越多时,点对点集成方式将把整个企业信息系统接口变成无法管理的“混乱的线团”。
点对点的集成架构不能集中管理和监控接口服务,仅支持一对一的数据交换,如果交换协议不一致,开发则非常困难。即,如果沟通的语言、文字、格式、方法等有差异,则每一个连接方都要同时支持和维护多种连接方式。
点对点的集成是紧耦合的,当一个连接变化时,所有与其相关的接口程序都需要重新开发或调试。
基于以上几点,在多点互连的情况下,点对点连接方式成本高,可用性和可维护性低。
显然,这不是一个好的连接方式。
02
总线式数据集成
总线式数据集成是通过在中间件上定义和执行集成规则,其拓扑结构不再是点对点集成形成的无规则网状,而主要是中心辐射型的(Hub型)星型结构或总线结构。
总线结构通过与点对点集成架构相比,采用总线架构可以显著减少编写的专用集成代码量,提升了集成接口的可管理性。不同连接对象如果连接方式有差异,可以通过总线完全屏蔽掉,做到对连接对象透明,无需各个连接对象关心。通过总线结构,把原来复杂的网状结构变成简单的星形结构,极大提高了硬件的可靠性和可用性。
总线式数据集成的一代:电子数据交换系统(EDI)
EDI不是用户之间简单的数据交换,EDI用户需要按照国际通用的消息格式发送信息,接收方也需要按国际统一规定的语法规则,对消息进行处理,并引起其他相关系统的EDI综合处理。标准化得EDI格式转换保证了不同国家、不同地区、不同企业的各种商业文件(如单证、回执、载货清单、验收通知、出口许可证、原产地证等)得以无障碍电子化交换,促进了国际贸易的发展。
总线式数据集成二代:企业服务总线(ESB)
ESB的使用标志着企业的应用集成进入了SOA时代(SOA是一种面向服务的集成架构)。SOA架构的其主要特征是基于一系列Web标准或规范来开发接口程序,包括UDDI、SOAP、WSDL、XML,并采用支持这些规范的中间件产品作为集成平台,从而实现了一种开放而富有弹性的应用集成方式。
ESB是对web服务(WebService)的注册、编排和管理。
WebService是一种跨编程语言、跨操作系统平台的远程调用技术,是web的一种标准。可以理解为:WebService是一个应用程序向外界暴露了一个能通过Web调用的API接口,我们把调用这个WebService的应用程序称作客户端,把提供这个WebService的应用程序称作服务端。客户端进行服务的远程调用前,需要知道服务的地址与服务有什么方法可以调用。
因此,WebService服务端通过一个文件(WSDL)来说明自己家里有啥服务可以对外调用,服务是什么,服务中有哪些方法,方法输入的参数是什么,返回值是什么,服务的网络地址是什么,通过什么方式来调用等。
WSDL是一个基于XML的语言,用于描述WebService及其函数、参数和返回值,它是WebService客户端和服务器端都能理解的标准格式。
03
离线批量数据集成
在传统数据集成的语境下,离线批量数据集成,通常是指基于ETL工具的离线数据集成,ETL即数据的提取(Extract)、转换(Transform)和加载(Load)。
ETL是数据仓库的核心和灵魂,能够按照统一的规则集成并提高数据的价值,是负责完成数据从数据源向目标数据仓库转化的过程,是实施数据仓库的重要步骤。
在数据仓库、数据湖、数据资产管理等项目中,ETL都是最核心的内容。ETL通过ETL作业流(任务)从一个或多个数据源中抽取数据,然后将其复制到数据仓库。抽取类型有全量抽取、增量抽取、准实时抽取、文件提取等方式。针对不同的数据提取场景设计不同的数据抽取类型。在数据抽取过程中,需要将不符合规则的数据过滤掉,并按照一定的业务规则或数据颗粒度转换成数据仓库可用的数据,这个过程就是数据的清洗和转换。最后,就是调用数据库的服务将数据装载至数据库中。
ETL的实现有多种方法,常用的有三种:
第一种是借助ETL工具:例如:Informatic、IBM CDC、talend、kettle、Nifi等,借助工具可以快速的建立起ETL工程,屏蔽了复杂的编码任务,提高了速度,降低了难度,但是缺少灵活性。
第二种是SQL编码实现:SQL的方法优点是灵活,提高ETL运行效率,但是编码复杂,对技术要求比较高。
第三种是ETL工具和SQL组合实现:综合了前面二种的优点,会极大地提高ETL的开发速度和效率。
04
流式数据集成
流式数据集成也叫流式数据实时数据处理,通常是采用Flume、Kafka等流式数据处理工具对NoSQL数据库进行实时监控和复制,然后根据业务场景做对应的处理(例如去重、去噪、中间计算等),之后再写入到对应的数据存储中。
这个过程类似传统的ETL,但它是流式的处理方式,而非定时的批处理Job,NoSQL数据库采集工具均采用分布式架构,能满足每秒数百MB的日志数据采集和传输需求。
Kafka 就是一个能够处理实时的流式数据的一个新型ETL解决方案。
Kafka 能够通过 Kafka Connect API 实现流数据管道的构建,也就是 ETL 中的 E和L。Connect API 利用了 Kafka 的可扩展性,kafka connect是围绕kafka构建的一个可伸缩,可靠的数据流通道,通过kafka connect可以快速实现大量数据进出kafka从而和其他源数据源或者目标数据源进行交互构造一个低延迟的数据通道。
流处理和转换可以通过 Kafka Streams API 来实现,也就是构建了ETL中的T,Kafka Streams用于在Kafka上构建高可分布式、拓展性,容错的应用程序。它建立在流处理的一系列重要功能基础之上,比如正确区分事件事件和处理时间,处理迟到数据以及高效的应用程序状态管理。
Kafka Streams包含了ConsumerAPI 和ProducerAPI的功能,增强了对数据流的处理能力。使用 Kafka 作为流处理平台能够消除为每个目标 sink、数据存储或系统创建定制化(很可能是重复的)抽取、转换和加载组件的需求。来自数据源的数据经过抽取后可以作为结构化的事件放到平台中,然后可以通过流处理进行数据的转换。
05
网络数据集成
网络数据集成也叫网络数据采集,指通过网络爬虫或网站公开 API 等方式从网站上获取数据信息的过程。
网页爬虫,即一种按照一定的规则,自动地抓取互联网信息的程序或者脚本,一般分为通用网络爬虫和聚焦网络爬虫两种。网页爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。
聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。
网页爬虫支持文本文件、图片、音频、视频等非结构化数据、半结构化数据从网页中提取出来,存储在本地的存储系统中。
目前网络上有许多网页爬虫,Octoparse、WebCopy、HTTrack、Getleft、Scraper等,并且这些工具都是免费的哦!
当然,你是一个技术大大的话,也可以写自己的爬虫程序。
作者:石秀峰
来源:谈数据