一种数据传输系统及其控制方法与流程

未命名 08-14 阅读:113 评论:0
1.本发明涉及数据传输的
技术领域
:,具体涉及一种数据传输系统及其控制方法。
背景技术
::2.saas(软件运营服务)模式的数据库存储通常是多租户模式,以mysql为例,一个租户就会独享一个数据库,租户的表结构和数据都是独立的,多租户独享数据库模式提升了租户的数据安全性和隔离性。多租户模式通常可以用来评测一个物理机的mysql的性能,即通过能够创建的数据库的数量判断物理机的mysql的性能优劣,通常情况下一个物理机的mysql能够创建500-800个数据库,以一个物理机的mysql上创建500个数据库为例,一个租户数据库上包含400张表,那一个物理机的mysql共创建200000张表。3.现今的大数据实时计算场景下通常需要将mysql的数据传输到一个分析型数据库(例如olap等)进行数据分析,现有实时传输技术一般使用java语言实现的开源canal订阅mysql的二进制日志文件,然后解析二进制日志文件并将其组装成insert语句插入到分析型数据库中,但是通过java语言实现的canal在数据传输过程中尚存在以下缺陷和不足:4.1)canal订阅一个mysql需要20万张表格,因为canal要将二进制日志文件信息转成row对象,就需要保存表格中的元数据,为加快转换性能canal会将表格中的元数据缓存在内存中,20万张表格的元数据会占据大量的内存。5.2)当mysql产生大量的二进制日志文件时,canal就会申请更多的内存创建row对象,加上缓存元数据所占用的内存,就会使内存使用过高,经常触发java的全局垃圾回收,一旦发生全局垃圾回收,java语言就会暂停所有线程,只运行垃圾回收,因要回收大量对象,回收时间都是秒级起步,导致数据传输的中断,引起数据传输的延迟。6.3)一个saas服务集群下,随着租户的增加,mysql的数量也会增加,使用的canal数量也随之增加,消耗大量的硬件资源,给企业带来资金成本的浪费。7.因此,亟需提供一种数据传输系统及其控制方法以解决上述现有技术中存在的缺陷与不足。技术实现要素:8.为了解决现有技术中存在的缺陷与不足,本发明提供了一种数据传输系统及其控制方法。9.本发明提供的具体方案为:10.一种数据传输系统,其特征在于:所述系统包括数据传输模块,所述数据传输模块包括:11.线程读取单元,所述线程读取单元与数据库管理系统信号连接,所述线程读取单元与数据库管理系统经认证后建立连接并拉取其中的日志文件;12.转换单元,所述转换单元连接线程读取单元,所述转换单元将线程读取单元拉取的日志文件进行解析及缓存后组装为目标源对象;13.线程写入单元,所述线程写入单元的一端连接转换单元,另一端与目标源数据库信号连接,所述线程写入单元将组装完成的目标源对象送入到目标源数据库中;14.所述转换单元对拉取的日志文件进行缓存时,通过将第一字段、第二字段及附加字段拼接的方式对解析出的对应元数据进行缓存。15.作为本发明的进一步优选实施方式,所述线程读取单元使用用户名和密码与数据库管理系统进行认证。16.作为本发明的进一步优选实施方式,所述线程读取单元根据订阅规则拉取所需的日志文件。17.作为本发明的进一步优选实施方式,所述转换单元对拉取的日志文件进行解析时,根据数据库名称及表格名称解析出对应元数据。18.作为本发明的进一步优选实施方式,所述第一字段为数据库抽象名称。19.作为本发明的进一步优选实施方式,所述第二字段为表格名称。20.作为本发明的进一步优选实施方式,所述附加字段选用灰度字段参数。21.作为本发明的进一步优选实施方式,所述线程写入单元的另一端同时与多个目标源数据库信号连接。22.作为本发明的进一步优选实施方式,所述数据库管理系统选用关系型数据库管理系统mysql,所述目标源数据库选用分析型数据库olap、mq、elaticsearch、redis中的至少一种。23.进一步地,本发明还提供一种数据传输系统的控制方法,其特征在于:包括以下步骤:24.s1:启动数据传输模块;25.s2:配置数据库管理系统;26.s3:配置数据库管理系统中的订阅规则;27.s4:配置目标源数据库;28.s5:与数据库管理系统经认证后建立连接;29.s6:根据订阅规则拉取数据库管理系统中的日志文件;30.s7:对拉取的日志文件进行解析;31.s8:根据数据库抽象名称及表格名称,或数据库抽象名称、表格名称及附加字段对解析出的对应元数据进行缓存;32.s9:将缓存的元数据组装为目标源对象;33.s10:将组装后的目标源对象送入对应的目标源数据库。34.相较于现有技术,本发明能够实现的技术效果包括:35.1)本发明提供一种数据传输系统及其控制方法,通过线程读取和写入以及多目标源数据库的并行使用提供了高效的并发机制,适合处理高并发和大规模并行的任务;编译环境和运行环境都经过了优化,解析出的日志文件经缓存后组装为目标源数据库可执行的目标源对象文件,使得其执行效率比java更高,尤其在cpu密集型的场景下表现更为突出,拥有更高的执行效率。36.2)本发明提供一种数据传输系统及其控制方法,所需服务器数量大为降低,内存消耗有效减少,最大延迟显著降低,大幅度降低企业硬件资源投入,节省硬件资源采购成本。37.3)本发明提供一种数据传输系统及其控制方法,资源大幅度减少的情况下,使得数据传输依然能够保持高性能。附图说明38.图1所示为本发明一种数据传输系统的逻辑结构示意图。39.图2所示为本发明一种数据传输系统的控制方法的步骤流程图。40.图3所示为本发明在mysql中执行insert语句时的结构示意图;41.图4所示为本发明的二进制日志文件经解析后的eventdata内容示意图。42.图5所示为本发明转换单元对拉取的日志文件进行缓存时的缓存代码示意图。43.图6所示为本发明提供的数据传输系统的cpu使用状况图;44.图7所示为本发明提供的数据传输系统的内存占用使用状况图;45.图8所示为本发明提供的数据传输系统的执行时间状况图。具体实施方式46.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。47.在本发明的描述中,需要说明的是,术语“上”、“下”、“内”、“外”“前端”、“后端”、“两端”、“一端”、“另一端”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。48.在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“设置有”、“连接”等,应做广义理解,例如“连接”,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。49.[第一实施例][0050]如图1所示为本发明提供的第一实施例,在本实施例中,数据库管理系统选用关系型数据库管理系统mysql,目标源数据库选用分析型数据库olap、mq、elaticsearch、redis中的至少一种;与之对应地,日志文件为mysql中的二进制日志文件。[0051]本实施例所提供的具体方案如下:[0052]本实施例提供一种数据传输系统,系统包括数据传输模块,数据传输模块包括:[0053]线程读取单元,线程读取单元与数据库管理系统mysql信号连接,线程读取单元与数据库管理系统mysql经认证后建立连接并拉取其中的日志文件;在本实施例中,线程读取单元使用用户名和密码与数据库管理系统mysql进行认证,当认证成功后,即可以从数据库管理系统mysql中拉取所需日志文件;[0054]转换单元,转换单元连接线程读取单元,转换单元将线程读取单元拉取的日志文件进行解析及缓存后组装为目标源对象;[0055]在本实施例中,线程读取单元根据订阅规则拉取所需的日志文件,订阅规则可以通过选定二进制日志文件的名称和位点信息,以过滤出其中所需拉取的二进制日志文件信息,而排除掉其中不需拉取的二进制日志文件信息,例如当订阅规则为选取table_a时,则对table_b的数据过滤掉不处理。[0056]在本实施例中,转换单元对拉取的日志文件进行解析时,根据数据库名称及表格名称解析出对应元数据。关系型数据库管理系统mysql的二进制日志文件在row模式下,数据的变化值记录在eventdata中,例如当mysql中执行如图3所示的insert语句时,二进制日志文件经解析后的eventdata内容如图4所示。[0057]从图4中可以看出,eventdata中没有表格的元数据信息字段的名称`id`,`cid`,`sid`,`order_type`,`parent_order_str`等,只有值。而将eventdata内容转化成insert语句就需要字段的名称,如果不带上字段名称,insert语句在表格增加字段后对历史未消费的二进制日志文件就会发生字段错位。现有技术中通过数据库名称与表格名称拼接接合的方式到源数据库中查询出表格的元数据信息,如果每次遇到这样的数据都需要查询源数据库,而源数据库无法支撑如此高频的查询,数据传输效率上也无法满足性能,因此需要把表格的元数据信息保存下来,也只有内存缓存才能满足如此高频查询需求。[0058]由于每个租户可以独享一个数据库,每个数据库中有400张表格,saas模式下虽然数据隔离,但业务功能是一样的。因此租户不同,但400张表格结构是相互一致的,因此理论上一张表只要缓存1份,而无需缓存500份。如下表1所示为订单表sales_order,表结构如下:[0059]表1订单表sales_order[0060]字段名称idcidorder_strsalesman_idoperator_idtotal_amountnotestore_id...字段类型bigintbigintvarcharbigintbigintdecimalvarcharbigint...字段备注主键租户id订单编号业务员操作员订单总金额备注门店id...[0061]其中,[0062]租户a对应的数据库为:tenant_10001,table:sales_order[0063]租户b对应的数据库为:tenant_10002,table:sales_order[0064]现有技术中采用canal的缓存模型所采用的缓存方式为:通过key由数据库名称(例如tenant_10001)拼接表格的名称(sales_order),缓存了500份,如下表2所示:[0065]表2现有技术中采用canal的缓存模型所采用的缓存方式表[0066]keyvaluetenant_10001:sales_ordersales_order的metadata对象tenant_10002:sales_ordersales_order的metadata对象...sales_order的metadata对象tenant_10500:sales_ordersales_order的metadata对象[0067]由表2可以看出,由tenant_10001:sales_order至tenant_10500:sales_order共需缓存500份。[0068]而在本实施例中,转换单元对拉取的日志文件进行缓存时,通过将第一字段与第二字段拼接的方式对解析出的对应元数据进行缓存,本实施例中第一字段为数据库抽象名称(即tenant),第二字段为表格名称(即sales_order)。key由数据库的抽象名称拼接表格的名称,因此仅需缓存1份,如下表3所示。[0069]表3本发明采用的第一缓存方式表[0070]keyvaluetenant:sales_ordersales_order的metadata对象[0071]由表3所示,将所有租户表格的元数据实现共享,因此现有技术中共20万张表格的缓存,在本技术中采用的第一缓存方式下只需要缓存400张。[0072]作为本实施例的一种优选实施方式,转换单元对拉取的日志文件进行缓存时,通过将第一字段、第二字段及附加字段拼接的方式对解析出的对应元数据进行缓存,本实施例中第一字段为数据库抽象名称(即tenant),第二字段为表格名称(即sales_order),附加字段为灰度字段参数(灰度字段即order_type,灰度字段参数即灰度字段的数量),根据数据库抽象名称、表格名称及附加字段对解析出的对应元数据进行缓存,在本实施例中,附加字段选用灰度字段参数,本实施例灰度字段参数为灰度字段的数量(即表5中sales_order后的数字9),而非灰度字段的数量(即表5中sales_order后的数字8),本领域技术人员根据实际使用需求也可以选用其他参数。[0073]当tenant_10001租户处于灰度发布,只需要增加一个字段order_type,如下表4所示,[0074]表4本发明采用的第二缓存方式的订单表sales_order[0075]字段名称idcidorder_strsalesman_idoperator_idtotal_amountnotestore_idorder_type字段类型bigintbigintvarcharbigintbigintdecimalvarcharbigintbigint[0076]如表4所示,通过增加一个灰度字段order_type,租户tenant_10001和其他499家租户的表的结构灰度期间就会存在差异。[0077]此时,在该缓存方式下,通过key由数据库抽象名称拼接表格的名称再加上所有字段的个数columns.length(),非灰度租户通过key=tenant:sales_order:8找到对应元数据信息,灰度租户通过key=tenant:sales_order:9找到对应元数据信息,如下表5所示。[0078]表5本发明采用的第二缓存方式表[0079]keyvaluetenant:sales_order:8sales_order的非灰度metadata对象tenant:sales_order:9sales_order的灰度的metadata对象[0080]当灰度结束,所有租户的订单表sales_order都升级成9个字段后,8个字段的缓存得以释放。因此,在第二缓存方式下,灰度期间共需要缓存800张表,非灰度期间共缓存400张表,因而大大节省了内存。[0081]本实施例中,转换单元对拉取的日志文件进行缓存时的缓存代码如图5所示。[0082]在本实施例中,数据传输模块还包括线程写入单元,线程写入单元的一端连接转换单元,另一端与目标源数据库信号连接,线程写入单元将组装完成的目标源对象送入到目标源数据库中;本实施例中,线程写入单元的另一端同时与多个目标源数据库信号连接,例如olap、mq、rocketmq、nats、elasticsearch、redis等分析型数据库,同时支持写入到多目标源,通过多目标源数据库的并行使用提供了高效的并发机制,适合处理高并发和大规模并行的任务。[0083]本发明通过线程读取单元和线程写入单元实现运行时的元数据的调度和管理,能够智能地将线程中的任务合理地分配给每个cpu,有效的利用cpu从而提升执行效率。同时垃圾回收执行效率高,本发明中数据传输模块的垃圾回收速率在纳秒级,此外,本发明的内存能够及时回收,提高了数据传输时的内存使用效率,合理使用内存从而更加节省内存。[0084]本发明所提供的数据传输系统与canal所占资源的对比如下表6所示,[0085]表6canal与本发明提供的数据传输系统所占资源对比表[0086]mysql数量服务器数量实际内存消耗最大延迟canal1232g*3台24g*33000ms数据传输系统1216g*1台500m1500ms[0087]从表中可以明显看出,本发明提供的数据传输系统与canal对比,在订阅相同数量的mysql时,服务器数量、实际消耗内存、及最大延迟相比于canal,均得到显著降低。[0088]如图6所示为本发明提供的数据传输系统的cpu使用状况图,如图7所示为本发明提供的数据传输系统的内存占用使用状况图,从图中可以看出实际消耗内存保持在500m左右;如图8所示为本发明提供的数据传输系统的执行时间状况图,从图中可以看出执行时间保持在纳秒级别。[0089]本发明所提供的数据传输系统使得硬件成本大幅度下降,从资源使用率上看一个数据传输模块的节点可支撑40-50个mysql,相比于canal,本发明所提供的数据传输系统成本投入仅为canal的20分之一。[0090][第二实施例][0091]如图2所示,本发明第二实施例还提供一种数据传输系统的控制方法,包括以下步骤:[0092]s1:启动数据传输模块;[0093]s2:配置数据库管理系统;[0094]s3:配置数据库管理系统中的订阅规则;[0095]s4:配置目标源数据库;[0096]s5:与数据库管理系统经认证后建立连接;[0097]s6:根据订阅规则拉取数据库管理系统中的日志文件;[0098]s7:对拉取的日志文件进行解析;[0099]s8:根据数据库抽象名称及表格名称,或数据库抽象名称、表格名称及附加字段对解析出的对应元数据进行缓存;[0100]s9:将缓存的元数据组装为目标源对象;[0101]s10:将组装后的目标源对象送入对应的目标源数据库。[0102]对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。当前第1页12当前第1页12
技术特征:
1.一种数据传输系统,其特征在于:所述系统包括数据传输模块,所述数据传输模块包括:线程读取单元,所述线程读取单元与数据库管理系统信号连接,所述线程读取单元与数据库管理系统经认证后建立连接并拉取其中的日志文件;转换单元,所述转换单元连接线程读取单元,所述转换单元将线程读取单元拉取的日志文件进行解析及缓存后组装为目标源对象;线程写入单元,所述线程写入单元的一端连接转换单元,另一端与目标源数据库信号连接,所述线程写入单元将组装完成的目标源对象送入到目标源数据库中;所述转换单元对拉取的日志文件进行缓存时,通过将第一字段、第二字段及附加字段拼接的方式对解析出的对应元数据进行缓存。2.根据权利要求1所述的一种数据传输系统,其特征在于:所述线程读取单元使用用户名和密码与数据库管理系统进行认证。3.根据权利要求1所述的一种数据传输系统,其特征在于:所述线程读取单元根据订阅规则拉取所需的日志文件。4.根据权利要求1所述的一种数据传输系统,其特征在于:所述转换单元对拉取的日志文件进行解析时,根据数据库名称及表格名称解析出对应元数据。5.根据权利要求1所述的一种数据传输系统,其特征在于:所述第一字段为数据库抽象名称。6.根据权利要求1所述的一种数据传输系统,其特征在于:所述第二字段为表格名称。7.根据权利要求1所述的一种数据传输系统,其特征在于:所述附加字段选用灰度字段参数。8.根据权利要求1所述的一种数据传输系统,其特征在于:所述线程写入单元的另一端同时与多个目标源数据库信号连接。9.根据权利要求1所述的一种数据传输系统,其特征在于:所述数据库管理系统选用关系型数据库管理系统mysql,所述目标源数据库选用分析型数据库olap、mq、elaticsearch、redis中的至少一种。10.根据权利要求1-9中任一项所述的一种数据传输系统的控制方法,其特征在于:包括以下步骤:s1:启动数据传输模块;s2:配置数据库管理系统;s3:配置数据库管理系统中的订阅规则;s4:配置目标源数据库;s5:与数据库管理系统经认证后建立连接;s6:根据订阅规则拉取数据库管理系统中的日志文件;s7:对拉取的日志文件进行解析;s8:根据数据库抽象名称及表格名称,或数据库抽象名称、表格名称及附加字段对解析出的对应元数据进行缓存;s9:将缓存的元数据组装为目标源对象;s10:将组装后的目标源对象送入对应的目标源数据库。

技术总结
本发明提供一种数据传输系统及其控制方法,所述系统包括数据传输模块,所述数据传输模块包括:线程读取单元,所述线程读取单元与数据库管理系统信号连接,所述线程读取单元与数据库管理系统经认证后建立连接并拉取其中的日志文件;转换单元,所述转换单元连接线程读取单元,所述转换单元将线程读取单元拉取的日志文件进行解析及缓存后组装为目标源对象;线程写入单元,所述线程写入单元的一端连接转换单元,另一端与目标源数据库信号连接,所述线程写入单元将组装完成的目标源对象送入到目标源数据库中;适合处理高并发和大规模并行的任务;使得其执行效率比Java高,尤其在CPU密集型的场景下表现更为突出,拥有更高的执行效率。率。率。


技术研发人员:汤定一
受保护的技术使用者:舟谱数据技术南京有限公司
技术研发日:2023.07.06
技术公布日:2023/8/13
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