分布式分级抽取多应用方法和数据抽取应用器与流程

文档序号:11250987阅读:676来源:国知局
分布式分级抽取多应用方法和数据抽取应用器与流程

本发明涉及一种数据抽取应用器和方法,更具体地,涉及一种对分布式数据进行分级抽取以实现多应用的分布式分级抽取多应用方法和数据抽取应用器。



背景技术:

通常,社会各界服务领域如人力资源和社会保障业务会涉及社会保险、公共就业、劳动关系、人事人才等诸多项目,服务面广且量大,积累了海量的业务数据。同时,网络和信息技术等的飞速发展对各领域的业务处理、信息整合以及科学管理等提出了更高的要求,继续实现信息整合,打破信息孤岛,实现信息共享,简化办事流程,为群众提供更加便捷的服务。该需求需要对各地市及和业务系统的数据进行统一的整合,将不同区域数据的实时更新应用于不同的目标端。

目前大多数的数据抽取技术采取的数据抽取方式为端到端的数据抽取模式,无法将多地区的数据统一进行抽取,抽取到的数据无法应用到多个目标端进行多方面的应用。



技术实现要素:

本发明是为了解决上述问题而提出的,其目的在于提供一种数据抽取应用器,以实现对多个源数据库的消息同时抽取,并分级提取,且同时应用得到多个应用和服务等目标端的目的。

本发明的另一目的是提供一种分布式分级抽取多应用方法。

为实现以上目的,本发明提供一种数据抽取应用器,包括:源数据模块,抓取多个源数据库的消息,并将此消息中包含的信息转换成为xml(extensiblemarkuplanguage,可扩展标记语言)消息,然后传递到对应的高级队列;消息路由模块,通过获取所述源数据模块中高级队列中的消息并传递到activemq集群,并将集群中的数据进行发送;消息处理模块,用于抓取所述消息路由模块发送的消息,并将消息通过处理、转换之后应用于多个不同的应用目标端。

优选地,所述源数据模块包括:抓取消息模块,通过抓取各个数据库中的重做日志,抓取对源数据库中的dml(datamanipulationlanguage,数据操作语言)操作,生成lcr(logicalchangerecord,逻辑变更记录)消息,并将该lcr将消息传送给流队列;应用消息转换模块,通过对流队列中的消息进行提起并传送,将从所述抓取消息模块获取到的lcr消息经过解析处理得到xml类型的消息,并将该xml类型的消息进行重新封装为新的消息;高级队列匹配模块,将所述应用消息转换模块封装后的消息按照规则发送给高级队列,该高级队列匹配模块按照用户为消息分配队列。

优选地,所述消息路由模块包括:第一消息接收模块,为activemq集群创建与高级队列一致的队列,从高级队列中获取数据将数据转发到activemq集群队列;消息发送模块,定义队列消息发送的目标端,将消息发送给消息处理模块。

优选地,所述消息处理模块包括:第二消息接收模块,接收消息路由模块发送过来的消息;消息转换模块,定义转换规则并将接收的消息进一步的根据已经定义好的转换规则进行转换;数据库调用模块,消息应用的目标端为数据库时,用于连接数据库并应用消息;服务调用模块,消息应用的目标端为服务时,用于服务的注册、服务的连接和服务的调用;异常处理模块,用于记录数据在各种类型的应用中发生的错误信息。

本发明还提供一种分布式分级抽取多应用方法,包括如下步骤:步骤1:抓取多个源数据库的消息,并将此消息中包含的信息转换成为xml类型的消息,然后传递到对应的高级队列;步骤2:获取步骤1中高级队列中的消息并传递到activemq集群,并将集群中的数据进行发送;步骤3:抓取步骤2发送的消息,并将消息通过处理之后应用于多个不同的应用目标端。

优选地,所述步骤1包括如下步骤:步骤1-1:通过抓取各个源数据库中的重做日志,获取数据库中的dml操作,生成lcr消息,并将该lcr消息传送给流队列;步骤1-2:通过对流队列中的消息进行提起并传送,将步骤1-1获取到的lcr消息经过解析处理得到xml类型的消息,并将该xml类型的消息进行重新封装为新的消息;步骤1-3:将步骤1-2封装后的消息按照规则发送给高级队列。

