一种基于任务切分的微服务水利数据共享交换方法与流程
未命名
08-13
阅读:84
评论:0
1.本发明涉及大数据与云计算领域,具体地说它是一种基于任务切分的微服务水利数据共享交换方法。
背景技术:
2.水利数据是指水利行业产生的数据,主要包括水利业务和水利政务数据。通过对水利数据的有效管理和挖掘,可以大力推进和实现水利业务的精细化管理,提高水利工作的决策效率和科学化程度。近年来,水利行业以“水利信息化带动水利现代化”速度明显加快,但由于建设时期及所属项目类别、管理单位地域的差异,各系统数据库技术不一、各系统间数据兼容和集成度低,由此形成了一个个信息孤岛,既影响了现有系统的有效运行,也影响了各地域间相互配合做出科学的水利工作决策的效率;水利业务数据通过部署在现场或生产环境的传感器、闸站监控等设备获得,由于这些设备时刻以秒、分钟为单位记录数据,因此水利数据具有海量巨大、时效性强等特点;现有方法多是基于批次号进行全量或批量离线复制以及单纯线上同步方法(如jdbc同步、接口同步方式),但由于不同地区、不同机构间路途遥远且可能应用多种不同的数据库管理系统,如mysql、oracle、达梦,采用离线复制的方法可能会出现工作人员旅途劳顿、线程存储介质兼容性低等问题,导致无法适用跨地区、跨机构实时共享水利数据。若单纯使用在线同步则未考虑水利数据量大、时效性强的特点,由于未作并发处理,则难以符合巨量数据同步要求,导致同步速度慢、数据同步效率十分低下,容易造成更新不及时和数据不一致的问题,影响数据应用结果(如,若是巡视检查重要设备的数据同步延迟就可能对后续抢修产生影响;若是某地区雨水情数据就可能造成雨水情数据发布不及时导致实时水量调度策略出现误差等情况)。目前尚未有一套高效实施的涉及跨地区,跨机构(水利厅、省水文局、工程沿线水库管理单位等)的共享水利数据交换方法;因此,开发一种能实现跨地区、跨机构共享水利数据且同步效率高的交换方法很有必要。
技术实现要素:
3.本发明的目的是为了提供一种基于任务切分的微服务水利数据共享交换方法,通过数据集成实现信息互联互通,为数据分析应用提供完整数据,能实现跨地区,跨机构实时共享水利数据,基于同步任务切片及微服务技术,并发处理同步任务、提高数据同步效率;用以解决因数据更新周期慢造成的更新不及时和数据不一致的问题,打破信息壁垒,解决信息孤岛、数据共享问题。
4.为了实现上述目的,本发明的技术方案为:一种基于任务切分的微服务水利数据共享交换方法,其特征在于:包括如下步骤,步骤s1,配置动态配置发布方及接收方的数据源及数据源链接;步骤s2,基于数据交换模块建立数据同步任务;本过程中接受数据的是接收方,提
供数据的是发布方;数据交换模块针对步骤s1中所涉及的库表构建主动触发的数据同步任务;步骤s3,数据交换模块进行任务分片、监听、及任务委派;数据交换模块包括任务分片单元、任务监听单元、任务执行单元;任务分片单元根据不同的源端切分策略,将步骤s2中涉及的较大数据同步任务进行分片形成较小的数据同步任务,并由任务监听单元监听后委派给不同的任务执行单元进行数据同步工作;步骤s4,开放接口;将数据同步过程封装为支持动态配置的api接口,以供数据接收方进行调用,将数据同步过程封装成接口,以http json api服务的形式进行请求;步骤s5,执行同步;接收方启动定时任务,定时请求步骤s4中涉及接口拉取发布方数据或接收方主动请求接口拉取发布方数据;定时任务启动后(其中,任务是指接收方定时请求和拉取发布方数据库数据),使用阅读器reader从发布方源数据库读取数据后执行步骤s3经任务分片、监听、委派,最后使用写入器writer将数据库写入接收方目标数据库。
5.在上述技术方案中,在步骤s1中,配置动态配置发布方及接收方的数据源及数据源链接,具体方法包括:当一个新的数据发布方或接受方接入系统时,将其数据库链接方式及数据库配置项注册并写入到数据交换平台中;配置项包括数据库类型、数据库端口、数据库用户和访问密码;当完成此配置后,该新加入的数据发布方或接收方的数据源为可用状态。
6.在上述技术方案中,在步骤s2中,数据同步任务包括:数据传输任务:数据交换模块即时从数据发布方源数据库请求读取数据、处理并请求写入数据接受方数据库的一系列操作算作一次数据同步任务;定时库表同步任务:按照每天、每小时、每分钟设定时间间隔,定时进行数据传输任务。
7.在上述技术方案中,数据同步任务采用framework+plugin架构构建;将数据源读取和写入抽象成为阅读器/写入器(reader/writer)插件,纳入到整个同步框架中;阅读器reader支持mysql、oracle、sqlserver、达梦以及通用dbms,支持通用化配置api接口作为数据源,对于非上述数据库管理系统的其他数据库管理系统,支持通过自定义编写阅读器reader处理类程序进行插件化接入;写入器writer支持mysql、oracle、sqlserver、达梦以及通用dbms。
8.在上述技术方案中,在步骤s3中,任务分片单元进行任务分片,具体方法为:s311:使用阅读器reader从发布方源数据库读取数据后数据交换平台实例的任务分片单元启动一个工作生成器进程来完成作业同步任务的分片;s312:根据不同的源端切分策略,将工作job切分成多个小的子任务task,以加快处理速度;
具体而言,切分子任务遵循以下规律:;其中:表示切分任务所含的数据量规模,表示单次接口请求同步的数据量大小,表示阅读器reader的不同数据源端口,,d
database
表示直接从发布方数据库同步数据,d
api
表示通过步骤s4中开放的接口请求数据;s313:完成任务切片后使用任务分派模块将切分好的任务输入任务监听单元。
9.在上述技术方案中,在步骤s3中,任务监听单元进行任务监听,具体方法为:任务监听单元接收任务分片单元处理好的分片任务,并将拆分成的子任务压入到任务队列重新组合,组装成任务组;当一个任务的工作组建立完毕后,即进行任务委派。
10.在上述技术方案中,在步骤s3中,任务执行单元进行任务委派,具体方法为:任务组通过redis实现对任务的分组,根据先到先服务策略,将同一时间到达的子任务分为一组。
11.在上述技术方案中,在redis中自主设置任务优先级策略,优先级别高的任务会优先分配运行资源,具体方法为:根据实际需要将任务区分为多个优先级,以优先级由高至低的顺序,依次将任务逐个下发至当前任务负载情况较轻的任务执行单元中、进行数据同步工作。
12.需要说明书的是:步骤s1具体为建立用户使用界面,用户指定动态写入发布方及接收方的数据源及数据源链接;需要说明的是,此步骤并不是具体的配置,而是指具有用户操作界面可以指一句用户意愿基于用户界面配置数据库参数的以及原链接的过程;本步骤支持动态配置非特定渠道,可动态添加调整删除,甚至修改的具有用户配置界面的过程;步骤s2具体为建立守护进程,指定守护进程应当调度的定时同步任务(即监听是否有需要进行同步);需要说明的是同步任务是定时任务,类似于守护进程,不可以理解为同步数据的过程;本步骤中定时同步任务包括定时库表同步任务(按照每天、每小时、每分钟设定时间间隔,定时进行数据传输任务;需要说明的是定时库表同步任务,并不是具体的任务同步过程,而是指按照特定时间触发具体同步工程的计时器)、启动守护线程(启动守护线程,作为定时同步任务的容器,按照定时任务,触发数据传输任务)、数据传输任务(数据交换模块即时从数据发布方源数据库请求读取数据、处理并请求写入数据接受方数据库的一系列操作算作一次数据同步任务,是具体的同步过程);在步骤s3中,需要说明的是:任务的分片、监听、委派不可以理解为简单的进行多步骤并发计算或异步计算过程(即分配不同线程的并发技术),而是指在包含多台机器的集群上分布式过程;在步骤s313中,由于此步骤基于分布式过程而非简单本机异步操作或cpu并发过程,因此此步骤中需要考虑负载均衡和服务发现过程,包含子步骤:1)将处理好的子任务加入等待队列,防止一时间子任务数量过多导致服务器宕机;2)软负载均衡分配服务器,并记录分配服务器地址;在任务监听单元进行任务监听时,任务队列和前面的等待对量不可理解为重复工作。等待队列防止服务器宕机,任务队列除了防止宕机意外,还可暂存数据;需要说明的是:任务的分片、监听、委派不可以理解为简单的进行多步骤并发计算或异
步计算过程(即分配不同线程的并发技术),而是指在包含多台机器的集群上分布式过程;在任务执行单元进行任务委派时,根据先到先服务策略,将同一时间到达的子任务分为一组后根据任务分片单元进行任务分片时计算出的服务器记录,实现http服务转发。
13.本发明具有如下优点:通过数据集成实现信息互联互通,为数据分析应用提供完整数据,能实现跨地区、跨机构共享水利数据(本发明通过任务分片将大任务切分成多个可以并发执行的小任务,经过负载均衡算法可以在多台服务器上并发执行,因此能实现信息互联互通、实现跨地区、跨机构实时共享水利数据,且水利数据更新周期短、更新速度快;此外由于本发明算法支持多种数据库格式,因此可以解决数据不一致问题),本发明基于同步任务切片及微服务技术,并发处理同步任务、提高数据同步效率;用以解决因数据更新周期慢造成的更新不及时和数据不一致的问题,打破信息壁垒,解决信息孤岛、数据共享问题。
附图说明
14.图1为本发明的整体架构图;图2为本发明中的数据交换模块的框架图;图3为本发明的工艺流程图;在图1中,子任务集表示经过后分片后需要并发执行的多个子同步任务,任务实例表示正在并发执行的多个子任务。
实施方式
15.下面结合附图详细说明本发明的实施情况,但它们并不构成对本发明的限定,仅作举例而已。同时通过说明使本发明的优点更加清楚和容易理解。
16.参阅附图可知:一种基于任务切分的微服务水利数据共享交换方法,所涉及的生产环境包括数据发布方及数据接收方、数据交换模块;本发明所述基于任务切分的微服务水利数据共享交换方法将数据源读取和写入抽象成为reader插件和writer插件;发布方源数据库通过reader与数据交换模块进行数据交换;数据接收方通过writer与接收方目标库进行数据交换;具体方法,包括如下步骤,步骤s1,配置动态配置发布方及接收方的数据源及数据源链接;步骤s2,基于数据交换模块建立数据同步任务;本过程中接受数据的是接收方,提供数据的是发布方;数据交换模块针对步骤s1中所涉及的库表构建可以主动触发的数据同步任务;步骤s3,数据交换模块进行任务分片、监听、及任务委派;数据交换模块包括任务分片单元、任务监听单元、任务执行单元;任务分片单元根据不同的源端切分策略,将步骤s2中涉及的较大数据(较大数据任务是指单次请求需要同步数据量超过一千条的同步任务)同步任务进行分片形成较小的数据同步任务(较小数据任务是指单次请求需要同步数据量不超过一千条的同步任务),并由任务监听单元监听后委派给不同的任务执行单元进行数据同步工作,本过程中负责切分
任务的是任务分片单元,监听任务的是任务监听单元,执行任务的是任务执行单元;步骤s4,开放接口;将数据同步过程封装为支持动态配置的api接口,以供数据接收方进行调用,将数据同步过程封装成接口,以http json api服务的形式进行请求;设置接口时可以通过sql语句指定,数据库、数据表、字段等参与同步的参数进行细粒度同步;本发明基于步骤s3的同步任务切片及步骤s4的微服务技术,并发处理同步任务、提高数据同步效率;步骤s5,执行同步;接收方启动定时任务,定时请求步骤s4中涉及接口拉取发布方数据或接收方主动请求接口拉取发布方数据;定时任务启动后(其中,任务是指接收方定时请求和拉取发布方数据库数据),会使用阅读器reader从发布方源数据库读取数据后执行步骤s3经任务分片、监听、委派,最后使用写入器writer将数据库写入接收方目标数据库。
17.进一步地,在步骤s1中,配置动态配置发布方及接收方的数据源及数据源链接,为不同数据库源、不同数据格式提供数据自由交换服务提供数据库基础,具体方法包括:当一个新的数据发布方或接受方接入系统时,将其数据库链接方式及数据库配置项注册并写入到数据交换平台中;配置项包括数据库类型、数据库端口、数据库用户和访问密码等;当完成此配置后,该新加入的数据发布方或接收方的数据源才是可用状态。
18.进一步地,在步骤s2中,数据同步任务包括:数据传输任务:数据交换模块即时从数据发布方源数据库请求读取数据、处理并请求写入数据接受方数据库的一系列操作算作一次数据同步任务;定时库表同步任务:按照每天、每小时、每分钟设定时间间隔,定时进行数据传输任务。
19.进一步地,数据同步任务采用framework+plugin架构构建;将数据源读取和写入抽象成为阅读器/写入器(reader/writer)插件,纳入到整个同步框架中;阅读器reader支持mysql、oracle、sqlserver、达梦以及通用dbms(支持所有关系型数据库),除此之外支持通用化配置api接口作为数据源,本发明包括但不限于上述提到的几种数据库管理系统的其他数据库管理系统,对于非上述数据库管理系统的其他数据库管理系统,支持通过自定义编写reader处理类程序进行插件化接入;写入器writer支持mysql、oracle、sqlserver、达梦以及通用dbms(支持所有关系型数据库);由于本发明算法支持多种数据库格式,因此可以解决数据不一致问题。
20.进一步地,在步骤s3中,任务分片单元进行任务分片,具体方法为:s311:使用阅读器reader从发布方源数据库读取数据后数据交换平台实例的任务分片单元启动一个工作生成器(jobbuilder)进程来完成作业同步任务的分片;s312:根据不同的源端切分策略,将工作job切分成多个小的子任务(task),以加快处理速度;具体而言,切分子任务遵循以下规律:
;其中:表示切分任务所含的数据量规模,表示单次接口请求同步的数据量大小,表示阅读器reader的不同数据源端口,,d
database
表示直接从发布方数据库同步数据,d
api
表示通过步骤s4中开放的接口请求数据;s313:完成任务切片后使用任务分派模块(jobtasksend)将切分好的任务输入任务监听单元;本发明通过任务分片将大任务切分成多个可以并发执行的小任务,经过负载均衡算法可以在多台服务器上并发执行(即通过数据集成实现信息互联互通,为数据分析应用提供完整数据),能实现跨地区、跨机构共享水利数据,且水利数据更新周期短、更新速度快。
21.进一步地,在步骤s3中,任务监听单元进行任务监听,具体方法为:任务监听单元接收任务分片单元处理好的分片任务,并将拆分成的子任务task压入到任务队列重新组合,组装成任务组(taskgroup);当一个任务的工作组建立完毕后,即进行任务委派。
22.更进一步地,在步骤s3中,任务执行单元进行任务委派,具体方法为:任务组(taskgroup)可以通过redis(remote dictionary server,远程字典服务)管理模块实现对任务的分组,其中任务可以是多个同步任务,根据先到先服务策略,将同一时间到达的子任务分为一组。
23.更进一步地,在redis中自主设置任务优先级策略,优先级别高的任务会优先分配运行资源,具体方法为:可以根据实际需要将任务区分为多个优先级,以优先级由高至低的顺序,依次将任务逐个下发至当前任务负载情况较轻(也就是同步任务数量最少)的任务执行单元中、进行数据同步工作。
24.实施例:本实施例基于鄂北水资源配置工程一期,需要的所有数据均来源于鄂北地区水资源配置建设管理局、湖北省水利厅信息中心数据、政府部门数据。此项目数据量庞大,涉及单位众多,覆盖面积广,包含襄阳、随州、孝感三市;由于水利数据更新周期短、更新速度快,大量传感器每分钟都会产生多条数据,导致数据量巨大,若使用传统离线复制的数据库同步方法难以存储巨量水利数据、则需要携带存储巨量水利数据储存介质,十分不便,且各单位间距离遥远导致数据同步工作人员旅途劳顿、难以及时进行离线数据同步。若单纯使用jdbc在线同步办法,则由于没有进行数据分片或并发执行同步将会导致数据同步效率低下,不适用于时效性较强的水利数据,影响数据应用结果(如,若是巡视检查重要设备的数据同步延迟就可能对后续抢修产生影响;若是某地区雨水情数据就可能造成雨水情数据发布不及时导致实时水量调度策略出现误差)。
25.现本实施例采用本发明所述基于任务切分的微服务水利数据共享交换方法,可以实时同步、实现跨地区、跨机构共享的数据交换;
它包含两种工作方式1)jdbc数据库同步;2)以微服务的方式对外发布接口服务;需要说明的是,jdbc(java database connectivity,java数据库连接)是一种用于执行sql语句的java api,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成;在本实施例中,基于任务切分的微服务水利数据共享交换方法是基于上面提到的步骤s1-s4过程,即是将上述过程进行实施:1)步骤s1具体实施:建立maven项目并构建所属maven项目的源数据库,所述项目的源数据库作为数据的接收方;上述提到maven是一种可以通过描述信息文件(xml文件)管理项目构建及其报告和文档的管理工具,构建maven项目的主要目的就是集成springboot、springcloud(业界主流web开源服务框架),并通过其支持的yaml文件配置所述项目工程,构建微服务项目;在本实施例步骤中,由于项目需要管理的数据库数量众多且修改频繁,考虑到安全问题,并不能将其关节信息明文写入配置文件,因此需要使用妥善保存。将数据接收方和发布方数据库参数(所在ip地址、数据库技术参数、数据库读取协议及连接方式、数据表名称等)存入所述项目的源数据库;具体地:用户或者实施人只需要在前端代码的可视化界面上填写数据源的相关信息以及数据库参数等基础配置信息上传到后台并写入所述maven项目数据库,以此动态配置数据发布方数据库参数,并通过后端md5密码加密技术保证数据安全;2)步骤s2具体实施:根据s1中已经写入的各类数据接收方和发布方数据库参数建立数据同步任务,实施本步骤时,所述项目的源数据库至少动态配置两条数据库参数,分别作为建立定时任务所需的数据接收方和数据发布方;所述定时任务的目的就是按照一定时间间隔触发从数据库发布方到数据库接收方的方法,包含两种:第一种是数据传输任务,第二种是定时库表同步任务。具体地:数据传输任务的数据源是发布方数据库,通过jdbc进行数据同步,这时数据发布方的数据源表示为。定时库表同步任务则是将请求参数和数据转换为json并通过接口请求对应库表的数据,这时数据发布方的数据源表示为;在本实施例步骤中,根据获取到的至少两条数据库参数指定数据发布方和接收方,创建从数据库发布方到数据库接收方的定时任务,定时任务的周期通过cron表达式指定;具体地:用户或者实施人只需要在前端代码的可视化界面上填写定时任务信息,包括发布方、接收方数据库名称,cron表达式,定时任务表名称等信息,上传到后台并写入所述maven项目数据库,此后系统将根据cron表达式调用数据请求接口或jdbc进行数据同步;为了防止不同的数据同步定时任务之间存在相同数据库源进而导致数据混淆,还应该对定时任务额外做了限制,要求在指定定时任务除指定必要数据源外还必须指定对应数据库表;
具体实施步骤s3:本实施例中,s3过程描述的是s2建立定时任务被触发后执行的一系列过程:首先,根据定时任务配置的任务时间和指定的对应数据源,使用reader从发布方数据库对应库表中读取数据,然后根据数据发布方的数据源指定数据切分策略,将一次数据同步任务需要同步的数据量切分成多片,每片的最大规模为1000条,对应一个同步子任务;所述reader读取采用面向对象的代码方式,每次读取都会实例化render对象,该reader对象包含了数据结构信息、链接数据源的参数(如数据库url)、数据源的数据格式,如jdbc或json。应用时可以针对不同的数据库技术,重写reader的读取方式,以适配多种数据库产品;所述数据切分策略遵循以下规则:;其中:表示切分任务所含的数据量规模,表示单次接口请求同步的数据量大小,表示reader的不同数据源端口,,切分出的数据片数等于子任务数量;例如,当一次同步任务的数据量介于2000至3000条时,就将数据按照每片数据1000条的规模进行切分,共计切分为3片,建立3个同步子任务。数据切分完成后,后端立即获取相关分片信息,将数据送入任务等待队列并基于数据监听单元进行数据监听;本实施例中的任务等待队列的目的是暂存切分出的子任务,由于同一时间可能出现大量子任务导致超出服务器最大处理能力,本实施例采取redis技术暂存任务,避免出现大量数据挤兑服务器资源导致服务器宕机;数据监听单元的目的是,本实施例中基于redis监听队列模式实现。使用java语言创建jobtasklistener(消息监听器),消息监听器相当于生产者-消费者模式中的消费者,负责取出消息并送入线程池执行任务委派,所述项目可以通过控制线程池来控制队列监听即任务委派速率;需要说明的是redis是一个开源(bsd许可)的内存数据结构存储,可用作nosql数据库、缓存和消息代理。它支持如字符串,散列,列表,集合,排序集合与范围查询,位图,超日志,地理空间索引与半径查询和流模式;当消息监听器监听到队列变化后,即进行任务委派,任务委派根据负载均衡算法下发至当前任务负载情况较轻、机器性能较好,同步任务数量最少的任务执行单元中;如图2所示:通过步骤s1-s3,将用户填写的核心配置参数抽象成对象,用户在可视化界面上完成核心配置参数的配置,并生成对应的定时任务,在到调用数据同步算法,用户只需要简单填写多个配置参数即可,不仅简化了用户配置的操作,而且大幅度降低了人工修改配置文件时出错的概率,并且也减少了用户熟悉各种配置文件的学习成本;具体实施步骤s4:
将数据同步过程形成支持动态配置的api接口,以供数据接收方进行调用,将数据同步过程s3封装成接口,以http json api服务的形式进行请求。用户和实施人只需要通过指定sql语句,数据库、数据表、字段等参与同步的参数进行就细粒度同步;具体实施步骤s5:定时请求中涉及接口拉取发布方数据或接收方主动请求接口拉取发布方数据或使用jdbc传输数据;本实施例采用本发明方法,且本发明能实现跨地区、跨机构共享的数据交换,能及时进行离线数据同步,数据同步效率高;解决了地域空间问题导致的跨机构、跨地区问题(如现有技术传统离线复制的数据库同步方法难以存储巨量水利数据,且各单位间距离遥远导致数据同步工作人员旅途劳顿、难以及时进行离线数据同步的问题);且本发明采用任务切片、监听、委派可以将同步任务(大数据量)拆分成多个可以并发执行的子任务(小数据集),因此可以节约时间,提高数据同步效率,能实现实时同步,适用于时效性较强的水利数据;解决了现有线上同步方法(如jdbc同步、接口同步方式),同步速度慢且由于数据量巨大导致数据同步效率十分低下,容易造成更新不及时和数据不一致,影响数据应用结果的问题。
26.本实施例还可以对数据监听队列的选型、任务委派负载均衡进行扩展,前者扩展也就是不使用redis而使用其他更高性能的消息队列,后者扩展则是应对不同场景的业务扩展,例如当图2中设计的交换机实例存在变动平凡的情况就可以使用hash算法进行负载均衡。需要说明的是,在分布式微服务框架中,数据消息队列是应当满足“消峰填谷”的功能,负载均衡算法需要根据实际业务场景和服务器状态做出动态调整。
27.其它未说明的部分均属于现有技术。
技术特征:
1.一种基于任务切分的微服务水利数据共享交换方法,其特征在于:基于同步任务切片及微服务技术,并发处理同步任务,通过任务分片将大任务切分成多个可以并发执行的小任务,经过负载均衡算法在多台服务器上并发执行,实现信息互联互通、实现跨地区、跨机构实时共享水利数据,提高数据同步效率;具体方法,包括如下步骤,步骤s1,配置动态配置发布方及接收方的数据源及数据源链接;步骤s2,基于数据交换模块建立数据同步任务;本过程中接受数据的是接收方,提供数据的是发布方;数据交换模块针对步骤s1中所涉及的库表构建主动触发的数据同步任务;步骤s3,数据交换模块进行任务分片、监听、及任务委派;数据交换模块包括任务分片单元、任务监听单元、任务执行单元;任务分片单元根据不同的源端切分策略,将步骤s2中涉及的较大数据同步任务进行分片形成较小的数据同步任务,并由任务监听单元监听后委派给不同的任务执行单元进行数据同步工作;在步骤s3中,任务监听单元进行任务监听,具体方法为:任务监听单元接收任务分片单元处理好的分片任务,并将拆分成的子任务压入到任务队列重新组合,组装成任务组;当一个任务的工作组建立完毕后,即进行任务委派;步骤s4,开放接口;将数据同步过程封装为支持动态配置的api接口,以供数据接收方进行调用,将数据同步过程封装成接口,以http json api服务的形式进行请求;步骤s5,执行同步;接收方启动定时任务,定时请求步骤s4中涉及接口拉取发布方数据或接收方主动请求接口拉取发布方数据;任务启动后,使用阅读器reader从发布方源数据库读取数据后执行步骤s3经任务分片、监听、委派,最后使用写入器writer将数据库写入接收方目标数据库。2.根据权利要求1所述的基于任务切分的微服务水利数据共享交换方法,其特征在于:在步骤s1中,配置动态配置发布方及接收方的数据源及数据源链接,具体方法包括:当一个新的数据发布方或接受方接入系统时,将其数据库链接方式及数据库配置项注册并写入到数据交换平台中;配置项包括数据库类型、数据库端口、数据库用户和访问密码;当完成此配置后,该新加入的数据发布方或接收方的数据源为可用状态。3.根据权利要求1或2所述的基于任务切分的微服务水利数据共享交换方法,其特征在于:在步骤s2中,数据同步任务包括:数据传输任务:数据交换模块即时从数据发布方源数据库请求读取数据、处理并请求写入数据接受方数据库的一系列操作算作一次数据同步任务;定时库表同步任务:按照每天、每小时、每分钟设定时间间隔,定时进行数据传输任务。4.根据权利要求3所述的基于任务切分的微服务水利数据共享交换方法,其特征在于:数据同步任务采用framework+plugin架构构建;将数据源读取和写入抽象成为阅读器/写入器插件,纳入到整个同步框架中;
阅读器reader支持mysql、oracle、sqlserver、达梦以及通用dbms,支持通用化配置api接口作为数据源,对于非上述数据库管理系统的其他数据库管理系统,支持通过自定义编写阅读器reader处理类程序进行插件化接入;写入器writer支持mysql、oracle、sqlserver、达梦以及通用dbms。5.根据权利要求4所述的基于任务切分的微服务水利数据共享交换方法,其特征在于:在步骤s3中,任务分片单元进行任务分片,具体方法为:s311:使用阅读器reader从发布方源数据库读取数据后数据交换平台实例的任务分片单元启动一个工作生成器进程来完成作业同步任务的分片;s312:根据不同的源端切分策略,将工作job切分成多个小的子任务task,以加快处理速度;具体而言,切分子任务遵循以下规律:;其中:表示切分任务所含的数据量规模,表示单次接口请求同步的数据量大小,表示阅读器reader的不同数据源端口,,d
database
表示直接从发布方数据库同步数据,d
api
表示通过步骤s4中开放的接口请求数据;s313:完成任务切片后使用任务分派模块将切分好的任务输入任务监听单元。6.根据权利要求5所述的基于任务切分的微服务水利数据共享交换方法,其特征在于:在步骤s3中,任务执行单元进行任务委派,具体方法为:任务组通过redis实现对任务的分组,根据先到先服务策略,将同一时间到达的子任务分为一组。7.根据权利要求6所述的基于任务切分的微服务水利数据共享交换方法,其特征在于:在redis中自主设置任务优先级策略,优先级别高的任务会优先分配运行资源,具体方法为:根据实际需要将任务区分为多个优先级,以优先级由高至低的顺序,依次将任务逐个下发至当前任务负载情况较轻的任务执行单元中、进行数据同步工作。
技术总结
本发明公开了一种基于任务切分的微服务水利数据共享交换方法。它包括如下步骤,步骤S1,配置动态配置发布方及接收方的数据源及数据源链接;步骤S2,基于数据交换模块建立数据同步任务;步骤S3,数据交换模块进行任务分片、监听、及任务委派;数据交换模块包括任务分片单元、任务监听单元、任务执行单元;任务分片单元根据不同的源端切分策略,将步骤S2中涉及的较大数据同步任务进行分片形成较小的数据同步任务,并由任务监听单元监听后委派给不同的任务执行单元进行数据同步工作;步骤S4,开放接口;步骤S5,执行同步。本发明具有能实现跨地区,跨机构共享水利数据,提高数据同步效率的优点。优点。优点。
技术研发人员:李金平 刘伟 张恒飞 喻淼 唐光辉 方超 潘美成 刘浩 崔俊杰
受保护的技术使用者:长江信达软件技术(武汉)有限责任公司
技术研发日:2023.07.10
技术公布日:2023/8/9
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种喷气织机气压检测装置的制作方法 下一篇:一种诱捕杀虫装置的制作方法
