增量数据推送系统和方法
技术领域
本发明涉及一种数据推送系统和方法,更具体地,涉及一种基于增量同步的分布式任务分解和中间数据的生成与合并逻辑的增量数据推送系统和方法。
背景技术
由于云计算技术的发展,越来越多的第三方开发人员使用了云平台技术。其中很大一部分OLAP(On-Line Analytical Processing:联机分析处理)应用都需要一些基于关系数据库的共享数据信息,而准确的将共享数据库的数据定时提供给分析系统成为常见的需求内容。
在现有技术中,数据提供系统定期通过数据库全量备份,将某一个时刻的数据快照保存为文件形式,然后直接导入目标数据平台或是通过程序对全量数据进行处理后导入。
上述现有技术中存在以下缺点:1).数据重复度高:每次数据同步都是抓取的某一时刻的全量数据快照,而其中有很大一部分数据都是重复的,对计算及吞吐性能是比较大的浪费;2).时效性差:由于抓取的全量数据耗时较久,所以无法较为频繁的进行数据的同步,对于频繁更新的数据与真实数据的差异较大;3).对数据库性能有影响:每次同步数据需要对数据库进行快照抓取,对于运行压力较大的数据库增加了其运行负载,虽然可以通过增加slave库进行解决,但是slave同步也存在稳定性及延迟等多方面问题,对于权限控制也较为不利;4).数据同步为单点操作:由于全量快照的原理,操作必须由单一线程进行,如果出现异常,操作必须从头开始。而如果采用多线程分解将导致数据一致性出现问题。
发明内容
本发明要解决的技术问题
减少数据导出的重复性及对数据库性能的影响。在不影响数据库性能与数据准确性的前提下,增加容错性与处理性能。
解决方案
根据本发明的第一方面,提供了一种增量数据推送系统,包括:数据库服务器,用于存储关系数据库,并且存储由所述关系数据库所产生的二进制日志文件;分布式调度中心,用于任务分配及调度;分布式工作集群,所述分布式工作集群在所述分布式调度中心的调度下,用于从所述数据库服务器抓取所述二进制日志文件,基于分布式的处理对所述二进制日志文件进行增量解析,以解析出所述二进制日志文件中的增量记录,将增量记录中的属于同一逻辑主题的数据合并且保存在与所述同一逻辑主题相对应的中间文件中,将所述中间文件存储在中间存储单元中,依赖于业务需求对所存储的中间文件中的规定的字段进行过滤处理,根据不同业务系统的导出需求,将经过过滤处理之后的所述中间文件进行投影与合并并且保存为相应的业务系统所需要的格式的导出任务数据文件,然后传输至相应的业务系统;业务系统,向所述分布式工作集群发出导出任务的导出需求,并从所述分布式工作集群接收所述导出任务数据文件。
根据本发明的第二方面,提供了一种增量数据推送方法,包括在分布式调度中心的任务分配及调度下进行的如下处理:抓取处理,用于从数据库服务器抓取关系数据库的二进制日志文件;增量解析处理,基于分布式的处理对所述二进制日志文件进行增量解析,以解析出所述二进制日志文件中的增量记录;逻辑主题合并处理,将增量记录中的属于同一逻辑主题的数据合并;中间存储处理,将属于同一逻辑主题的经合并的数据保存在与所述同一逻辑主题相对应的中间文件中,并且将所述中间文件存储在中间存储单元中;数据字段过滤处理,依赖于业务需求对所存储的中间文件中的规定的字段进行过滤处理;以及导出处理,根据不同业务系统的导出需求,将经过过滤处理之后的所述中间文件进行投影与合并并且保存为相应的业务系统所需要的格式的导出任务数据文件,然后传输至相应的业务系统。
根据本发明的第三方面,提供了一种增量数据推送系统,包括分布式调度中心和分布式工作集群,其中,所述分布式工作集群包括:抓取单元,用于从数据库服务器抓取关系数据库的二进制日志文件;增量解析单元,基于分布式的处理对所述二进制日志文件进行增量解析,以解析出所述二进制日志文件中的增量记录;逻辑主题合并单元,将增量记录中的属于同一逻辑主题的数据合并;中间存储单元,将属于同一逻辑主题的经合并的数据保存在与所述同一逻辑主题相对应的中间文件中,并且将所述中间文件存储在中间存储单元中;数据字段过滤单元,依赖于业务需求对所存储的中间文件中的规定的字段进行过滤处理;以及导出单元,根据不同业务系统的导出需求,将经过过滤处理之后的所述中间文件进行投影与合并并且保存为相应的业务系统所需要的格式的导出任务数据文件,然后传输至相应的业务系统。
根据本发明的第四方面,提供了一种推送增量数据的电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明第二方面提供的增量数据推送方法。
根据本发明的第五方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明第二方面提供的增量数据推送方法。
本发明的有益效果
本发明大幅度降低了数据同步的数据量,从而降低了数据的重复性,改善了同步的性能;解决了同步操作的单点问题,使得整个流程可以被分解,分布式运行;在降低同步数据量的同时,并没有降低数据导出的灵活性,可以任意设定导出的数据范围和指定同步时间。
附图说明
图1是示例根据本发明的实施例的增量数据推送系统的框图。
图2是示例根据本发明的实施例的增量数据推送方法的流程图。
具体实施方式
下面将参照附图详细解释根据本发明的实施例的技术方案。
图1是示例根据本发明的实施例的增量数据推送系统100的框图。增量数据推送系统100包括数据库服务器102、分布式调度中心103、分布式工作集群104、业务系统118、120、122。
数据库服务器102存储关系数据库,关系数据库利用存在的binlog日志机制,能够将全部的数据库操作记录为binlog文件(二进制日志文件)。关系数据库例如可以是MySQL数据库。“MySQL”是一个开放源码的小型关系数据库管理系统。
分布式调度中心103将要由分布式工作集群104执行的所有的操作抽象为任务形式,使得操作进行有效的分解,提高可用性,所述操作可以泛指一切工作流程,比如从binlog中解析增量记录至中间文件,或是将中间文件合并投影,或是定期清理过期数据等。分布式调度中心103例如可以采用ZooKeeper系统,ZooKeeper是Apache的开源分布式协调工具。
分布式工作集群104包括:抓取单元106,增量解析单元108,逻辑主题合并单元110,中间存储单元112,数据字段过滤单元114,和导出单元116。
抓取单元106用于从数据库服务器102抓取关系数据库的binlog文件。增量解析单元108基于分布式的处理对所抓取的binlog文件进行增量解析,以解析出所述binlog文件中的增量记录。逻辑主题合并单元110将增量记录按逻辑主题(即,逻辑表)进行分类,将增量记录中的属于同一逻辑主题的数据合并。中间存储单元112将属于同一逻辑主题的经合并后的数据保存在与所述同一逻辑主题相对应的中间文件1、2、3、4中,例如,属于第1逻辑主题的数据经过合并后保存在中间文件1中,属于第2逻辑主题的数据经过合并后保存在中间文件2中,属于第3逻辑主题的数据经过合并后保存在中间文件3中,属于第4逻辑主题的数据经过合并后保存在中间文件4中,并且将所述中间文件1、2、3、4存储在中间存储单元112中。数据字段过滤单元114依赖于业务需求对所存储的合并后数据中的规定的字段进行过滤处理。导出单元116根据不同业务系统118、120、122的导出需求,将所述中间文件1、2、3、4进行投影与合并并且保存为相应的业务系统118、120、122所需要的格式的导出任务数据文件,然后分别传输至各个相应的业务系统118、120、122。
业务系统118、120、122是数据的导出终端,向所述分布式工作集群104发出各自的导出任务的导出需求,并从所述分布式工作集群104的导出单元116接收导出任务数据文件。导出任务的入口为特定业务系统的导出需求,产出为生成的导出任务数据文件。
虽然图1示出了四个中间文件1、2、3、4,和三个业务系统118、120、122,但是本领域技术人员应当理解,其仅仅是示例性的,实际中间文件和业务系统的数目都不受限制,可以更多或更少。
其中,所述中间文件包括数据来源、操作类型、数据库操作时间、操作的全部数据字段信息与内容,所述中间文件的序列化方式例如可以采用protobuf。protobuf是Protocol Buffers的简称。Protocol Buffers是Google公司开发的一种数据描述语言,类似于XML(eXtensible Markup Language:可扩展标记语言)能够将结构化数据序列化,可用于数据存储、通信协议等方面。它不依赖于语言和平台并且可扩展性极强。通过它,可以定义数据的结构,并生成基于各种语言的代码。这些定义的数据流可以轻松地在传递并不破坏已有的程序。
图2是示例根据本发明的实施例的增量数据推送方法的流程图200。根据本发明的实施例的增量数据推送方法可以通过例如ZooKeeper进行以下处理:抓取处理202,用于从数据库服务器102抓取关系数据库的binlog文件;增量解析处理204,基于分布式的处理对所述binlog文件进行增量解析,以解析出所述binlog文件中的增量记录;逻辑主题合并处理206,将增量记录中的属于同一逻辑主题的数据合并;中间存储处理210,将属于同一逻辑主题的经合并的数据保存在与所述同一逻辑主题相对应的中间文件1、2、3、4中,并且将所述中间文件1、2、3、4存储在中间存储单元112中;数据字段过滤处理208,依赖于业务需求对所存储的合并后数据中的规定的字段进行过滤处理;导出处理212,根据不同业务系统118、120、122的导出需求,将所述中间文件1、2、3、4进行投影与合并并且保存为相应的业务系统118、120、122所需要的格式的导出任务数据文件,然后传输至相应的业务系统118、120、122。
上述实施例仅是本发明的优选实施例,并不用于限制本发明。对本领域技术人员显而易见的是,在不脱离本发明的精神和范围的情况下,可以对本发明的实施例进行各种修改和改变。因此,本发明意在涵盖落入如权利要求所限定的本发明的范围之内的所有这样的修改或变型。
附图标记列表:
100 增量数据推送系统
102 数据库服务器102
103 分布式调度中心103
104 分布式工作集群
106 抓取单元
108 增量解析单元
110 逻辑主题合并单元
112 中间存储单元
114 数据字段过滤单元
116 导出单元
118,120,122 业务系统