优选地,所述步骤2包括如下步骤:步骤2-1:为activemq集群创建与高级队列一致的队列,从高级队列中获取数据并转发到activemq集群队列;步骤2-2:将步骤2-1中activemq集群中的消息进行发送。

优选地,所述步骤3包括如下步骤:步骤3-1:创建转换规则,并接收步骤2发送的消息,根据该转换规则将接收的消息进一步进行转换;步骤3-2:当消息应用的目标端为数据库时,将步骤3-1中转换得到的消息连接数据库并应用消息;当消息应用的目标端为服务时,将步骤3-1中转换得到的消息进行服务的注册、连接和调用;步骤3-3:将消息应用过程中的异常消息持久化到数据库,供用户处理。

优选地,所述源数据库的个数为一个或多个。

优选地,所述xml类型的消息包含发生变化的对象的用户名、对象名、操作类型以及各个表字段的原值和修改值。

优选地,高级队列的名称由源端数据库名称、同步用户名称和数字组成,数字为1到5的任意一个数字,集群上创建队列名称与高级队列名称一致。

优选地,所述转换规则以可安装配置的插件的形式使用,该规则通过解析xml类型的消息的内容,xml类型的变化消息根据变化对象名称、操作类型、字段名称、字段值等不同的信息,进行重新的数据拼接,解析成目标端可以使用的类型数据。

优选地,目标端为数据库的数据库类型为mysql(mystructuredquerylanguage,我的结构化查询语言)、sqlserver(structuredquerylanguageserver,结构化查询语言服务器)、、oracle异构数据库。

优选地,所调用的服务类型支持各类型的webservice服务。

根据本发明提供的数据抽取应用器和分布式分级抽取多应用方法,将分布在各个区域源数据库数据采用分级形式进行消息的抽取,并将消息解析、转换、封装然后进行多应用,解决了分布式的环境下多个数据库中的数据进行共享和多应用的可能性。

实现了分布式环境中各业务系统所需数据库数据的共享,解决了各数据库之间的物理和逻辑隔离问题,同时对已产生的数据抓取一次之后进行多应用,将数据分发到执行到目标端的异构数据库或者webservice服务,实现数据的共享和多应用。

确保了数据变更应用的时效性和准确性。源数据模块和消息处理模块采用多线程的方式批量处理数据,有效提高了数据处理的效率,实现准实时的数据共享。每个线程内部数据的处理按照串行操作进行,最大程度的保持了数据之间的关联性和准确性。

实现了数据应用的灵活性和自定义,在数据抓取的过程中将lcr消息转换成xml,更有利于进行数据的解析;消息转换模块的规则实现了自定义的转换规则插件实现,实现了数据应用类型的多样化和灵活性。

缓解了各个业务库的工作负载。应用数据的分布式分级抽取多应用方法和数据抽取应用器,只对数据库日志进行处理,无需直接对数据库进行查询扫描,有效地降低了数据同步对生产库造成的额外负载,保证了业务库性能。

附图说明

图1为本发明提供的数据抽取应用器的结构框图。

图2为本发明提供的分布式分级抽取多应用方法的步骤框图。

具体实施方式

以下,参照附图详细说明本发明的优选实施例。在说明本发明的实施例时,如果对相关公知要素或功能的具体描述有碍于本发明的要旨,那么将省略其详细说明。

图1为本发明提供的数据抽取应用器的结构框图。

参照图1,本发明提供一种数据抽取应用器,可实现对分布式数据进行分级抽取以实现数据的多应用,具体包括源数据模块110、消息路由模块120及消息处理模块130。所述源数据模块110,用于抓取多个oracle源数据库日志消息,从日志信息中获取数据库的变更信息,先将该信息转化成lcr(logicalchangerecord)消息的形式,并将lcr信息传输到流队列经过应用转换后将消息转换为xml消息后传递到对应的高级队列;所述消息路由模块120,通过获取高级队列中的消息并传递到activemq集群,并将集群中的数据发送给消息处理模块130;所述消息处理模块130,用于抓取消息路由模块120发送的消息,并将该消息通过处理、转换之后应用于多个不同的应用目标端。

