具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据同步方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与第一服务器104进行通信,终端102还可通过网络与第二服务器104进行通信,第一服务器104与第二服务器106也可通过网络进行连接。第一服务器104接收到终端102发送的业务请求,获取业务请求中的业务类型信息,并将业务类型信息发送给第二服务器106,以指示第二服务器106对与业务类型信息相对应的业务请求进行加锁,然后根据业务请求对业务进行处理得到业务处理结果,并将业务处理结果发送到第二服务器106。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,第一服务器104和第二服务器106均属于预先设置好的实现数据同步服务器集群;其中第一服务104可以是一个服务器,第二服务器106可以是一个服务器也可以是多个服务器组成的服务器集群。
在一个实施例中,如图2所示,提供了一种数据同步方法,以该方法应用于图1中的第一服务器为例进行说明,包括以下步骤:
S202,接收业务请求,获取业务请求中的业务类型信息。
其中,业务请求是指终端请求服务器对终端业务进行处理的信息,其中业务请求有多种类型,例如多媒体内容的下载请求、电子交易的支付请求,数字验签请求等等。
在一个可能的实施例中,业务类型信息可以通过业务请求中的业务内容来确定。例如,假设用户欲通过视频网站观看电视剧集,当用户点击了视频网站上相关的图标或链接等,终端设备就向服务器发送了业务请求。此时的业务请求通常是多媒体内容的下载请求,服务器对多媒体内容的下载请求进行解析,得到所请求下载的多媒体内容的URL,由此第一服务器可确定业务内容所属的业务类型为视频下载。
具体地,服务器中的分发器会对来自终端设备的业务请求进行解析,从而得到业务请求中的业务类型信息。其中业务类型信息可以是业务类型名称信息,也可以是与业务类型相对应的标号。在一可能的实施例中,第一服务器可以同时接收多种类型的业务处理请求,并由服务器中不同的业务处理系统来分别对不同类型的业务进行处理。
S204,将业务类型信息发送给第二服务器,以指示第二服务器对与业务类型信息相对应的业务请求进行加锁。
其中,加锁是指将控制变量置位,控制共享资源不能被其他进程访问。当服务器拒绝根据某一业务处理请求来对某一业务进行处理时,可以对该业务处理请求进行加锁。
在本实施例中,第一服务器与第二服务器均属于同步服务器集群,当该同步服务器集群中的某一服务器率先接收到某一类型的业务请求,则将该服务器确定为第一服务器,将其他同步服务器集群中的其他服务器确定为第二服务器。
具体地,第一服务器接收到第一终端某个业务处理请求之后,从业务处理请求中提取业务类型信息,并将该业务类型信息发送给第二服务器,第二服务器在接收到该业务类型信息时,对第二终端发送的与该业务类型信息相对应的业务请求进行加锁,从而实现同步服务器集群中其他服务器的对同样类型的业务处理请求的拦截。其中第一终端与第二终端可以是同一个终端设备,也可以是不同的终端设备。在其他实施例中,当第一服务器同时接收到多个不同类型的业务请求时,则同时从多个不同类型的业务请求中解析出不同的业务类型信息,并将解析出来的多个业务类型信息发送给第二服务器,第二服务器接收到多个业务类型信息,可以对多个类型信息相对应的业务请求都进行加锁。
S206,根据业务请求对业务进行处理得到业务处理结果,并将业务处理结果发送到第二服务器。
第一服务器接收到业务请求后,将利用分发器对来自终端设备的业务请求进行解析,从而得到终端设备所请求的业务内容,可以根据业务请求中的业务内容来确定业务的类型,根据该业务类型调用服务器中的不同的业务处理系统来处理不同类型的业务,得到业务处理结果,并将业务处理结果同步至同步服务器集群中的其他服务器,即第二服务器。其中,第一服务器与第二服务器之间可以采用广播的形式传输数据,也可以通过在第一服务器与第二服务器之间建立虚拟公网隧道来传输数据,从而防止敏感的数据被窃取。
当第二服务器接收到第一服务器发送的在一实施例中,第二服务器在接收到之前接收到的与业务类型信息相对应的业务处理结果后,对与业务类型信息相对应的业务请求进行解锁,也就是说在第二服务器均接收到与之前第一服务器发送的业务类型信息相对应的业务处理结果后,可以接收加锁的业务类型信息对应的业务请求并对该类型的业务进行处理。
上述数据同步方法中,第一服务器接收到终端发送的业务请求,并获取业务请求中的业务类型信息;将该业务类型信息发送给第二服务器,以指示第二服务器对与该业务类型信息相对应的业务请求进行加锁;根据业务请求对业务进行处理得到业务处理结果,并将业务处理结果发送到第二服务器。当第一服务器接收到业务请求时,第二服务器会对同类型的业务进行加锁,从而避免了多个进行数据同步的服务器同时处理同一种业务,减少了服务器之间的业务冲突,提高了数据同步的效率。
在一个实施例中,如图3所示,获取业务请求中的业务类型信息,包括:
S302,获取业务请求中的业务标号。
其中业务标号是对业务类型信息的表征。可以理解的是,业务标号与业务类型信息是一一对应的关系。在本实施例中,所有进行数据同步的服务器中都会存储器中预存一个业务标号与业务类型信息的映射表。例如,业务标号为01,对应的业务类型信息为A1,业务标号为02,对应的业务类型信息为A2。
具体地,第一服务接收终端发送的业务请求,并从业务请求中解析出业务类型信息,并在业务标号与业务类型信息的映射表中根据解析出来的业务类型信息查找到与之对应的业务标号。在其他实施例中,第一服务器也可直接从业务请求中解析出业务类型名称信息发送给第二服务器。
将业务类型信息发送给第二服务器,以指示第二服务器对与业务类型信息相对应的业务请求进行加锁,包括:
S304,将业务标号和时间戳发送给第二服务器,以指示第二服务器对与业务类型信息相对应的业务请求进行加锁。
具体地,第一服务器将S302中得到的业务标号与绝对时间戳进行封装并将其发送给第二服务器,第二服务器接收到该封装信息后从中解析出业务标号,当第二服务器在接收到第一服务器发送的封装信息之后接收到终端发送的业务请求,第二服务器会将终端发送的业务请求中的业务类型与第一服务器发送的业务标号进行比较,当终端发送的业务请求中的业务类型与第一服务器发送的业务标号相匹配时,第二服务器会对终端发送的业务请求进行加锁,不再对终端发送的同类型的业务请求做出响应。
本实施例中将业务标号加盖第一服务器接收到业务请求的绝对时间戳,并将业务标号与时间戳封装在一起并存储在第一服务器的数据库中,从而将每一个业务标号进行标记,以便于用户通过绝对时间戳来分辨相同的业务标号,以此来区分不同时间发出的同类型业务请求。
在一个实施例中,如图4所示,根据业务请求对业务进行处理得到业务处理结果,并将业务处理结果发送到第二服务器,包括:
S402,调用应用程序接口将第一业务数据存入业务链表中。
其中,第一业务数据是指业务请求中业务内容中的待处理的业务数据。第一服务器接收到终端发送的业务请求,并从业务请求中解析出业务类型,根据不同的业务类型调用服务器中不同的业务处理系统来响应该业务请求。
具体地,第一服务器通过应用程序接口接收待处理的业务数据,与业务类型相对应的业务处理系统中的业务链表中存储有业务处理逻辑,其中业务处理逻辑中可以用结构化查询语言执行语句来实现。
S404,在业务链表中对第一业务数据进行处理得到第二业务数据。
其中,第二业务数据是指根据业务链表中的业务处理逻辑对第一业务数据进行处理得到的数据。其中,业务处理逻辑包括对业务数据检查、修改、删除等操作以及本地文件的新建、修改保存、删除等。
具体地,第一服务器将S402接收到的第一业务数据存入业务链表中,并通过存储在业务链表中的业务处理逻辑对第一业务数据进行处理得到第二业务数据。
S406,将第二业务数据和业务类型信息封装后进行序列化形成业务处理结果,并将业务处理结果发送至第二服务器。
其中,序列化是指将对象的状态信息转换为可以存储或传输的形式的过程。具体地,第一服务器将S404得到的第二业务数据和从业务请求中解析出来的业务类型信息进行封装,然后将其转化为可以便于存储或者传输的形式,例如将第二业务数据和业务类型信息转化为可扩展标记语言式,并将其广播至第二服务器。在其他实施例中,第一服务器向第二服务器传递数据的方式可以是使用虚拟专用网,将业务处理结果进行加密封装之后通过虚拟的公网隧道传输,从而防止敏感的数据被窃取。
在本实施例中,通过业务链表对第一业务数据进行处理得到第二业务数据,并将第二业务数据和与其相对应的业务类型信息封装并发送给第二服务器,能够便于第二服务器快速地根据业务类型信息对相应的业务请求进行加锁,提高数据同步的效率。
在一个实施例中,如图5所示,提供了一种数据同步方法,以该方法应用于图1中的第二服务器为例进行说明,包括以下步骤:
S502,接收第一服务器发送的业务类型信息,对与业务类型信息相对应的业务请求进行加锁。
其中,业务类型信息可以是业务类型名称信息,也可以是与业务类型信息对应的业务标号。
具体地,第二服务器接收到第一服务器发送的业务类型信息,并对在接收到第一服务器发送的业务类型信息之后接收到的业务请求进行解析,获取业务请求中的业务类型信息,并将其与第一服务器发送的业务类型信息进行对比,如果两者一致的话,则对该业务请求进行加锁。
S504,当接收到第一服务器发送的与业务类型信息相对应的业务处理结果,对与业务类型信息相对应的业务请求进行解锁。
当第二服务器在接收到第一服务器发送的业务类型信息之后,接收到了与该业务类型相对应的业务处理结果时,对于该业务类型信息相对应的业务请求进行解锁。在其他实施例中,若第二服务器接收到某一服务器广播的业务标号,而在预设时长内没有接收到相应业务数据,则对该类型业务进行自动解锁,其中,预设时长可以根据业务的平均处理时间决定。
在一个实施例中,如图6所示,当接收到第一服务器发送的与业务类型信息相对应的业务处理结果,对与业务类型信息相对应的业务请求进行解锁,包括:
S602,将接收到的业务处理结果进行反序列化,得到业务类型信息。
由于第一服务器是将业务处理数据与业务类型信息封装成业务处理结果并进行序列化操作之后发送至第二服务器的,所以在第二服务器端需要对业务处理结果进行反序列化,并从反序列化结果中得到业务类型信息。
S604,查找与业务类型信息相对应的业务类型。
当第二服务器在接收到第一服务器发送的业务类型信息后接收到终端的业务数据请求,首先从该业务请求中解析出业务类型,并将该业务类型与第一服务器发送的业务类型进行对比。
S606,当业务处理结果的业务类型与加锁的业务类型一致时,则对加锁的业务类型对应的业务请求解锁。
根据S604得到的对比结果判断,当业务处理结果的业务类型与加锁的业务类型一致时,则对加锁的业务类型对应的业务请求解锁;当业务处理结果的业务类型与加锁的业务类型不一致时,则可以响应该业务请求。
本实施例中,当接收到第一服务器发送的与业务类型信息相对应的业务处理结果,对与业务类型信息相对应的业务请求进行解锁,从而避免了数据同步的服务器同时处理同一种业务,减少了服务器之间的业务冲突,提高了数据同步的效率。
在一个实施例中,当第一服务器接收到的业务请求为数字验签请求时,数据同步步骤可以包括:
S1,终端从数据库中获取签名服务器的运行状态,并产生相关的签名数据生成请求,并向签名服务器发送数字签名请求;
S2,签名服务器接收到数字验签请求,同时当查找到此时的签名类型的业务并没有被加锁时,向同步服务器中的其他的第二服务器发送签名业务标识;
S3,第二服务器接收到第一服务器发送的签名业务标号后,对之后的终端发送的签名类业务请求进行加锁;
S4,第一服务器也就是签名验签服务器接收终端的数字证书验证申请,获取签名人数字证书,并进行有效性验证;对信息通过安全信息摘要算法得到信息摘要数据,再对信息摘要数据进行RSA加密运算,得到签名信息;对信息进行摘要运算,再用RSA加密运算对数字签名进行解密;比较解密信息和信息摘要,进行验证接收到的数据是否被修改过,进而验证签名是否有效;一旦在服务器同步过程中出现错误,则由签名服务器向其他服务器发出回滚命令;
S5,第一服务器将签名是否有效的业务处理结果发送给第二服务器,第二服务器接收到业务处理请求,从而对签名业务进行解锁。
应该理解的是,虽然图2-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-6中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种数据同步装置700,包括:信息获取模块702、信息发送704模块和处理结果发送模块706,其中:
信息获取模块702,用于接收业务请求,获取所述业务请求中的业务类型信息。
信息发送模块704,用于将所述业务类型信息发送给第二服务器,以指示所述第二服务器对与所述业务类型信息相对应的业务请求进行加锁。
处理结果发送模块706,用于根据所述业务请求对业务进行处理得到业务处理结果,并将所述业务处理结果发送到所述第二服务器。
上述数据同步装置,第一服务器接收到终端发送的业务请求,并获取业务请求中的业务类型信息;将该业务类型信息发送给第二服务器,以指示第二服务器对与该业务类型信息相对应的业务请求进行加锁;根据业务请求对业务进行处理得到业务处理结果,并将业务处理结果发送到第二服务器。当第一服务器接收到业务请求时,第二服务器会对同类型的业务进行加锁,从而避免了数据同步的服务器同时处理同一种业务,减少了服务器之间的业务冲突,提高了数据同步的效率。
在一个实施例中,信息获取模块702还用于获取所述业务请求中的业务标号;信息发送模块还用于将所述业务标号和时间戳发送给第二服务器,以指示所述第二服务器对与所述业务类型信息相对应的业务请求进行加锁。
在一个实施例中,处理结果发送模块706包括:第一业务数据获取子模块、第二业务数据获取子模块和结果发送子模块。其中,第一业务数据获取子模块,用于调用应用程序接口将第一业务数据存入业务链表中;第二业务数据获取子模块,用于在所述业务链表中对所述第一业务数据进行处理得到第二业务数据;结果发送子模块,用于将所述第二业务数据和所述业务类型信息封装后进行序列化形成业务处理结果,并将所述业务处理结果发送至第二服务器。
在一个实施例中,如图8所示,提供了一种数据同步装置800,包括:加锁模块802,解锁模块804,其中:
加锁模块802,用于接收第一服务器发送的业务类型信息,对与所述业务类型信息相对应的业务请求进行加锁;
解锁模块804,用于当接收到所述第一服务器发送的与所述业务类型信息相对应的业务处理结果,对与所述业务类型信息相对应的业务请求进行解锁。
在一个实施例中,所述装置还包括计时模块。其中,计时模块,用于在接收到第一服务器发送的业务标号之后,开始计时。解锁模块804,还用于若在预设时长内没有接收到与业务类型信息相对应的业务处理结果,则自动对与所述业务类型信息相对应的业务请求进行解锁。
在一个实施例中,解锁模块804包括:业务类型获取子模块、业务类型查找子模块和加锁业务解锁子模块。其中,业务类型获取子模块,用于将接收到的业务处理结果进行反序列化,得到所述业务类型信息;业务类型查找子模块,用于查找与所述业务类型信息相对应的业务类型;加锁业务解锁子模块,用于当所述业务处理结果的业务类型与加锁的业务类型一致时,则对所述加锁的业务类型对应的业务请求解锁。
关于数据同步装置的具体限定可以参见上文中对于数据同步方法的限定,在此不再赘述。上述数据同步装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据同步数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据同步方法。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:接收业务请求,获取所述业务请求中的业务类型信息;将所述业务类型信息发送给第二服务器,以指示所述第二服务器对与所述业务类型信息相对应的业务请求进行加锁;根据所述业务请求对业务进行处理得到业务处理结果,并将所述业务处理结果发送到所述第二服务器。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取所述业务请求中的业务标号;所述将所述业务类型信息发送给第二服务器,以指示所述第二服务器对与所述业务类型信息相对应的业务请求进行加锁,包括:将所述业务标号和时间戳发送给第二服务器,以指示所述第二服务器对与所述业务类型信息相对应的业务请求进行加锁。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:调用应用程序接口将第一业务数据存入业务链表中;在所述业务链表中对所述第一业务数据进行处理得到第二业务数据;将所述第二业务数据和所述业务类型信息封装后进行序列化形成业务处理结果,并将所述业务处理结果发送至第二服务器。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:接收第一服务器发送的业务类型信息,对与所述业务类型信息相对应的业务请求进行加锁;当接收到所述第一服务器发送的与所述业务类型信息相对应的业务处理结果,对与所述业务类型信息相对应的业务请求进行解锁。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:在接收到第一服务器发送的业务标号之后,开始计时;若在预设时长内没有接收到与业务类型信息相对应的业务处理结果,则自动对与所述业务类型信息相对应的业务请求进行解锁。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:将接收到的业务处理结果进行反序列化,得到所述业务类型信息;查找与所述业务类型信息相对应的业务类型;当所述业务处理结果的业务类型与加锁的业务类型一致时,则对所述加锁的业务类型对应的业务请求解锁。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:接收业务请求,获取所述业务请求中的业务类型信息;将所述业务类型信息发送给第二服务器,以指示所述第二服务器对与所述业务类型信息相对应的业务请求进行加锁;根据所述业务请求对业务进行处理得到业务处理结果,并将所述业务处理结果发送到所述第二服务器。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取所述业务请求中的业务标号;所述将所述业务类型信息发送给第二服务器,以指示所述第二服务器对与所述业务类型信息相对应的业务请求进行加锁,包括:将所述业务标号和时间戳发送给第二服务器,以指示所述第二服务器对与所述业务类型信息相对应的业务请求进行加锁。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取所述业务请求中的业务标号;所述将所述业务类型信息发送给第二服务器,以指示所述第二服务器对与所述业务类型信息相对应的业务请求进行加锁,包括:将所述业务标号和时间戳发送给第二服务器,以指示所述第二服务器对与所述业务类型信息相对应的业务请求进行加锁。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:调用应用程序接口将第一业务数据存入业务链表中;在所述业务链表中对所述第一业务数据进行处理得到第二业务数据;将所述第二业务数据和所述业务类型信息封装后进行序列化形成业务处理结果,并将所述业务处理结果发送至第二服务器。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:接收第一服务器发送的业务类型信息,对与所述业务类型信息相对应的业务请求进行加锁;当接收到所述第一服务器发送的与所述业务类型信息相对应的业务处理结果,对与所述业务类型信息相对应的业务请求进行解锁。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:在接收到第一服务器发送的业务标号之后,开始计时;若在预设时长内没有接收到与业务类型信息相对应的业务处理结果,则自动对与所述业务类型信息相对应的业务请求进行解锁。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将接收到的业务处理结果进行反序列化,得到所述业务类型信息;查找与所述业务类型信息相对应的业务类型;当所述业务处理结果的业务类型与加锁的业务类型一致时,则对所述加锁的业务类型对应的业务请求解锁。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。