发明内容
有鉴于此,本发明提出一种用于异构多数据源的数据处理方法、装置和服务器,可将***中的数据生产与数据消费解耦。
本发明提供一种用于异构多数据源的数据处理方法,包括:基于约定的数据接入方式和数据元信息的类型,接入来自多个数据生产***的多个异构数据源;对已接入的数据元信息的类型进行注册;当接收到数据消费***提交的数据复制请求时,按照该数据复制请求从对应的数据生产***中提取所需数据,并对提取出的数据进行加工处理;按照数据消费***要求的数据写入方式,将加工处理后的数据推送至数据消费***的目标存储介质中;其中,数据复制请求中包含数据消费***需要的数据元信息类型、数据加工规则和数据写入方式。
优选地,其中接入方式包括数据推送和数据抽取。
优选地,其中数据元信息的类型包括:接入信息描述和字段信息,其中字段信息包括:字段名、字段类型、是否可为空、最大长度和字段描述。
本发明还提供一种数据生产接入处理方法,包括:基于约定的数据接入方式和数据元信息的类型,将本地数据接入服务器;将已接入的数据元信息的类型注册到服务器中;当服务器提取数据时,按照约定的数据接入方式进行数据提取。
本发明还提供一种数据消费接入处理方法,包括:从服务器查询已注册的数据元信息类型;根据已注册的数据元信息类型和本***需要的目标数据,设计所需的数据加工规则,并创建数据复制请求,其中数据复制请求中包含本***需要的数据字段、数据加工规则和数据写入方式;向服务器提交数据复制请求;按照数据复制请求中规定的数据写入方式,接收服务器推送的数据,并将数据存储在目标存储介质中。
本发明还提供一种用于异构多数据源的数据处理装置,其特征在于,包括:数据生产接入模块,用于基于约定的数据接入方式和数据元信息的类型,接入来自多个数据生产***的多个异构数据源;元数据管理模块,用于对已接入的数据元信息的类型进行注册;数据复制模块,用于当接收到数据消费***提交的数据复制请求时,按照该数据复制请求从对应的数据生产***中提取所需数据,并对提取出的数据进行加工处理;按照数据消费***要求的数据写入方式,将加工处理后的数据推送至数据消费***的目标存储介质中;其中,数据复制请求中包含数据消费***需要的数据元信息类型、数据加工规则和数据写入方式。
本发明还提供一种服务器,其包含上述用于异构多数据源的数据处理装置。
有益效果:本发明的实施例通过建立数据复制平台,将***数据的生产与消费解耦,支持异构多数据源的接入,数据生产者只需按生产意愿设计数据的存储结构和存储方式,数据消费者基于数据复制平台已有的元数据,也只需按消费需求设计数据的存储结构和存储方式,双方独立发展,便于对数据进行管理和维护。
具体实施方式
以下结合附图以及具体实施例,对本发明的技术方案进行详细描述。
图1示出了本发明实施例的用于异构多数据源的数据处理方法流程图,该方法流程应用于服务器,包括:
S101,数据生产接入模块基于约定的数据接入方式和数据元信息的类型,接入来自多个数据生产***的多个异构数据源;
S102,元数据管理模块对已接入的数据元信息的类型进行注册;
S103,当接收到数据消费***提交的数据复制请求时,数据复制模块按照该数据复制请求从对应的数据生产***中提取所需数据,并对提取出的数据进行加工处理;
S104,按照数据消费***要求的数据写入方式,将加工处理后的数据推送至数据消费***的目标存储介质中;
其中,数据复制请求中包含数据消费***需要的数据元信息类型、数据加工规则和数据写入方式。
图2示出了本发明实施例的数据生产接入处理方法流程图,该方法流程应用于数据生产***,包括:
S201,数据接入模块基于约定的数据接入方式和数据元信息的类型,将本地数据接入服务器;
S202,元信息注册模块将已接入的数据元信息的类型注册到服务器中;
S203,当服务器提取数据时,数据提取模块按照约定的数据接入方式进行数据提取。
图3示出了本发明实施例的数据消费接入处理方法流程图,该方法流程应用于数据消费***,包括:
S301,数据元信息查询模块从服务器查询已注册的数据元信息类型;
S302,复制请求创建模块根据已注册的数据元信息类型和本***需要的目标数据,设计所需的数据加工规则,并创建数据复制请求,其中数据复制请求中包含本***需要的数据字段、数据加工规则和数据写入方式;
S303,复制请求提交模块向服务器提交数据复制请求;
S304,数据接收模块按照数据复制请求中规定的数据写入方式,接收服务器推送的数据,并将数据存储在目标存储介质中。
以上分别描述了在服务器、数据生产***以及数据消费***中进行的数据处理,可以将服务器视为基于异构多数据源的数据复制平台,其构建在数据生产***和数据消费***之间,***架构图如图4所示,支持异构多数据源的接入,各个数据消费方根据平台中已有元数据的类型定制数据,使得数据生产和数据消费相互解耦,不同的数据生产者和不同的数据消费者可以独立地设计自身的数据存储结构和存储方式,一方发生变更或增减时只需要调整复制任务中的数据映射方式,不会对另一方产生影响,生产方和消费方理论上可以是无限多个,整个***的数据流转顺畅,安全高效。
以下详细描述基于本发明实施例的服务器、数据生产***以及数据消费***的数据处理过程。
在本发明的实施例中,参考图5,当有***向服务器申请接入数据生产时,服务器作为数据复制平台,其中的数据生产接入模块与该***约定数据的接入方式和写入数据的元信息类型,将该***接入,并向元数据管理模块注册新的数据元信息的类型。
数据元信息的类型可包括:接入信息描述和字段信息,其中字段信息可包括:字段名、字段类型、是否可能为空、最大长度和字段描述。
接入方式包括两种类型:数据推送和数据抽取。参考图6,数据推送方式以数据生产方为主动方,其按照注册的字段信息,通过消息队列MQ推送数据。数据抽取方式以数据复制平台为主动方,其按照注册的字段信息从数据生产方抽取数据。这里,数据生产方需具有缓存、文件、数据库或其它可用的存储介质,此处可扩展。在主动抽取数据时,数据复制平台并不知晓存储介质中的数据结构,仅按照注册的字段信息去抽取数据,因此,数据生产者应保证注册的字段存在且可用。
在本发明的实施例中,元数据管理模块对所有接入的元数据信息进行注册和管理,将元信息的类型展示给消费方。消费方根据这些元信息的类型并结合自身需求,定制自身需要的数据字段、数据加工规则和写入方式,基于此消费方可向数据复制平台发出数据复制请求。
根据消费方的数据复制请求,数据复制平台中的数据复制模块通过约定的提取方式将所需数据提取出来(如推送方式或抽取方式),然后以数据复制请求中的数据加工规则对数据进行处理,再以数据复制请求中的写入方式将处理结果提交给数据消费者。
进一步地,在本发明的实施例中,数据复制平台中设置有监控调度模块,用于对整个数据复制过程进行监控和调度,使数据复制任务在集群中均匀分布、均衡负载。如果监控调度模块发现某节点宕机,监控调度模块将该节点上的数据复制任务快速在其它健康节点上重新恢复,继续复制工作,保证复制工作的高可用性。
在本发明的实施例中,参考图7,数据复制平台中设置有数据消费接入模块,支持数据消费***的接入,当有***需要接入消费数据时,向数据消费接入模块提交申请,并通过浏览元数据管理模块提供的元数据信息确定需要的数据源和字段,以及数据处理的规则和处理后输出的字段信息(字段信息包括字段名、字段类型和字段缺省值);确定好这些信息后,数据消费接入模块形成数据复制申请,提交给监控调度模块,监控调度模块将生产一个新的复制任务,加入调度队列,当该任务被调度执行时,从生产者处获取数据,经数据复制模块处理后,再把最终的数据提交给数据消费方。
将数据提交给消费方时,参考图8,数据复制平台将消费方定制的数据写入到其提交的存储介质中,如数据库,存入字段和数据格式均按复制申请中定制的约定执行。并且,消费方也可以提供MQ,数据复制平台将数据按约定写入MQ,消费方可通过MQ消费端实时消费数据。
进一步地,关于数据复制平台中的数据复制模块,在本发明的某些实施例中,数据复制模块不会对接入的数据进行持久化,而是制作一个滑窗(slide window),滑窗长度由数据生产者定义,滑窗大小为生产数据在数据生产接入模块临时暂存的数据长度,运行数据加工在滑窗范围内任意划动重做,不超过最大滑窗大小。
其中,滑窗的大小支持两种定义:一种是固定长度,即数据长度固定,超过长度则将旧数据挤出;另一种是动态长度,是按特定指标确定滑窗大小,比如按时间区间,2小时的滑窗,指滑窗始终保持2小时的数据,超过2小时的数据会被挤掉。因此,任何数据消费者接入消费数据,都是从当前生产数据开始,去消费将要产生的数据,而不能消费历史数据,这与数据集市不同。
进一步地,在本发明的某些实施例中,数据复制平台可提供基础的数据处理算子以及可扩展的用户自定义数据处理算子。参考图9,基础数据处理算子如关系选择(select)、关系投影(project)、集合合并(union)、集合***(split)或基于窗口的流式连接(pipeline-join)等,可不断添加,数据复制平台可支持这些算子的具体实现。数据消费者在对数据复制平台请求数据时,可使用已有的数据算子定制数据加工处理方式。如果已有的数据算子不能满足数据处理需求,操作人员还可自行开发自定义的数据加工处理方法。
以上描述了本发明实施例的数据复制平台的结构和工作方式,以下以学校的学生信息数据流转为例描述应用实施例,***架构如下:
数据生产者:学分管理***和学生信息***;
数据消费者:统一信息查询***;
其中,数据生产者要注册的信息类型有学分管理***的注册信息类型和学生信息***的注册信息类型,分别如下:
学分管理***的注册信息:学生ID、科目、成绩(学分);
学生信息***的注册信息:学生ID、院系、专业、年级;
根据学校教务数据统计需求,要对各年级的学生信息进行汇总,汇总的信息包括:学生ID、院系、专业、年级、总学分。
对于本***,作为生产者的学分管理***和学生信息***以及作为消费者的统一信息查询***均接入服务器,对学分管理***和学生信息***提供的数据元信息进行注册,注册后可以形成查询页面,例如学分管理***的查询页面如下表所示,学生信息***与此类似。
字段名 |
类型 |
最大长度 |
是否允许为空 |
字段描述 |
id |
int |
11 |
否 |
学生id,一般为学号 |
course |
string |
20 |
是 |
课程名 |
credit |
int |
11 |
是 |
学分 |
统一信息查询***可以通过搜索功能在服务器中找到已注册的信息和数据源,还可以获得具体的字段信息,据此确定其中是否存在自身需要的信息,如果存在,则根据自身需求设计数据加工规则,创建数据复制请求,然后向服务器请求数据。在本实施例中,统一信息查询***需要从学分管理***中提取学生ID和成绩,还需要从学生信息***中提取学生ID、院系、专业、年级,并且,需要基于学生的成绩计算出学生的总学分。基于此,统一信息查询***设计数据加工方式、数据接入方式、输出信息等,然后将请求提交给服务器,服务器可按这种加工方式,不断将数据从生产者中提取出来,实时推送给消费者,消费者得到的数据是最后汇总所需要的数据。
可见,本发明的实施例仅对需要的数据进行处理,对于无关数据并不涉及,且可通过数据处理回滚与重做确保加工数据的正确性,还可通过分布式的***调度确保不会因为***故障等原因导致数据出错。本发明的实施例能够实时地进行数据从生产方到消费方的复制处理,数据延迟较少,在复制数据的同时,还可完成定制的数据处理,使得***数据架构能够很轻松的解耦***数据,从而在保证数据安全的同时,***能够更加健壮,更好的支持数据高并发访问和数据的高可用性。
以上,结合具体实施例对本发明的技术方案进行了详细介绍,所描述的具体实施例用于帮助理解本发明的思想。本领域技术人员在本发明具体实施例的基础上做出的推导和变型也属于本发明保护范围之内。