所述源数据模块110包括抓取消息模块111、应用消息模块112及高级队列匹配模块113。所述抓取消息模块111,负责抓取各个数据库中的重做日志,抓取对源数据库中的dml(datamanipulationlanguage,数据操作语言)插入、删除、修改等操作,生成lcr消息,并将该lcr消息传送给流队列;应用消息转换模块112,负责对流队列中的消息进行提起并传送,该模块将获取到的lcr消息经过解析处理得到xml类型的消息,并将该xml类型的消息进行重新封装为新的消息,该xml类型的消息包含发生变化的对象的用户名、对象名、操作类型以及各个表字段的原值和修改值等;高级队列匹配模块113,负责将封装后的消息按照规则将消息发送给高级队列,为保持消息转换和发送的速度,高级队列的名称由源端数据库名称、同步用户名称和数字组成,数字为1到5的任意一个数字,集群上创建队列名称与高级队列名称一致,并且高级队列匹配模块按照用户为消息分配队列,若一个用户抓取的表的数量不超过5,则按照表的数量为消息分配队列,若抓取的用户的表超过5个,则按照5个队列为抓取的表循环分配队列。

所述消息路由模块120包括第一消息接收模块121及消息发送模块122。第一消息接收模块121,负责为activemq集群创建与高级队列一致的队列,从高级队列中获取数据将数据转发到activemq集群队列;消息发送模块122,用于定义队列消息发送的目标端,将消息发送给消息处理模块。

所述消息处理模块130包括第二消息接收模块131、消息转换模块132、数据库调用模块133、服务调用模块134及异常处理模块135。第二消息接收模块131,用于接收消息路由模块120发送过来的消息;消息转换模块132,用于定义转换规则并将接收的消息进一步的根据已经定义好的规则进行转换,所述转换规则以可安装配置的插件的形式使用,该规则通过解析xml类型的消息的内容,xml类型的变化消息根据变化对象名称、操作类型、字段名称、字段值等不同的信息,进行重新的数据拼接,解析成目标端可以使用的类型数据;数据库调用模块133,消息应用的目标端为数据库时,负责目标数据源的注册、数据库链接和消息应用;服务调用模块134,消息应用的目标端为服务时,负责服务的注册、服务的连接和服务的调用;异常处理模块135,用于记录数据在各种类型的应用中发生的错误信息。

所述消息路由模块120向消息处理模块130发送消息以广播的形式发送,第二消息接收模块131有消息接收端,消息接收端与高级队列数量一致,即一个队列有一个发送端,有多少个消息发送端就有多少个消息接收端,当消息接收端接收到消息之后,首先根据消息内容诊断是否属于自己的消息,属于则继续处理,不属于则丢弃。然后在消息转换模块132中根据转换规则的配置情况,将消息分发给不同的转换规则,继续进行消息的应用。

图2为本发明提供的分布式分级抽取多应用方法的步骤框图。

参照图2,本发明提供一种分布式分级抽取多应用方法,具体包括如下步骤:

步骤210:抓取多个源数据库的消息,并将此消息中包含的信息转换成为xml类型的消息,然后传递到对应的高级队列;

步骤220:获取步骤210中高级队列中的消息并传递到activemq集群,并将集群中的数据进行发送;

步骤230:抓取步骤220发送的消息,并将消息通过处理之后应用于多个不同的应用目标端。

所述步骤210具体为:源数据模块110抓取多个源数据库的消息,获取数据库中的dml操作,并将这些操作转换为lcr消息,然后再转换为xml消息并重新封装,并发送给高级队列。具体包括如下步骤:

步骤211:通过抓取各个源数据库中的重做日志,获取数据库中的dml操作,生成lcr消息,并将该lcr将消息传送给流队列。更具体地,抓取消息模块111对各个需要同步的数据库配置抓取进程和应用消息转换进程,并对这些进程通过分析重做日志,获取对数据库中的dml插入、删除、修改等操作,并将这些操作转换生成lcr消息,并将该lcr将消息传送给流队列;该步骤中,源数据库可以有多个,抓取的用户和数量没有限制。

