CN116567007B - 一种基于任务切分的微服务水利数据共享交换方法 - Google Patents

一种基于任务切分的微服务水利数据共享交换方法 Download PDF

Info

Publication number
CN116567007B
CN116567007B CN202310839248.6A CN202310839248A CN116567007B CN 116567007 B CN116567007 B CN 116567007B CN 202310839248 A CN202310839248 A CN 202310839248A CN 116567007 B CN116567007 B CN 116567007B
Authority
CN
China
Prior art keywords
task
data
synchronization
database
segmentation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310839248.6A
Other languages
English (en)
Other versions
CN116567007A (zh
Inventor
李金平
刘伟
张恒飞
喻淼
唐光辉
方超
潘美成
刘浩
崔俊杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Changjiang Xinda Software Technology Wuhan Co ltd
Original Assignee
Changjiang Xinda Software Technology Wuhan Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Changjiang Xinda Software Technology Wuhan Co ltd filed Critical Changjiang Xinda Software Technology Wuhan Co ltd
Priority to CN202310839248.6A priority Critical patent/CN116567007B/zh
Publication of CN116567007A publication Critical patent/CN116567007A/zh
Application granted granted Critical
Publication of CN116567007B publication Critical patent/CN116567007B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/06Energy or water supply
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/566Grouping or aggregating service requests, e.g. for unified processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Economics (AREA)
  • Human Resources & Organizations (AREA)
  • Water Supply & Treatment (AREA)
  • General Health & Medical Sciences (AREA)
  • Public Health (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于任务切分的微服务水利数据共享交换方法。它包括如下步骤,步骤S1,配置动态配置发布方及接收方的数据源及数据源链接;步骤S2,基于数据交换模块建立数据同步任务;步骤S3,数据交换模块进行任务分片、监听、及任务委派;数据交换模块包括任务分片单元、任务监听单元、任务执行单元;任务分片单元根据不同的源端切分策略,将步骤S2中涉及的较大数据同步任务进行分片形成较小的数据同步任务,并由任务监听单元监听后委派给不同的任务执行单元进行数据同步工作;步骤S4,开放接口;步骤S5,执行同步。本发明具有能实现跨地区,跨机构共享水利数据,提高数据同步效率的优点。

Description

一种基于任务切分的微服务水利数据共享交换方法
技术领域
本发明涉及大数据与云计算领域,具体地说它是一种基于任务切分的微服务水利数据共享交换方法。
背景技术
水利数据是指水利行业产生的数据,主要包括水利业务和水利政务数据。通过对水利数据的有效管理和挖掘,可以大力推进和实现水利业务的精细化管理,提高水利工作的决策效率和科学化程度。近年来,水利行业以“水利信息化带动水利现代化”速度明显加快,但由于建设时期及所属项目类别、管理单位地域的差异,各系统数据库技术不一、各系统间数据兼容和集成度低,由此形成了一个个信息孤岛,既影响了现有系统的有效运行,也影响了各地域间相互配合做出科学的水利工作决策的效率;
水利业务数据通过部署在现场或生产环境的传感器、闸站监控等设备获得,由于这些设备时刻以秒、分钟为单位记录数据,因此水利数据具有海量巨大、时效性强等特点;
现有方法多是基于批次号进行全量或批量离线复制以及单纯线上同步方法(如JDBC同步、接口同步方式),但由于不同地区、不同机构间路途遥远且可能应用多种不同的数据库管理系统,如Mysql、Oracle、达梦,采用离线复制的方法可能会出现工作人员旅途劳顿、线程存储介质兼容性低等问题,导致无法适用跨地区、跨机构实时共享水利数据。若单纯使用在线同步则未考虑水利数据量大、时效性强的特点,由于未作并发处理,则难以符合巨量数据同步要求,导致同步速度慢、数据同步效率十分低下,容易造成更新不及时和数据不一致的问题,影响数据应用结果。目前尚未有一套高效实施的涉及跨地区,跨机构的共享水利数据交换方法;
因此,开发一种能实现跨地区、跨机构共享水利数据且同步效率高的交换方法很有必要。
发明内容
本发明的目的是为了提供一种基于任务切分的微服务水利数据共享交换方法,通过数据集成实现信息互联互通,为数据分析应用提供完整数据,能实现跨地区,跨机构实时共享水利数据,基于同步任务切片及微服务技术,并发处理同步任务、提高数据同步效率;用以解决因数据更新周期慢造成的更新不及时和数据不一致的问题,打破信息壁垒,解决信息孤岛、数据共享问题。
为了实现上述目的,本发明的技术方案为:一种基于任务切分的微服务水利数据共享交换方法,其特征在于:包括如下步骤,
步骤S1,配置动态配置发布方及接收方的数据源及数据源链接;
步骤S2,基于数据交换模块建立数据同步任务;本过程中接受数据的是接收方,提供数据的是发布方;
数据交换模块针对步骤S1中所涉及的库表构建主动触发的数据同步任务;
步骤S3,数据交换模块进行任务分片、监听、及任务委派;
数据交换模块包括任务分片单元、任务监听单元、任务执行单元;
任务分片单元根据不同的源端切分策略,将步骤S2中涉及的较大数据同步任务进行分片形成较小的数据同步任务,并由任务监听单元监听后委派给不同的任务执行单元进行数据同步工作;
步骤S4,开放接口;
将数据同步过程封装为支持动态配置的Api接口,以供数据接收方进行调用,将数据同步过程封装成接口,以Http Json api服务的形式进行请求;
步骤S5,执行同步;
接收方启动定时任务,定时请求步骤S4中涉及接口拉取发布方数据或接收方主动请求接口拉取发布方数据;
定时任务启动后(其中,任务是指接收方定时请求和拉取发布方数据库数据),使用阅读器Reader从发布方源数据库读取数据后执行步骤S3经任务分片、监听、委派,最后使用写入器Writer将数据库写入接收方目标数据库。
在上述技术方案中,在步骤S1中,配置动态配置发布方及接收方的数据源及数据源链接,具体方法包括:
当一个新的数据发布方或接受方接入系统时,将其数据库链接方式及数据库配置项注册并写入到数据交换平台中;
配置项包括数据库类型、数据库端口、数据库用户和访问密码;
当完成此配置后,该新加入的数据发布方或接收方的数据源为可用状态。
在上述技术方案中,在步骤S2中,数据同步任务包括:
数据传输任务:数据交换模块即时从数据发布方源数据库请求读取数据、处理并请求写入数据接受方数据库的一系列操作算作一次数据同步任务;
定时库表同步任务:按照每天、每小时、每分钟设定时间间隔,定时进行数据传输任务。
在上述技术方案中,数据同步任务采用Framework+plugin架构构建;
将数据源读取和写入抽象成为阅读器/写入器(Reader/Writer)插件,纳入到整个同步框架中;
阅读器Reader支持MySQL、Oracle、SqlServer、达梦以及通用DBMS,支持通用化配置api接口作为数据源,对于非上述数据库管理系统的其他数据库管理系统,支持通过自定义编写阅读器Reader处理类程序进行插件化接入;
写入器Writer支持MySQL、Oracle、SqlServer、达梦以及通用DBMS。
在上述技术方案中,在步骤S3中,任务分片单元进行任务分片,具体方法为:
S311:使用阅读器Reader从发布方源数据库读取数据后数据交换平台实例的任务分片单元启动一个工作生成器进程来完成作业同步任务的分片;
S312:根据不同的源端切分策略,将工作Job切分成多个小的子任务Task,以加快处理速度;
具体而言,切分子任务遵循以下规律:
其中:表示切分任务所含的数据量规模,/>表示单次接口请求同步的数据量大小,/>表示阅读器Reader的不同数据源端口,/>D DataBase 表示直接从发布方数据库同步数据,D Api 表示通过步骤S4中开放的接口请求数据;
S313:完成任务 切片后使用任务分派模块将切分好的任务输入任务监听单元。
在上述技术方案中,在步骤S3中,任务监听单元进行任务监听,具体方法为:
任务监听单元接收任务分片单元处理好的分片任务,并将拆分成的子任务压入到任务队列重新组合,组装成任务组;当一个任务的工作组建立完毕后,即进行任务委派。
在上述技术方案中,在步骤S3中,任务执行单元进行任务委派,具体方法为:
任务组通过Redis实现对任务的分组,根据先到先服务策略,将同一时间到达的子任务分为一组。
在上述技术方案中,在Redis中自主设置任务优先级策略,优先级别高的任务会优先分配运行资源,具体方法为:
根据实际需要将任务区分为多个优先级,以优先级由高至低的顺序,依次将任务逐个下发至当前任务负载情况较轻的任务执行单元中、进行数据同步工作。
需要说明书的是:步骤S1具体为建立用户使用界面,用户指定动态写入发布方及接收方的数据源及数据源链接;需要说明的是,此步骤并不是具体的配置,而是指具有用户操作界面可以指一句用户意愿基于用户界面配置数据库参数的以及原链接的过程;本步骤支持动态配置非特定渠道,可动态添加调整删除,甚至修改的具有用户配置界面的过程;
步骤S2具体为建立守护进程,指定守护进程应当调度的定时同步任务(即监听是否有需要进行同步);需要说明的是同步任务是定时任务,类似于守护进程,不可以理解为同步数据的过程;本步骤中定时同步任务包括定时库表同步任务(按照每天、每小时、每分钟设定时间间隔,定时进行数据传输任务;需要说明的是定时库表同步任务,并不是具体的任务同步过程,而是指按照特定时间触发具体同步工程的计时器)、启动守护线程(启动守护线程,作为定时同步任务的容器,按照定时任务,触发数据传输任务)、数据传输任务(数据交换模块即时从数据发布方源数据库请求读取数据、处理并请求写入数据接受方数据库的一系列操作算作一次数据同步任务,是具体的同步过程);
在步骤S3中,需要说明的是:任务的分片、监听、委派不可以理解为简单的进行多步骤并发计算或异步计算过程(即分配不同线程的并发技术),而是指在包含多台机器的集群上分布式过程;在步骤S313中,由于此步骤基于分布式过程而非简单本机异步操作或cpu并发过程,因此此步骤中需要考虑负载均衡和服务发现过程。包含子步骤:1)将处理好的子任务加入等待队列,防止一时间子任务数量过多导致服务器宕机;2)软负载均衡分配服务器,并记录分配服务器地址;在任务监听单元进行任务监听时,任务队列和前面的等待对量不可理解为重复工作。等待队列防止服务器宕机,任务队列除了防止宕机意外,还可暂存数据;需要说明的是:任务的分片、监听、委派不可以理解为简单的进行多步骤并发计算或异步计算过程(即分配不同线程的并发技术),而是指在包含多台机器的集群上分布式过程;在任务执行单元进行任务委派时,根据先到先服务策略,将同一时间到达的子任务分为一组后根据任务分片单元进行任务分片时计算出的服务器记录,实现http服务转发。
本发明具有如下优点:
通过数据集成实现信息互联互通,为数据分析应用提供完整数据,能实现跨地区、跨机构共享水利数据(本发明通过任务分片将大任务切分成多个可以并发执行的小任务,经过负载均衡算法可以在多台服务器上并发执行,因此能实现信息互联互通、实现跨地区、跨机构实时共享水利数据,且水利数据更新周期短、更新速度快;此外由于本发明算法支持多种数据库格式,因此可以解决数据不一致问题),本发明基于同步任务切片及微服务技术,并发处理同步任务、提高数据同步效率;用以解决因数据更新周期慢造成的更新不及时和数据不一致的问题,打破信息壁垒,解决信息孤岛、数据共享问题。
附图说明
图1为本发明的整体架构图;
图2为本发明中的数据交换模块的框架图;
图3为本发明的工艺流程图;
在图1中,子任务集表示经过后分片后需要并发执行的多个子同步任务,任务实例表示正在并发执行的多个子任务。
实施方式
下面结合附图详细说明本发明的实施情况,但它们并不构成对本发明的限定,仅作举例而已。同时通过说明使本发明的优点更加清楚和容易理解。
参阅附图可知:一种基于任务切分的微服务水利数据共享交换方法,所涉及的生产环境包括数据发布方及数据接收方、数据交换模块;
本发明所述基于任务切分的微服务水利数据共享交换方法将数据源读取和写入抽象成为Reader插件和Writer插件;
发布方源数据库通过Reader与数据交换模块进行数据交换;数据接收方通过Writer与接收方目标库进行数据交换;
具体方法,包括如下步骤,
步骤S1,配置动态配置发布方及接收方的数据源及数据源链接;
步骤S2,基于数据交换模块建立数据同步任务;本过程中接受数据的是接收方,提供数据的是发布方;
数据交换模块针对步骤S1中所涉及的库表构建可以主动触发的数据同步任务;
步骤S3,数据交换模块进行任务分片、监听、及任务委派;
数据交换模块包括任务分片单元、任务监听单元、任务执行单元;
任务分片单元根据不同的源端切分策略,将步骤S2中涉及的较大数据(较大数据任务是指单次请求需要同步数据量超过一千条的同步任务)同步任务进行分片形成较小的数据同步任务(较小数据任务是指单次请求需要同步数据量不超过一千条的同步任务),并由任务监听单元监听后委派给不同的任务执行单元进行数据同步工作,本过程中负责切分任务的是任务分片单元,监听任务的是任务监听单元,执行任务的是任务执行单元;
步骤S4,开放接口;
将数据同步过程封装为支持动态配置的Api接口,以供数据接收方进行调用,将数据同步过程封装成接口,以Http Json api服务的形式进行请求;设置接口时可以通过Sql语句指定,数据库、数据表、字段等参与同步的参数进行细粒度同步;本发明基于步骤S3的同步任务切片及步骤S4的微服务技术,并发处理同步任务、提高数据同步效率;
步骤S5,执行同步;
接收方启动定时任务,定时请求步骤S4中涉及接口拉取发布方数据或接收方主动请求接口拉取发布方数据;
定时任务启动后(其中,任务是指接收方定时请求和拉取发布方数据库数据),会使用阅读器Reader从发布方源数据库读取数据后执行步骤S3经任务分片、监听、委派,最后使用写入器Writer将数据库写入接收方目标数据库。
进一步地,在步骤S1中,配置动态配置发布方及接收方的数据源及数据源链接,为不同数据库源、不同数据格式提供数据自由交换服务提供数据库基础,具体方法包括:
当一个新的数据发布方或接受方接入系统时,将其数据库链接方式及数据库配置项注册并写入到数据交换平台中;
配置项包括数据库类型、数据库端口、数据库用户和访问密码等;
当完成此配置后,该新加入的数据发布方或接收方的数据源才是可用状态。
进一步地,在步骤S2中,数据同步任务包括:
数据传输任务:数据交换模块即时从数据发布方源数据库请求读取数据、处理并请求写入数据接受方数据库的一系列操作算作一次数据同步任务;
定时库表同步任务:按照每天、每小时、每分钟设定时间间隔,定时进行数据传输任务。
进一步地,数据同步任务采用Framework+plugin架构构建;
将数据源读取和写入抽象成为阅读器/写入器(Reader/Writer)插件,纳入到整个同步框架中;
阅读器Reader支持MySQL、Oracle、SqlServer、达梦以及通用DBMS(支持所有关系型数据库),除此之外支持通用化配置api接口作为数据源,本发明包括但不限于上述提到的几种数据库管理系统的其他数据库管理系统,对于非上述数据库管理系统的其他数据库管理系统,支持通过自定义编写Reader处理类程序进行插件化接入;
写入器Writer支持MySQL、Oracle、SqlServer、达梦以及通用DBMS(支持所有关系型数据库);由于本发明算法支持多种数据库格式,因此可以解决数据不一致问题。
进一步地,在步骤S3中,任务分片单元进行任务分片,具体方法为:
S311:使用阅读器Reader从发布方源数据库读取数据后数据交换平台实例的任务分片单元启动一个工作生成器(JobBuilder)进程来完成作业同步任务的分片;
S312:根据不同的源端切分策略,将工作Job切分成多个小的子任务(Task),以加快处理速度;
具体而言,切分子任务遵循以下规律:
其中:表示切分任务所含的数据量规模,/>表示单次接口请求同步的数据量大小,/>表示阅读器Reader的不同数据源端口,/>D DataBase 表示直接从发布方数据库同步数据,D Api 表示通过步骤S4中开放的接口请求数据;
S313:完成任务切片后使用任务分派模块(JobTaskSend)将切分好的任务输入任务监听单元;
本发明通过任务分片将大任务切分成多个可以并发执行的小任务,经过负载均衡算法可以在多台服务器上并发执行(即通过数据集成实现信息互联互通,为数据分析应用提供完整数据),能实现跨地区、跨机构共享水利数据,且水利数据更新周期短、更新速度快。
进一步地,在步骤S3中,任务监听单元进行任务监听,具体方法为:
任务监听单元接收任务分片单元处理好的分片任务,并将拆分成的子任务Task压入到任务队列重新组合,组装成任务组(TaskGroup);当一个任务的工作组建立完毕后,即进行任务委派。
更进一步地,在步骤S3中,任务执行单元进行任务委派,具体方法为:
任务组(TaskGroup)可以通过Redis(Remote Dictionary Server,远程字典服务)管理模块实现对任务的分组,其中任务可以是多个同步任务,根据先到先服务策略,将同一时间到达的子任务分为一组。
更进一步地,在Redis中自主设置任务优先级策略,优先级别高的任务会优先分配运行资源,具体方法为:
可以根据实际需要将任务区分为多个优先级,以优先级由高至低的顺序,依次将任务逐个下发至当前任务负载情况较轻(也就是同步任务数量最少)的任务执行单元中、进行数据同步工作。
实施例
由于水利数据更新周期短、更新速度快,大量传感器每分钟都会产生多条数据,导致数据量巨大,若使用传统离线复制的数据库同步方法难以存储巨量水利数据、则需要携带存储巨量水利数据储存介质,十分不便,且各单位间距离遥远导致数据同步工作人员旅途劳顿、难以及时进行离线数据同步。若单纯使用JDBC在线同步办法,则由于没有进行数据分片或并发执行同步将会导致数据同步效率低下,不适用于时效性较强的水利数据,影响数据应用结果。
现本实施例采用本发明所述基于任务切分的微服务水利数据共享交换方法,可以实时同步、实现跨地区、跨机构共享的数据交换;
它包含两种工作方式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同步、接口同步方式),同步速度慢且由于数据量巨大导致数据同步效率十分低下,容易造成更新不及时和数据不一致,影响数据应用结果的问题。
本实施例还可以对数据监听队列的选型、任务委派负载均衡进行扩展,前者扩展也就是不使用Redis而使用其他更高性能的消息队列,后者扩展则是应对不同场景的业务扩展,例如当图2中设计的交换机实例存在变动平凡的情况就可以使用Hash算法进行负载均衡。需要说明的是,在分布式微服务框架中,数据消息队列是应当满足“消峰填谷”的功能,负载均衡算法需要根据实际业务场景和服务器状态做出动态调整。
其它未说明的部分均属于现有技术。

