一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种高复用可扩展的数据及文件同步的方法与流程

2022-07-17 00:38:41 来源:中国专利 TAG:


1.本发明涉及多台服务器的数据库及文件同步技术领域,特别涉及一种高复用可扩展的数据及文件同步的方法。


背景技术:

2.计算机系统中传统的数据同步方法,主要通过数据库软件自带的同步机制。例如sql server,采用发布-订阅方法实现数据库的同步,是由主服务器进行发布消息,备份服务器进行订阅,当主服务器数据发生变更时,就会发布消息,备服务器读取消息进行同步更新,中间过程延迟比较短。
3.这种方法存在的问题有:(1)当需要同步的数据量巨大时,这种数据同步方法会造成服务器的卡顿,影响服务器上各种程序和服务的正常运行。
4.(2)发布数据库的大量更新或者大量插入,可能会出现报错,或者订阅服务器的数据不一致。
5.(3)当需要同步的设备增多,新增的设备和原同步系统中的设备都需要增加发布订阅事务,部署繁琐。
6.(4)扩展性不佳,特别是当数据同步和其他业务相关联时,例如业务需求要求数据同步和文件同步相关联,而数据库的发布订阅方法无法和文件同步相关联。
7.以上是传统的数据库同步方法,而传统的文件同步方法,一般采用rsync或者同步盘之类的工具,如果数据量较小,或者对时效性要求没有那么高,基本可以满足需求。但是当数据量很大时,这些传统同步工具的速度、可靠性、稳定性和时效性不一定能够满足业务的需求。
8.以专利《一种数据同步方法、系统和存储介质》为例,公开号cn110377602a,就是一种传统的数据同步方法,它同样以数据库为媒介,监听到主数据库的同步数据发送事件操作时,触发生成触发信息,以及将触发信息发送至对应的数据库表中。这种数据同步方法适用于简单的数据同步场景,是以主服务器为数据源,扩展性和高可用性不佳,在主服务器出现故障时,同步流程停滞。
9.专利《一种分布式数据库数据同步方法》,公开号cn113918656b,以中央服务器为同步中心,接收和发布同步信息,这种同步方法要求对中央服务器的稳定性和高可用性要求较高,且对大量的数据同步需求没有明确的处理方法,在异常情况下会造成服务器的卡顿。


技术实现要素:

10.鉴于现有技术存在的同步卡顿、多台服务器同步步骤繁琐、扩展性不佳的问题,本发明提供了一种高复用可扩展的数据及文件同步的方法,本方法中多个服务器可互为数据源,当主服务器出现故障时,其他服务器接管业务,继续发布同步信息,解决了传统数据库
同步和文件同步上的缺陷,并实现了数据库同步和文件同步的相关联的目的。
11.本发明采用的技术方案是:一种高复用可扩展的数据及文件同步的方法,以服务器或pc机设备为载体,操作系统为windows或linux,实现多台设备之间数据及文件的同步,具体步骤如下:第一步,发布同步信息;将需要同步的数据信息,包括时间、数据内容,进行发布,每个服务器作为同步源对数据进行发布,发布的方法是将数据信息写入数据库表中,数据库类型支持关系型数据库、非关系型数据库和键值数据库;第二步,获取同步信息;从其他服务器上获取同步信息,周期查询其他服务器上是否有同步数据发布,如果有,则进行获取,更新到本地数据库中,如果没有,则等待下一个周期进行查询;第三步,删除同步信息;发布完需要同步的数据信息后,周期查询本地数据库的数据同步发布表的数据内容是否已被其他服务器获取完毕,如果获取完毕,则删除数据同步信息记录,如果没有,则等待下一个周期进行查询;通过以上三个步骤,每个服务器既能够作为同步源发布信息,同时又从其他服务器获取信息,每个服务器发布的同步信息被获取后删除同步信息,通过将数据库作为同步媒介,为其他服务器提供数据及文件的同步。
12.第一步中所述的数据内容为,在应用于不同的系统时,数据内容根据系统需求进行自定义,应用于录音系统时,数据内容包括录音发起方、录音接收方、录音号码、录音时长和录音保存路径;应用于网管系统时,数据内容包括告警类型、告警等级、告警源、告警内容。
13.第一步中所述的将数据信息写入数据库表的方法如下:根据数据库类型不同,使用的句式不同;非关系型数据库mysql,使用的句式为:insert into 表名 (字段1,字段2,...字段n) values (值1,值2,...值n);关系型数据库sqlserver,使用的句式为:update表名set列名 = 值;键值数据库mongodb,使用的句式为:db.集合名.insertone({键名:值})。
14.第二步中所述的周期查询其他服务器上是否有同步数据发布的方法如下查询的方法根据数据库类型的不同,使用的句式不同:非关系型数据库mysql,使用的句式为:select distinct * from '表名' where '限制条件'group by '分组依据' having '过滤条件' order bylimit '展示条数';关系型数据库sqlserver,使用的句式为:select * from 表名 where 列名='值';键值数据库mongodb,使用的句式为:db.集合名称.find({条件文档});
查询到数据以后,将数据插入本地服务器数据库中,查询到插入的过程中需要将查询的数据先放入本地缓存,再从本地缓存中取出数据插入到本地数据库中,为了更有效率、更加灵活地根据数据量调整同步速度,引进双级缓存机制及根据需要同步的数据量的大小来更改同步速度,来实现灵活的同步过程,获取完数据之后,通知文件同步模块,根据数据的值来进行文件的同步,使用ftp协议从同步源来获取文件。
15.第三步中所述的删除数据同步信息记录的方法如下:由于数据库类型不同,操作语句不同:非关系型数据库mysql,使用的句式为;delete from 《表名》 [where 子句] [order by 子句] [limit 子句]关系型数据库sqlserver,使用的句式为:delete* from 表名 where 列名='值';键值数据库mongodb,使用的句式为:db.集合名称.remove({列名: 值});使用删除句式,将同步信息从数据库表中删除。
[0016]
所述的引进双级缓存机制的方法为,根据需要同步的数据量的大小来更改同步速度,来实现灵活的同步过程为:获取数据同步信息后,放入1级缓存,再将数据从1级缓存放入2级缓存,从2级缓存区获取数据同步信息,写入数据库中,写入成功之后,将该数据同步信息从1级缓存区和2级缓存区中删除,采用双级缓存机制,在需要同步的数据量过大时,同步速度可控,当查询到需要同步的数据量超过阈值时,调节查询获取数据同步的周期。
[0017]
本发明的有益效果是:本发明实现了数据和文件同步的相关联,解决了传统数据同步和文件同步存在的同步卡顿、多台服务器同步步骤繁琐、扩展性不佳的问题,同步速度可控,稳定,易扩展,适用于多个需要数据和文件同步的场景,具有高复用,且可扩展的特点。
[0018]
多台服务器(》=2)之间互为同步源,可实现多台服务器之间的相互同步,实现多台服务器之间的文件同步和数据库同步,可应用于多种操作系统中,如windows、linux等。
附图说明
[0019]
图1为本发明数据同步信息发布的流程图;图2为本发明数据同步信息发布异常的处理流程;图3为本发明数据同步信息获取放入1级缓存的流程;图4为本发明数据同步信息获取放入2级缓存的流程;图5为本发明数据同步信息删除的流程;图6为本发明可扩展支持多种数据库的接口类图设计结构图;图7为本发明数据文件同步运用在录音系统里的外部连接框图;图8为本发明数据文件同步运用在录音系统里的内部组成框图。
具体实施方式
[0020]
如图1所示,发布数据同步信息的流程:该软件发明默认处于空闲状态下,周期判
断自己是否符合发布同步信息的条件,如果符合,则使用数据库发布数据同步信息;如果不符合,则继续周期判断自己是否符合发布同步信息的条件;发布了数据同步信息之后,判断发布是否成功,如果发布成功,则回到默认的空闲状态,等待下一个周期判断自己是否符合发布同步信息的的条件;如果发布失败,则判断发布的重试次数是否到达最大值,如果未超过最大值,则重新使用数据库发布数据同步信息;如果重试次数已经达到最大值,则发出告警让用户得知发布失败,回到默认的空闲状态,等待下个周期。
[0021]
如图2所示,描述了发布过程中遇到异常的处理流程;在开始状态下,判断数据同步信息表中的最后几行是否有数据未发布,如果有,说明在发布过程中遇到了异常,则进入发布流程;如果没有,则重新回到开始状态,对异常的掌控和处理体现了本方法的可靠性。
[0022]
如图3所示,获取数据同步信息获取放入1级缓存的流程;该软件默认处于空闲状态下,周期判断其他服务器是否有需要自己同步的数据和文件,如果没有,则回到空闲状态,等待下个周期进行判断;如果有,则判断自己的缓存区中是否没有这条数据且缓存区空间足够,如果满足条件,则将其他服务器上需要同步的数据获取到本机的1级缓存区中;如果不满足条件,则回到默认的空闲状态,等待下个周期。
[0023]
如图4所示,获取数据同步信息获取放入2级缓存再进行同步的流程;该软件默认处于空闲状态下,周期判断2级缓存区中是否有空闲的空间,如果没有,则回到默认的空闲状态等待下一个周期进行判断;如果有,则判断1级缓存区中是否有数据,如果没有,则回到默认的空闲状态,如果有,则从1级缓存区获取到2级缓存区,将这条信息做同步,完成后,更新数据同步发布表,获取文件,再将这条信息从1级缓存区和2级缓存区中删除,同步文件可以采用ftp或者其他方式均可;删除完1级缓存区和2级缓存区的信息后,回到默认的空闲状态,当需要同步的数据量过大时,如果同步速度不可控,将会造成服务器资源的大量占用,影响服务器上其他应用的正常运行;为此,本方法针对这个问题,使用双重缓存机制,且同步速度可控,当查询到需要同步的数据量超过某个阈值(根据服务器处理能力配置该阈值)时,调节查询获取数据同步的周期,缓存区设置双级缓存,从同步源获取到数据后放入第一级缓存,依次从第一级缓存区取出数据处理之后放入第二级缓存,同步流程完整结束后,从两级缓存中删除该数据。
[0024]
如图5所示,删除数据同步信息的流程;该软件默认处于空闲状态下,周期判断本地的信息发布表里的数据是否被同步完毕,如果被同步完毕,则删除该条数据,回到空闲状态;如果未被同步,则判断这条数据保存时间是否超过了保存期限,如果未超过保存期限,则回到空闲状态;如果已经超过保存时限,则发出告警,再删除该条数据,回到空闲状态。
[0025]
数据同步的过程包括发布,获取和删除,本方法考虑到在这三个过程中可能出现的各种异常,同步数据从数据库中写入和删除时,可能出现失败,每个类型的数据库针对这种情况都有自己的处理方法来处理这种异常;例如关系型数据库sql server ,它使用事务,来保证acid特性;acid特性,即原子性(所谓原子性,就是一件事,做完或者不做,不会有中间中断的情况发生,一旦发生错误,就回到开始之前的状态)、一致性(在事务开始之前和结束之后,数据完整性不被破坏)、隔离性(允许并发事务对数据同时进行读写,防止多个事务交叉执行而导致数据不一致)、持久性(事务一旦完成,对数据的修改就是永久的,即便系统故障也不会丢失)。
[0026]
如图6所示,程序数据库接口类图的设计,为了支持扩展,支持在小改动范围内或
者无改动下更换数据库类型,使用设计模式中的抽象工厂模式来对数据库进行访问,增加访问的灵活性,更易扩展,这也是本技术方案的特点之一,可扩展性。
[0027]
如图7所示,本发明的运用实例之一,数据同步和文件同步方法运用于录音录像系统,图中是主服务器和备服务器两个服务器进行同步,服务器之间数据库和文件都互为备份,体现高可用性;录音软件主和录音软件备,及数据文件同步都访问数据库,进行同步数据的插入、查询和删除,通过ftp服务来实现文件的同步。
[0028]
如图8所示,本发明软件运用在录音系统里的内部组成框图,从数据库模块中获取同步信息放入缓存区模块中,通知文件管理模块进行文件同步,通知数据库模块进行数据同步;另外,这三个模块都和log模块进行交互;从图中可以看出本发明的特点之一,文件同步和数据库同步相关联,实现数据和文件的同步。本发明方法的高复用性,可用在多种使用场景下,例如录音录像信息的数据同步和文件同步,网管的日志数据同步等。
[0029]
实施例1;以该同步方法运用在录音录像系统里为例,录音录像系统里用多台服务器对系统里的通话及视频进行录音录像,同一时间,只有一台主服务器在进行录音录像,其他备服务器需要对这些录制的音频视频的记录信息(存在数据库里)和音频视频的文件都做同步;主服务器的身份可能随时切换到任意一台备服务器上,改由新的主服务器对系统里的通话及视频进行录音录像。
[0030]
本方法在实际项目中的具体运用,以录音服务器为例。有多台(》=2)录音服务器同时运行,要求每台录音服务器上的呼叫记录及录音音频都同步,每台服务器上都运行了录音录像程序和数据同步程序,而每个录音录像数据的同步过程都包括了以下过程:发布,获取和删除。
[0031]
(1)发布同步信息;主服务器录音录像程序将新的数据信息添加到本地数据库的数据同步发布表中,数据内容包括录音发起方、录音接收方、录音号码、录音时长和录音保存路径;发布,即往表格trecordsync里添加内容,由哪个程序来添加有2种方案考虑,一种是由主录音服务器程序来完成增加trecordsync表格内容,另一种是由主录音服务器程序通知数据同步程序,由本地数据同步程序去增加trecordsync表格内容;事实上,中间步骤越多,需要考虑的异常可能也越多,无论哪种方案,为了解决trecordsync添加记录失败的问题,需要在trecord表格中增加一列“该记录是否已发布”,录音服务器给trecord添加呼叫记录时,给这列赋值为0表示未发布,当trecordsync添加记录成功后,这列值赋值为1表示已发布。
[0032]
(2)获取同步信息;数据同步程序,周期查询其他服务器数据库的数据同步发布表,看是否有本机未获取过的数据信息,如果有,则插入本地数据记录表中,复制音视频,并让发布该条呼叫信息的服务器知道备服务器已经获取完毕;数据同步程序从其他服务器获取需要同步的呼叫相关信息时,分以下几个步骤:1)查询另外的服务器数据库表格trecordsync,如果有需要本机同步的呼叫信息,则获取这些呼叫信息;2)将呼叫信息加入本地数据库表格trecord中;
3)将呼叫信息指示的音视频复制到本地;4)将表格trecordsync中本机同步完成那一列置为1表示已同步;获取到同步信息以后,还需要将同步信息对应的数据发给文件同步模块,文件同步模块根据信息,从同步源上获取音频视频文件,可通过ftp协议来实现。
[0033]
(3)删除同步信息;发布完需要同步的数据信息后,周期查询本地数据库的数据同步发布表的呼叫信息是否已被其他服务器获取完毕,如果获取完毕,则删除这条记录;由于删除trecordsync表格内容的前提是该呼叫信息已经被所有服务器同步完成,如果服务器长期未上电,导致这条记录没有被所有服务器同步完成,就会一直留在trecordsync表格中,所以需要给trecordsync表格内容设置一个最长90天的期限,超过这个时间还未同步则删除trecordsync表格中的该条记录;通过以上发布、获取、删除三个步骤,实现了本发明方法在录音系统中的应用,通过将数据库作为同步媒介,为其他服务器软件及应用提供数据及文件同步。
[0034]
实施例2以该同步方法运用在网管系统里为例,网管系统里用多台服务器对系统里的告警信息进行记录,同一时间,只有一台主服务器在进行告警信息记录,其他备服务器需要对这些告警信息做同步;主服务器的身份可能随时切换到任意一台备服务器上,改由新的主服务器对系统里的告警信息进行记录。
[0035]
本方法在实际项目中的具体运用,以网管服务器为例。有多台(》=2)网管服务器同时运行,要求每台网管服务器上的告警记录都同步。每台服务器上都运行了网管程序和数据同步程序,而每个告警数据的同步过程都包括了以下过程:发布,获取和删除。
[0036]
(1)发布同步信息;主服务器网管程序将新的数据信息添加到本地数据库的数据同步发布表中,数据内容包括告警类型、告警等级、告警源、告警内容;发布,即往表格talarmsync里添加内容,由哪个程序来添加有2种方案考虑,一种是由主网管服务器程序来完成增加talarmsync表格内容,另一种是由主网管服务器程序通知数据同步程序,由本地数据同步程序去增加talarmsync表格内容;事实上,中间步骤越多,需要考虑的异常可能也越多,无论哪种方案,为了解决talarmsync添加记录失败的问题,需要在talarm表格中增加一列“该记录是否已发布”,网管服务器给talarm添加告警记录时,给这列赋值为0表示未发布,当talarmsync添加记录成功后,这列值赋值为1表示已发布。
[0037]
(2)获取同步信息;数据同步程序,周期查询其他服务器数据库的数据同步发布表,看是否有本机未获取过的数据信息,如果有,则插入本地数据记录表中,并让发布该条告警信息的服务器知道备服务器已经获取完毕;数据同步程序从其他服务器获取需要同步的告警信息时,分以下几个步骤:1)查询另外的服务器数据库表格talarmsync,如果有需要本机同步的告警信息,则获取这些告警信息;2)将告警信息加入本地数据库表格talarm中;
3)将表格talarmsync中本机同步完成那一列置为1表示已同步;(3)删除同步信息发布完需要同步的数据信息后,周期查询本地数据库的数据同步发布表的告警信息是否已被其他服务器获取完毕,如果获取完毕,则删除这条记录;由于删除talarmsync表格内容的前提是该告警信息已经被所有服务器同步完成,如果服务器长期未上电,导致这条记录没有被所有服务器同步完成,就会一直留在talarmsync表格中,所以需要给talarmsync表格内容设置一个最长90天的期限,超过这个时间还未同步则删除talarmsync表格中的该条记录;通过以上发布、获取、删除三个步骤,实现了本发明方法在网管系统中的应用,通过将数据库作为同步媒介,为其他服务器软件及应用提供数据同步。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献