步骤212:通过对流队列中的消息进行提起并传送,将步骤211获取到的lcr消息经过解析处理得到xml类型的消息,并将该xml类型的消息进行重新封装为新的消息。更具体地,应用消息转换模块112从流队列中提取消息,通过对步骤1中所述的流队列中的lcr消息进行提起并传送,并经过解析转换处理得到xml类型的消息,该xml消息更容易理解,并包含发生变化的对象所述的用户名、对象名、操作类型以及各个表字段的原值和修改值等消息,转换成xml消息之后,对该消息重新进行封装。对lcr消息的转化封装安装源数据库产生消息变化的scn(systemchangenumber,系统改变号)序列转化,以保证数据的准确性。

步骤213:将步骤212封装后的消息按照规则发送给高级队列。更具体地,高级队列匹配模块113对步骤212发送过来的消息根据消息所属的对象类别分配消息应该进入的高级队列。为保持消息转换和发送的速度,高级队列的名称由源端数据库名称、同步用户名称和数字组成,数字为1到5的任意一个数字,集群上创建队列名称与高级队列名称一致,并且高级队列匹配模块按照用户为消息分配队列,若一个用户抓取的表的数量不超过5,则按照表的数量为消息分配队列,若抓取的用户的表超过5个,则按照每个用户5个队列为抓取的表循环分配队列。

所述步骤220具体为:消息路由模块120根据高级队列的分配形式在activemq集群上建立相应的队列,并获取高级队列上的消息通过自己的队列对消息进行路由发送。具体包括如下步骤:

步骤221:为activemq集群创建与高级队列一致的队列,从高级队列中获取数据并转发到activemq集群队列。更具体地,第一消息接收模块121从高级队列中获取数据并转发到activemq集群队列,根据高级队列的分配形式在activemq集群上建立相应的队列。

步骤222:将步骤221中activemq集群中的消息进行发送。更具体地,消息发送模块122将activemq集群中的消息发送给消息处理模块130。

所述步骤230具体为:消息处理模块130接收来自消息路由模块120发送的消息并根据自定义的规则将xml消息转换为可以应用的sql(structuredquerylanguage,结构化查询语言)语句或服务调用参数,然后应用到数据库或服务等,同时将应用过程中的异常消息持久化到数据库,供用户处理。具体包括如下步骤:

步骤231:创建转换规则,并接收步骤222发送的消息,根据该转换规则将接收的消息进一步进行转换。更具体地,第二消息接收模块131接收消息路由模块120发送过来的消息,然后消息转换模块132定义根据自定义的转换规则将xml消息转换为可以应用的sql语句或服务调用参数。自定义的转换规则以可安装配置的插件的形式使用,该转换规则通过解析xml消息的内容,将消息路由模块120发送过来的xml类型的变化消息根据变化对象名称、操作类型、字段名称、字段值等不同的信息,进行重新的数据拼接,解析成目标端可以使用的类型数据,如sql语句或者参数等。

步骤232:当消息应用的目标端为数据库时,将步骤231中转换的消息连接数据库并应用消息;当消息应用的目标端为服务时,将步骤231中转换后的消息进行服务的注册、连接和调用。更具体地,当消息应用的目标端为数据库时,使用数据库调用模块对转换为sql的语句在目标端数据库进行应用,目标端的数据库类型可以为各种类型,mysql、sqlserver、oracle等各种异构数据库中,目标端数据库的连接需要首先需要进行目标端数据库的注册;当消息应用的目标端为服务时,使用服务调用模块对需要调用的服务进行注册并根据传递过来的参数进行服务调用,所调用的服务类型支持各类型的webservice服务。

步骤233:将消息应用过程中的异常消息持久化到数据库,供用户处理。更具体地,异常处理模块135对数据在各种类型的应用中的错误信息进行记录,供管理人员处理,错误可以忽略或再次执行。activemq中专门创建异常消息队列,错误消息发生时,数据库调用模块133或服务调用模块134自动将错误消息发到集群上的异常消息队列中,异常处理模块135从异常消息队列中获得消息,并写入mysql数据库。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1