Claims (5)

1.一种基于任务切分的微服务水利数据共享交换方法,其特征在于:基于同步任务切片及微服务技术,并发处理同步任务,通过任务分片将大任务切分成多个可以并发执行的小任务,经过负载均衡算法在多台服务器上并发执行,实现信息互联互通、实现跨地区、跨机构实时共享水利数据,提高数据同步效率;
具体方法,包括如下步骤,
步骤S1,动态配置发布方及接收方的数据源及数据源链接;
步骤S2,基于数据交换模块建立数据同步任务;本过程中接受数据的是接收方,提供数据的是发布方;
数据交换模块针对步骤S1中所涉及的库表构建主动触发的数据同步任务;
建立守护进程,指定守护进程应当调度的定时同步任务,监听是否有需要进行同步;定时同步任务包括定时库表同步任务、启动守护线程和数据传输任务;定时库表同步任务按照每天、每小时、每分钟设定时间间隔,定时进行数据传输任务;启动守护线程作为定时同步任务的容器,按照定时任务,触发数据传输任务;数据传输任务即时从数据发布方源数据库请求读取数据、处理并请求写入数据接受方数据库;
步骤S3,数据交换模块进行任务分片、监听、及任务委派;
数据交换模块包括任务分片单元、任务监听单元、任务执行单元;
任务分片单元根据不同的源端切分策略,将步骤S2中涉及的较大数据同步任务进行分片形成较小的数据同步任务,并由任务监听单元监听后委派给不同的任务执行单元进行数据同步工作;
在步骤S3中,任务分片单元进行任务分片,具体方法为:
S311:使用阅读器Reader从发布方源数据库读取数据后数据交换平台实例的任务分片单元启动一个工作生成器进程来完成作业同步任务的分片;
S312:根据不同的源端切分策略,将工作Job切分成多个小的子任务Task,以加快处理速度;
具体而言,切分子任务遵循以下规律:
其中:表示切分任务所含的数据量规模,/>表示单次接口请求同步的数据量大小,/>表示阅读器Reader的不同数据源端口,D DataBase 表示直接从发布方数据库同步数据,D Api 表示通过步骤S4中开放的接口请求数据;
S313:完成任务切片后使用任务分派模块将切分好的任务输入任务监听单元;
在步骤S3中,任务监听单元进行任务监听,具体方法为:
任务监听单元接收任务分片单元处理好的分片任务,并将拆分成的子任务压入到任务队列重新组合,组装成任务组;当一个任务的工作组建立完毕后,即进行任务委派;
数据切分完成后,后端立即获取相关分片信息,将数据送入任务等待队列并基于数据监听单元进行数据监听;任务等待队列的目的是暂存切分出的子任务,采取Redis技术暂存任务,避免出现大量数据挤兑服务器资源导致服务器宕机;数据监听单元负责取出消息并送入线程池执行任务委派,通过控制线程池来控制队列监听即任务委派速率;
步骤S4,开放接口;
将数据同步过程封装为支持动态配置的Api接口,以供数据接收方进行调用,将数据同步过程封装成接口,以Http Json api服务的形式进行请求;
步骤S5,执行同步;
接收方启动定时任务,定时请求步骤S4中涉及接口拉取发布方数据或接收方主动请求接口拉取发布方数据;
任务启动后,使用阅读器Reader从发布方源数据库读取数据后执行步骤S3经任务分片、监听、委派,最后使用写入器Writer将数据库写入接收方目标数据库。
2.根据权利要求1所述的基于任务切分的微服务水利数据共享交换方法,其特征在于:在步骤S1中,动态配置发布方及接收方的数据源及数据源链接,具体方法包括:
当一个新的数据发布方或接受方接入系统时,将其数据库链接方式及数据库配置项注册并写入到数据交换平台中;
配置项包括数据库类型、数据库端口、数据库用户和访问密码;
当完成此配置后,该新加入的数据发布方或接收方的数据源为可用状态。
3.根据权利要求2所述的基于任务切分的微服务水利数据共享交换方法,其特征在于:数据同步任务采用Framework+plugin架构构建;
将数据源读取和写入抽象成为阅读器/写入器插件,纳入到整个同步框架中;
阅读器Reader支持MySQL、Oracle、SqlServer、达梦以及通用DBMS,支持通用化配置api接口作为数据源,对于非上述数据库管理系统的其他数据库管理系统,支持通过自定义编写阅读器Reader处理类程序进行插件化接入;
写入器Writer支持MySQL、Oracle、SqlServer、达梦以及通用DBMS。
4.根据权利要求3所述的基于任务切分的微服务水利数据共享交换方法,其特征在于:在步骤S3中,任务执行单元进行任务委派,具体方法为:
任务组通过Redis实现对任务的分组,根据先到先服务策略,将同一时间到达的子任务分为一组。
5.根据权利要求4所述的基于任务切分的微服务水利数据共享交换方法,其特征在于:在Redis中自主设置任务优先级策略,优先级别高的任务会优先分配运行资源,具体方法为:
根据实际需要将任务区分为多个优先级,以优先级由高至低的顺序,依次将任务逐个下发至当前任务负载情况较轻的任务执行单元中、进行数据同步工作。
CN202310839248.6A 2023-07-10 2023-07-10 一种基于任务切分的微服务水利数据共享交换方法 Active CN116567007B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310839248.6A CN116567007B (zh) 2023-07-10 2023-07-10 一种基于任务切分的微服务水利数据共享交换方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310839248.6A CN116567007B (zh) 2023-07-10 2023-07-10 一种基于任务切分的微服务水利数据共享交换方法

