发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的第一个目的在于提出一种数据同步方法,能够在突然出现大批量数据需要同步的工作场景下,充分把控服务器和多个客户端当前运算处理能力,以进行大批量数据同步,从而,保持服务器与多个客户端的正常运行。
本发明的第二个目的在于提出一种计算机可读存储介质。
本发明的第三个目的在于提出一种数据同步系统。
为达到上述目的,本发明第一方面实施例提出的数据同步方法,包括以下步骤:接收服务器发送的数据同步请求,其中,所述数据同步请求为所述服务器根据当前运算处理能力情况向与其通信连接的一个或多个客户端发送;所述一个或多个客户端中的每个客户端在接收到所述数据同步请求后,根据当前运算处理能力分段向所述服务器请求待同步数据,直至完成数据同步。
根据本发明实施例的数据同步方法,接收服务器发送的数据同步请求,其中,数据同步请求为服务器根据当前运算处理能力情况向与其通信连接的一个或多个客户端发送,以及一个或多个客户端中的每个客户端在接收到数据同步请求后,根据当前运算处理能力分段向服务器请求待同步数据,直至完成数据同步。由此,在突然出现大批量数据需要同步的工作场景下,充分把控服务器和多个客户端当前运算处理能力,以进行大批量数据同步,从而,保持服务器与多个客户端的正常运行。
另外,根据本发明上述实施例的数据同步方法,还可以具有如下的附加技术特征:
根据本发明的一个实施例,所述服务器根据当前运算处理能力情况判断允许向所述一个或多个客户端发送数据同步请求时,计算出允许同步的所述客户端数量并创建相应数量的同步线程。
根据本发明的一个实施例,所述一个或多个客户端根据当前运算处理能力分段向所述服务器请求待同步数据,包括:所述一个或多个客户端中的每个客户端根据当前运算处理能力计算每次向所述服务器同步请求的数据量,并根据每次向所述服务器同步请求的数据量以区间的形式向所述服务器发起数据请求。
根据本发明的一个实施例,所述一个或多个客户端中的每个客户端还判断接收到的数据同步请求的类型进行判断,其中,如果接收到的数据同步请求为全量数据同步请求,则启动全量数据同步;如果接收到的数据同步请求为增量数据同步请求,则启动增量数据同步。
根据本发明的一个实施例,所述服务器对每次发送给每个所述客户端的数据量的大小进行校验,并在当前发送给客户端的数据量小于所述客户端向所述服务器同步请求的数据量大小时,判断所述当前客户端完成数据同步,并从未进行同步请求的所述客户端中选择一个启动数据同步请求。
根据本发明的一个实施例,所述服务器根据CPU个数和内存大小计算所述服务器的当前运算处理能力。
根据本发明的一个实施例,所述客户端根据CPU个数和内存大小计算所述客户端的当前运算处理能力。
根据本发明的一个实施例,所述每个客户端根据当前运算处理能力计算每次向所述服务器同步请求的数据量,具体包括:获取当前空闲的CPU个数;根据所述当前空闲的CPU个数计算每次向所述服务器同步请求的数据量。
为达到上述目的,本发明第二方面实施例提出的计算机可读存储介质,其上存储有数据同步程序,该数据同步程序被处理器执行时实现如上所述的数据同步方法。
根据本发明实施例的计算机可读存储介质,通过处理器执行其上存储有的数据同步程序,能够在突然出现大批量数据需要同步的工作场景下,充分把控服务器和多个客户端当前运算处理能力,以进行大批量数据同步,从而,保持服务器与多个客户端的正常运行。
为达到上述目的,本发明实施例第三方面实施例提出的数据同步系统,包括服务器和与其通信连接的多个客户端,其中,所述服务器根据当前运算处理能力向与其通信连接的一个或多个客户端发送数据同步请求;所述一个或多个客户端中的每个客户端在接收到所述数据同步请求后,根据当前运算处理能力分段向所述服务器请求待同步数据,直至完成数据同步。
根据本发明实施例的数据同步系统,通过服务器根据当前运算处理能力向多个客户端中的一个或多个客户端发送数据同步请求,以及在一个或多个客户端中的每个客户端在接收到数据同步请求后,根据当前运算处理能力分段向服务器请求待同步数据,直至完成数据同步。由此,在突然出现大批量数据需要同步的工作场景下,充分把控服务器和多个客户端当前运算处理能力,以进行大批量数据同步,从而,保持服务器与多个客户端的正常运行。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的数据同步方法、计算机可读存储介质和数据同步系统。
在介绍本发明实施例的数据同步方法、计算机可读存储介质和数据同步系统,结合附图1-2对现有技术的网络拓扑和数据同步方法进行介绍。
如图1所示,现有的网络拓扑系统通常为一个服务器控制多个相同的客户端,在进行数据同步时,如图2所示,服务器下发全量数据到客户端的过程中,若出现同步数据量较大的情况,容易导致服务器的运算处理能力消耗不足,另外,服务器并不清楚客户端的运算资源情况,若客户端的运算资源较紧缺的情况下,处理全量数据覆盖,容易导致客户端的运算资源崩溃。
为此,提出本发明实施例的数据同步方法,能够在突然出现大批量数据需要同步的工作场景下,充分把控服务器和多个客户端当前运算处理能力,以进行大批量数据同步,从而,保持服务器与多个客户端的正常运行。
图3为根据本发明实施例的数据同步方法的流程示意图。
如图3所示,数据同步方法,包括以下步骤:
S101,接收服务器发送的数据同步请求,其中,数据同步请求为服务器根据当前运算处理能力向与其通信连接的一个或多个客户端发送。
可以理解的是,服务器可根据当前运算处理能力情况,向与其通信连接的一个或多个客户端主动发送数据同步请求,由此,充分把控服务器当前运算处理能力,从而,在进行大批量数据同步的过程中,保持服务器的正常运行。
可选地,服务器发送的数据同步请求可包括全量数据同步请求和增量数据同步请求。
S102,一个或多个客户端中的每个客户端在接收到数据同步请求后,根据当前运算处理能力分段向服务器请求待同步数据,直至完成数据同步。
可以理解的是,在一个或多个客户端中的每个客户端在接收到数据同步请求后,还将根据当前运算处理能力分段向服务器请求待同步数据,直至完成数据同步,由此,充分把控多个客户端的当前运算处理能力,从而,以在进行大批量数据同步的情况下,保持多个客户端的正常运行。
由此,本发明实施例的数据同步方法,在突然出现大批量数据需要同步的工作场景下,能够充分把控服务器和多个客户端当前运算处理能力,以在进行大批量数据同步的过程中,保持服务器与多个客户端的正常运行。
进一步地,服务器根据当前运算处理能力判断允许向一个或多个客户端发送数据同步请求时,计算出允许同步的客户端数量并创建相应数量的同步线程。
具体而言,可根据服务器的当前运算处理能力,计算出允许同步的客户端数量并创建相应数量的同步线程,例如,服务器当前运算处理能力允许k个客户端进行同步,则创建k个同步线程,以进行数据同步。
需要说明的是,在本发明的实施例中,服务器仅在首次发起数据同步请求时,计算出允许同步的客户端数量并创建相应数量的同步线程,其中,服务器发送的数据同步请求数量与相应数量的同步线程相关联,以使得服务器在进行数据同步过程中,一直保持有相应数量的同步线程工作。
进一步地,如图4所示,一个或多个客户端根据当前运算处理能力分段向服务器请求待同步数据,包括:
S201,一个或多个客户端中的每个客户端根据当前运算处理能力计算每次向服务器同步请求的数据量,并根据每次向服务器同步请求的数据量以区间的形式向服务器发起数据请求。
具体而言,客户端在接收到服务器所发送的数据同步请求之后,假设根据客户端的当前运算处理能力确定每次向服务器同步请求的数据量为n,则以n/N的区间形式向服务器发起数据请求,其中,N为客户端的单次同步数据量。
进一步地,一个或多个客户端中的每个客户端对接收到的数据同步请求的类型进行判断,其中,如果接收到的数据同步请求为全量数据同步请求,则启动全量数据同步;如果接收到的数据同步请求为增量数据同步请求,则启动增量数据同步。
可以理解的是,若数据同步请求为全量数据同步请求,则启动全量数据同步,例如,N从零开始向服务器发起数据请求,以从第一个区间开始全量数据同步,以及,若数据同步请求为增量数据同步请求,则启动增量数据同步,例如,N从记录的最后数据编号开始向服务器发起数据请求,以从第N个区间开始增量数据同步。
进一步地,服务器还对每次发送给每个客户端的数据量的大小进行校验,并在当前发送给客户端的数据量小于客户端向服务器同步请求的数据量大小时,判断客户端完成数据同步,并从未进行同步请求的客户端中选择一个启动数据同步请求。
需要说明的是,客户端每次向服务器发起数据请求之后,服务器将根据客户端的数据同步请求,返回该客户端存在的k(k<=n)条数据,并返回下一个区间号i,作为记录的最后数据编号。
应理解的是,在客户端根据服务器返回的数据进行数据同步时,由于需同步的数据量通常大于N,每个客户端也需要循环同步,因此,在多次同步中,服务器可以对每次发送给每个客户端的数据量的大小进行校验,以判断客户端是否完成数据同步,其中,若当前发送给客户端的数据量k等于客户端向服务器同步请求的数据量大小n时,判断客户端未完成数据同步,服务器继续向客户端发送k条数据,以及,若当前发送给客户端的数据量k小于客户端向服务器同步请求的数据量大小n时,判断客户端完成数据同步,并从未进行同步请求的客户端中选择一个启动数据同步请求。
进一步地,服务器根据CPU个数和内存大小计算服务器的当前运算处理能力。
应理解的是,服务器的CPU个数越多,内存大小越大,则服务器的当前运算处理能力越强,其中,若服务器还在运行其它功能,则可结合其正在使用的运算处理能力计算出服务器的当前运算处理能力。
进一步地,客户端根据CPU个数和内存大小计算客户端的当前运算处理能力。
应理解的是,客户端的CPU个数越多,内存大小越大,则客户端的当前运算处理能力越强,其中,若客户端还在运行其它功能,则可结合其正在使用的运算处理能力计算出客户端的当前运算处理能力。
进一步地,如图5所示,每个客户端根据当前运算处理能力计算每次向服务器同步请求的数据量,具体包括:
S301,获取当前空闲的CPU个数。
可以理解的是,每个客户端的当前空闲的CPU个数可用于确定每个客户端的当前运算处理能力。
S302,根据当前空闲的CPU个数计算每次向服务器同步请求的数据量。
具体而言,假设客户端的当前空闲的CPU个数为4个,则每次向服务器同步请求的数据量为当前空闲的4个CPU的线程数乘以每条线程可以处理的数据量。
下面结合本发明具体实施例,对本发明实施例的数据同步方法的有益效果进行说明。
以停车管理系统全量同步月卡信息为例,假设某住宅小区有20个计费出入口客户端,以及一个后台管理服务器,由于某些客户端网络断开过、管理月卡信息错误等原因,物业需要重新同步各个客户端的月卡信息,且月卡数据达到上万级别。
采用本发明实施例的数据同步方法,进行分段同步的设计:1)增加服务器的全量同步月卡信息的数据同步请求发送接口,以及返回i至n条数据的数据传输接口;2)增加多个客户端的数据同步请求接收接口,以及接收单次同步数据量的传输接口;3)当物业需要校验全量月卡信息时,服务器根据当前运算处理能力,同时向其中5(假设服务器的当前运算处理能力可同时处理五个客户端的数据同步)个客户端发送全量数据同步请求;4)客户端接收到数据同步请求之后,根据当前运算处理能力,向服务器发起获取1000(假设客户端的当前运算处理能力可处理1000条数据的数据同步)条有效月卡数据。
由此,根据本发明实施例的数据同步方法,既保证大批量数据的正常同步,又不影响服务器和多个客户端的正常使用,同时还不需要增加服务器与多个客户端的硬件资源。
综上,根据本发明实施例的数据同步方法,接收服务器发送的数据同步请求,其中,数据同步请求为服务器根据当前运算处理能力情况向与其通信连接的一个或多个客户端发送,以及一个或多个客户端中的每个客户端在接收到数据同步请求后,根据当前运算处理能力分段向服务器请求待同步数据,直至完成数据同步。由此,在突然出现大批量数据需要同步的工作场景下,充分把控服务器和多个客户端当前运算处理能力,以进行大批量数据同步,从而,保持服务器与多个客户端的正常运行。
进一步地,本发明实施例提出了一种计算机可读存储介质,其上存储有数据同步程序,该数据同步程序被处理器执行时实现前述本发明实施例的数据同步方法的具体实施方式。
综上,根据本发明实施例的计算机可读存储介质,通过处理器执行其上存储有的数据同步程序,能够在突然出现大批量数据需要同步的工作场景下,充分把控服务器和多个客户端当前运算处理能力,以进行大批量数据同步,从而,保持服务器与多个客户端的正常运行。
图6为根据本发明实施例的数据同步系统的方框示意图。
如图6所示,数据同步系统1000包括服务器100和与其通信连接的客户端200。
其中,服务器100根据当前运算处理能力向与其通信连接的客户端200中的一个或多个客户端发送数据同步请求;一个或多个客户端中的每个客户端在接收到数据同步请求后,根据当前运算处理能力分段向服务器100请求待同步数据,直至完成数据同步。
由此,本发明实施例的数据同步系统,在突然出现大批量数据需要同步的工作场景下,服务器和多个客户端均可充分把控各自的当前运算处理能力,以在进行大批量数据同步的过程中,保持数据同步系统的正常运行。
需要说明的是,本发明实施例的数据同步系统的具体实施方式与前述本发明实施例的数据同步方法的具体实施方式一一对应,在此不再赘述。
综上,根据本发明实施例的数据同步系统,通过服务器根据当前运算处理能力向多个客户端中的一个或多个客户端发送数据同步请求,以及在一个或多个客户端中的每个客户端在接收到数据同步请求后,根据当前运算处理能力分段向服务器请求待同步数据,直至完成数据同步。由此,在突然出现大批量数据需要同步的工作场景下,充分把控服务器和多个客户端当前运算处理能力,以进行大批量数据同步,从而,保持服务器与多个客户端的正常运行。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。