Publications (2)

Publication Number Publication Date
CN116567007A CN116567007A (zh) 2023-08-08
CN116567007B true CN116567007B (zh) 2023-10-13

Family

ID=87496875

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310839248.6A Active CN116567007B (zh) 2023-07-10 2023-07-10 一种基于任务切分的微服务水利数据共享交换方法

Country Status (1)

Country Link
CN (1) CN116567007B (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106557497A (zh) * 2015-09-25 2017-04-05 阿里巴巴集团控股有限公司 一种数据同步方法和装置
CN106557364A (zh) * 2015-09-24 2017-04-05 阿里巴巴集团控股有限公司 一种数据同步方法和系统
CN110196885A (zh) * 2019-06-13 2019-09-03 东方电子股份有限公司 一种云化分布式实时数据库系统
CN110597618A (zh) * 2019-07-26 2019-12-20 苏宁云计算有限公司 一种数据交换系统的任务拆分方法及装置
CN110866062A (zh) * 2018-08-09 2020-03-06 菜鸟智能物流控股有限公司 基于分布式集群的数据同步方法以及装置
CN112565042A (zh) * 2020-12-24 2021-03-26 航天科工网络信息发展有限公司 一种星形结构数据交换的方法
CN113342826A (zh) * 2021-07-01 2021-09-03 广东电网有限责任公司 一种对不同数据采集引擎的数据操作进行统一管理的方法、存储介质及系统
CN114791931A (zh) * 2021-01-26 2022-07-26 北京资采信息技术有限公司 一种基于datax的数据治理方法
CN114840393A (zh) * 2022-06-29 2022-08-02 杭州比智科技有限公司 一种多数据源数据同步监控方法及系统
CN115391034A (zh) * 2022-08-16 2022-11-25 中国电子系统技术有限公司 一种基于分布式集群datax的任务处理方法及系统
CN115421898A (zh) * 2022-11-07 2022-12-02 杭州比智科技有限公司 一种基于quartz框架的大数据任务调度管理系统及方法
CN115987676A (zh) * 2022-12-31 2023-04-18 中电科大数据研究院有限公司 跨域数据协同管理方法及装置
CN116150236A (zh) * 2022-10-08 2023-05-23 马上消费金融股份有限公司 数据同步方法及装置、电子设备、计算机可读存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101544356B1 (ko) * 2012-10-31 2015-08-13 삼성에스디에스 주식회사 메타데이터 및 트랜잭션 발생량을 고려한 동적 샤딩 기능을 지원하는 분산 데이터베이스 관리 방법 및 그 구성 노드
US11893042B2 (en) * 2021-07-09 2024-02-06 Mongodb, Inc. Methods and systems for automatically resharding a sharded collection of data

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106557364A (zh) * 2015-09-24 2017-04-05 阿里巴巴集团控股有限公司 一种数据同步方法和系统
CN106557497A (zh) * 2015-09-25 2017-04-05 阿里巴巴集团控股有限公司 一种数据同步方法和装置
CN110866062A (zh) * 2018-08-09 2020-03-06 菜鸟智能物流控股有限公司 基于分布式集群的数据同步方法以及装置
CN110196885A (zh) * 2019-06-13 2019-09-03 东方电子股份有限公司 一种云化分布式实时数据库系统
CN110597618A (zh) * 2019-07-26 2019-12-20 苏宁云计算有限公司 一种数据交换系统的任务拆分方法及装置
CN112565042A (zh) * 2020-12-24 2021-03-26 航天科工网络信息发展有限公司 一种星形结构数据交换的方法
CN114791931A (zh) * 2021-01-26 2022-07-26 北京资采信息技术有限公司 一种基于datax的数据治理方法
CN113342826A (zh) * 2021-07-01 2021-09-03 广东电网有限责任公司 一种对不同数据采集引擎的数据操作进行统一管理的方法、存储介质及系统
CN114840393A (zh) * 2022-06-29 2022-08-02 杭州比智科技有限公司 一种多数据源数据同步监控方法及系统
CN115391034A (zh) * 2022-08-16 2022-11-25 中国电子系统技术有限公司 一种基于分布式集群datax的任务处理方法及系统
CN116150236A (zh) * 2022-10-08 2023-05-23 马上消费金融股份有限公司 数据同步方法及装置、电子设备、计算机可读存储介质
CN115421898A (zh) * 2022-11-07 2022-12-02 杭州比智科技有限公司 一种基于quartz框架的大数据任务调度管理系统及方法
CN115987676A (zh) * 2022-12-31 2023-04-18 中电科大数据研究院有限公司 跨域数据协同管理方法及装置

Also Published As

Publication number Publication date
CN116567007A (zh) 2023-08-08

Similar Documents

Publication Publication Date Title
CN109241191B (zh) 一种分布式数据源异构同步平台及同步方法
EP3007113B1 (en) Event processing with enhanced throughput
CN103092698B (zh) 云计算应用自动部署系统及方法
CN112069265B (zh) 配置数据的同步方法、业务数据系统、计算机系统和介质
CN113535656B (zh) 数据访问方法、装置、设备及存储介质
US20200128094A1 (en) Fast ingestion of records in a database using data locality and queuing
US10158709B1 (en) Identifying data store requests for asynchronous processing
CN110716802B (zh) 一种跨集群的任务调度系统及方法
CN108881485A (zh) 保障大数据包下的高并发系统响应时间的方法
US20180267735A1 (en) Pre-forking replicas for efficient scaling of a distributed data storage system
CN109144783B (zh) 一种分布式海量非结构化数据备份方法及系统
CN116777182B (zh) 半导体晶圆制造执行任务派工方法
WO2016082594A1 (zh) 数据更新处理方法及装置
CN110019231A (zh) 一种并行数据库动态关联的方法及节点
CN109800081A (zh) 一种大数据任务的管理方法及相关设备
CN114448983A (zh) 基于ZooKeeper的分布式数据交换方法
EP3905064A1 (en) Method and apparatus for synchronously replicating database
CN108563787A (zh) 一种数据中心综合管理系统的数据交互管理系统及方法
US9003054B2 (en) Compressing null columns in rows of the tabular data stream protocol
CN116567007B (zh) 一种基于任务切分的微服务水利数据共享交换方法
CN116304390B (zh) 时序数据处理方法、装置、存储介质及电子设备
WO2023185309A1 (zh) 数据同步方法和系统、计算机可读存储介质
CN116431635A (zh) 基于湖仓一体的配电物联网数据实时处理系统及方法
CN115455121A (zh) 一种实时可靠的数据同步传输方法、设备及介质
EP3709173B1 (en) Distributed information memory system, method, and program

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant