CN111262923B - 数据同步方法、装置、计算机设备及存储介质 - Google Patents
数据同步方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN111262923B CN111262923B CN202010037664.0A CN202010037664A CN111262923B CN 111262923 B CN111262923 B CN 111262923B CN 202010037664 A CN202010037664 A CN 202010037664A CN 111262923 B CN111262923 B CN 111262923B
- Authority
- CN
- China
- Prior art keywords
- data
- index
- slave
- host
- queue
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6275—Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据同步方法、装置、计算机设备及存储介质,通过实时监控客户端集群,客户端集群包括N个客户端,若检测到N个客户端的集群中的任一客户端发送数据请求,则将最先发送数据请求的客户端确定为主机,将其余的N‑1个客户端确定为从机;对主机发出的数据请求对应的数据建立索引,并基于从机发出的数据请求对应的数据构建长度为N‑1的阻塞队列;采用网络代理的方式截取主机发送的数据请求中的HTTP报文,校验HTTP报文中包含的头消息是否存在索引中;若HTTP报文中包含的头消息不存在索引中,则将主机返回的响应数据填充至阻塞队列对应的死锁队列中,以使从机的数据与主机的数据同步;从而提高了数据同步效率。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种数据同步方法、装置、计算机设备及存储介质。
背景技术
在软件测试中,需要对一个软件在不同操作系统版本、不同机型设备等进行兼容性测试,为了防止机型的差异出现兼容性差异,软件测试者需要将软件在不同机型和操作系统版本上进行遍历兼容性测试,为了减少测试时间,需要进行同步操作,需要将某台主机从服务器接收到的数据同步给从机并截断从机的外发,但是受制于不同设备在进行测试时网络会真正请求到服务器端,造成数据的紊乱以及数据依赖带来的操作不同步问题,必须对所有服务器数据进行实时同步,即对于n台测试机器,1台主机的http数据会实时同步到n-1台主机,同时在服务器端仅可感知一次服务请求,即可实现对被测对象进行运算操作控制的同时,也能同步对其运算过程中的中间数据、功耗特征等进行记录,以开展进一步的分析,并传送到PC端进行存储、处理和分析。
传统地,通常通过网络镜像的方式对主从模式的数据进行同步,即将主机的端口镜像到从机,然而,这种方式由于从机无法选择性的跟主机保持同步,必须接受所有主机同步镜像灌入的数据。因此,需要一种新的数据同步技术,可以保持同一系统中各客户端之间的数据同步。
发明内容
本发明实施例提供一种数据同步方法、装置、计算机设备及存储介质,以解决数据同步效率不高的问题。
一种数据同步方法,包括:
实时监控客户端集群,所述客户端集群包括N个客户端,N为大于1的自然数;
若检测到N个客户端的集群中的任一客户端发送数据请求,则将最先发送数据请求的客户端确定为主机,将其余的N-1个客户端确定为从机;
对所述主机发出的数据请求对应的数据建立索引,并基于所述从机发出的数据请求对应的数据构建长度为N-1的阻塞队列;
采用网络代理的方式截取所述主机发送的数据请求中的HTTP报文,校验所述HTTP报文中包含的头消息是否存在所述索引中;
若所述HTTP报文中包含的头消息不存在所述索引中,则将所述主机返回的响应数据填充至所述阻塞队列对应的死锁队列中,以使所述从机的数据与所述主机的数据同步。
一种数据同步装置,包括:
集群监控模块,用于实时监控客户端集群,所述客户端集群包括N个客户端,N为大于1的自然数;
主从机确定模块,用于若检测到N个客户端的集群中的任一客户端发送数据请求,则将最先发送数据请求的客户端确定为主机,将其余的N-1个客户端确定为从机;
队列建立模块,用于对所述主机发出的数据请求对应的数据建立索引,并基于所述从机发出的数据请求对应的数据构建长度为N-1的阻塞队列;
索引校验模块,用于采用网络代理的方式截取所述主机发送的数据请求中的HTTP报文,校验所述HTTP报文中包含的头消息是否存在所述索引中;
数据同步模块,用于若所述HTTP报文中包含的头消息不存在所述索引中,则将所述主机返回的响应数据填充至所述阻塞队列对应的死锁队列中,以使所述从机的数据与所述主机的数据同步。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据同步方法。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据同步方法。
上述数据同步方法、装置、计算机设备及存储介质中,首先,实时监控客户端集群,客户端集群包括N个客户端,以便后续确定客户端集群中每个客户端的主从角色;然后,若检测到N个客户端的集群中的任一客户端发送数据请求,则将最先发送数据请求的客户端确定为主机,将其余的N-1个客户端确定为从机,方便对客户端集群的维护,也解决了客户端集群中无法探知主机标签导致的无法感知主机的问题;接着,对主机发出的数据请求对应的数据建立索引,并基于从机发出的数据请求对应的数据构建长度为N-1的阻塞队列,以便后续能够保证等待时间最长的队列最优先能够访问队列,有利于提高从机的数据的获取效率;接下来,采用网络代理的方式截取主机发送的数据请求中的HTTP报文,校验HTTP报文中包含的头消息是否存在索引中,保证从机上送外发数据100%被截断,并且从机可根据索引选择性的接收主机的同步数据;最后,若HTTP报文中包含的头消息不存在索引中,则将主机返回的响应数据填充至阻塞队列对应的死锁队列中,以使从机的数据与主机的数据同步,减少系统开销,提高系统性能,进而提高了数据同步效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的数据同步方法的应用环境示意图;
图2是本发明实施例提供的数据同步方法一示例图;
图3是本发明实施例提供的数据同步方法的另一示例图;
图4是本发明实施例提供的数据同步方法的另一示例图;
图5是本发明实施例提供的数据同步方法的另一示例图;
图6是本发明实施例提供的数据同步装置的一原理框图;
图7是本发明实施例提供的数据同步装置的另一原理框图;
图8是本发明实施例提供的数据同步装置的另一原理框图;
图9是本发明实施例提供的计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请提供的数据同步方法,可应用在如图1的应用环境中,其中,客户端通过网络与服务端进行通信,服务端实时监控客户端集群,该客户端集群包括N个客户端,当检测到N个客户端的集群中的任一客户端发送数据请求时,则将最先发送数据请求的客户端确定为主机,将其余的N-1个客户端确定为从机;然后,对主机发出的数据请求对应的数据建立索引,并基于从机发出的数据请求对应的数据构建长度为N-1的阻塞队列;接着,采用网络代理的方式截取主机发送的数据请求中的HTTP报文,校验HTTP报文中包含的头消息是否存在索引中;进而在HTTP报文中包含的头消息不存在索引中时,将主机返回的响应数据填充至阻塞队列对应的死锁队列中,以使从机的数据与主机的数据同步。其中,客户端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务端可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,以该方法应用于图1中的服务端为例进行说明,包括如下步骤:
S10:实时监控客户端集群,客户端集群包括N个客户端,N为大于1的自然数。
具体地,服务端实时监控客户端集群,该客户端集群由N个客户端组成,以软件测试为例,对于N台测试机器组成的集群,也即N个客户端,为了防止机型的差异(不同客户端的差异)导致兼容性差异,通过服务端的监控工具实时监控客户端集群的状态,如连接客户数、消息请求次数等,通过监控客户端集群的状态,以便后续确定客户端集群中每个客户端的主从角色。
S20:若检测到N个客户端的集群中的任一客户端发送数据请求,则将最先发送数据请求的客户端确定为主机,将其余的N-1个客户端确定为从机。
具体地,服务端对包含有N个客户端组成的客户端集群进行实时检测,根据检测结果确定出1个主机和N-1个从机,其中,N为大于1的自然数。
在对包含有N个客户端的客户端集群进行同步操作时,由于每个客户端本身的性能差异性,每个客户端发出到服务端的请求时存在时延,服务端将拦截到最早的一个请求,确定为第一个向服务器发出请求的客户端,也即主机,将客户端集群中的其余N-1个客户端确定为从机。可以理解地,将第一个发出请求的客户端作为主机,而不是强制划定主机,方便对客户端集群的维护,也解决了客户端集群中无法探知主机标签导致的无法感知主机的问题,进一步地,还能够防止在强制划定主机的情况下,解决从机的速度优于主机所带来的从机等待的问题,防止强制划定主机的情况下主机宕机,克服了整个集群无主机的的问题。
S30:对主机发出的数据请求对应的数据建立索引,并基于从机发出的数据请求对应的数据构建长度为N-1的阻塞队列。
其中,索引(Index)是一个排序的列表,用于数据库高效获取数据的数据结构。在这个数据结构的列表中存储着索引的值和包含这个值的数据所在行的物理地址,在数据十分庞大的时候,索引可以大大加快查询的速度,因此,使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址,然后访问相应的数据。可以理解地,步骤S20中的主机即为一客户端发出的请求不存在于索引的请求对应的客户端,从机为N-1个客户端发出的请求存在于索引的请求对应的客户端。
其中,阻塞队列是指具有阻塞功能的链式数据结构,当队列空时读取队列请求被阻塞,需等待队列非空时才可以取出;当队列满时,输入队列时被阻塞,需要等待队列非满时才能被输入(插入),用于提高返回数据的存储空间,还能够保证同一时刻仅仅有一个线程操作队列。
具体地,将第一个发出HTTP报文的主机的数据发出和接收做处理:发出的数据先建立索引,接收数据返回后将接收的数据建立定长(等同于从机数目)阻塞队列,可以采用SQL中的create index方法对主机发出的请求的数据建立索引,并基于从机发送数据请求中的数据,基于数组创建ArrayBlockingQueue对象,且该对象的容量为N-1,即构建了一个长度为N-1的阻塞队列,以便后续能够保证等待时间最长的队列最优先能够访问队列,有利于提高从机的数据的获取效率。
S40:采用网络代理的方式截取主机发送的数据请求中的HTTP报文,校验HTTP报文中包含的头消息是否存在索引中。
其中,HTTP报文是指HTTP请求协议的所有数据,包含客户端请求服务器发出的数据请求以及服务器返回的应答数据。网络代理,即客户端C需要访问服务器S,通过代理的方式,则客户端C不直接访问服务器S,客户端C需要先访问中间代理服务器P,中间代理服务器P接收到客户端C的请求后,将数据请求发往服务器S,同时获得服务器S的返回响应,再返回给客户端C。其中,头消息是指HTTP报文的报文头,即消息头部,由key/value键值对组成,每行一对,key和value用冒号":"分隔,请求头部通知服务器有关于client端的请求信息,是服务端根据请求返回的信息,可以使用HttpServletRequest的方法获取,将获取到的头消息与步骤S30中建立的索引进行比对,以校验HTTP报文中包含的头消息是否存在索引中,以便后续根据校验结果对主机的数据以及从机的数据进行进一步地处理。
可以理解地,通过网络代理的方式截取主机发送数据的请求中的HTTP报文,能够劫持客户端发往服务端的数据包,同时在N个客户端的客户端集群中,主机的发送和响应被劫持后,可直接劫持其余N-1个(从机)客户端的响应同步主机的响应,以便后续依据请求内容作为索引实现主机与从机同步的效果。因此,网络代理的方式可允许主机和从机直接存在时间延时,可控制从机同步信息。进一步地,从机的请求到达代理服务之后,因为可以通过索引头查询到此索引头已存在,请求信息直接抛掉,不上送服务端,直接从阻塞队列里取返回内容返回给各个从机,保证从机上送外发数据100%被截断,并且从机可根据索引选择性的接收主机的同步数据。
优选地,还可以对阻塞队列设置超时理论值,其中,该时间可以是5秒(S)。
S50:若HTTP报文中包含的头消息不存在索引中,则将主机返回的响应数据填充至阻塞队列对应的死锁队列中,以使从机的数据与主机的数据同步。
具体地,若HTTP报文中包含的头消息不存在索引中,则客户端集群的数据为空,因此将主机的返回的相应数据复制N-1份,并填充到阻塞队列对应的死锁队列,采用代理的方式,截取从机上送外发的请求直接抛掉,从主机建立的索引里查找对应的队列地址,从队列中取出数据发给从机。将队列中的数据发送给从机,在索引中找到对应信息的情况,如果请求经过代理服务器时在索引中得到信息,即返回一个死锁队列,且死锁队列不为空,则从死锁队列取出一个元素,返回给从机从而实现了主机的数据和从机的数据的同步。进一步地,本实施例中通过死锁队列解决了请求返回的时间差问题,当主机的请求到了服务端,服务端未返回之前,队列不会被填充,则此时从机会死锁等待主机发出的返回被响应,并且采用死锁队列的模式使用了中断,用cpu硬件处理数据,减少系统开销,提高系统性能,进而提高了数据同步效率。
需要说明的是,本实施例中,将HTTP报文加入预设的索引中,从而可以确定主机是哪一个客户端,进一步保证主机的准确性和从机数据可以100%取到。
本实施例中,首先,实时监控客户端集群,客户端集群包括N个客户端,以便后续确定客户端集群中每个客户端的主从角色;然后,若检测到N个客户端的集群中的任一客户端发送数据请求,则将最先发送数据请求的客户端确定为主机,将其余的N-1个客户端确定为从机,方便对客户端集群的维护,也解决了客户端集群中无法探知主机标签导致的无法感知主机的问题;接着,对主机发出的数据请求对应的数据建立索引,并基于从机发出的数据请求对应的数据构建长度为N-1的阻塞队列,以便后续能够保证等待时间最长的队列最优先能够访问队列,有利于提高从机的数据的获取效率;接下来,采用网络代理的方式截取主机发送的数据请求中的HTTP报文,校验HTTP报文中包含的头消息是否存在索引中,保证从机上送外发数据100%被截断,并且从机可根据索引选择性的接收主机的同步数据;最后,若HTTP报文中包含的头消息不存在索引中,则将主机返回的响应数据填充至阻塞队列对应的死锁队列中,以使从机的数据与主机的数据同步,减少系统开销,提高系统性能,进而提高了数据同步效率。
在一实施例中,如图3所示,步骤S40中,校验HTTP报文中包含的头消息是否存在索引中,具体包括如下步骤:
S41:提取HTTP报文中包含的URL和接口参数。
其中,URL(Uniform Resource Locator)是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址,如http://a.b.com/queryData.do即为HTTP报文中包含的URL。接口参数是指HTTP报文请求行的参数,如a_key=a_data。具体地,可以通过request-URL提取HTTP报文中包含的URL,通过getParameters()方法提取接口参数。
S42:将URL和接口参数按照预设的组合方式进行组合得到查询索引。
其中,预设的组合方式是指预先设定的信息连接组合规则,本实施例中的组合方式为顺序连接,即“信息A+信息B”的方式。查询索引是指用于查询或者搜索的关键信息。示例性地,当网络代理服务器拦截到一个请求,例如一个http请求的地址是:http://a.b.com/queryData.do参数是a_key=a_data;b_key=b_data,则查询索引为:
http://a.b.com/queryData.do?a_key=a_data&b_key=b_data。
可以理解地,采用将URL和接口参数按照预设的组合方式进行组合作为查询索引,可以保证查询索引的唯一性。
S43:基于查询索引判断HTTP报文中包含的头消息是否存在索引中。
具体地,以步骤S42中的查询索引为例,即以http://a.b.com/queryData.do?a_key=a_data&b_key=b_data作为查询索引,判断此HTTP报文中包含的头消息是否存在索引中,通过索引的方式提高了查询效率,加快了校验的速度。
需要说明的是,由于索引是一个hashmap,key为索引头,数据value为死锁队列。若索引中不存在该查询索引,则将该查询索引http://a.b.com/queryData.do?a_key=a_data&b_key=b_data加入hashmap,则索引头对应的value为一个新建的空的死锁队列,以保证索引的准确完整性。
本实施例中,首先,提取HTTP报文中包含的URL和接口参数;然后,将URL和接口参数按照预设的组合方式进行组合得到查询索引,保证查询索引的唯一性;最后,基于查询索引判断HTTP报文中包含的头消息是否存在索引中,通过索引的方式提高了查询效率,加快了校验的速度。
在一实施例中,如图4所示,在步骤S40之后,即在校验HTTP报文中包含的头消息是否存在索引中之后,该数据同步方法还包括:
S60:若HTTP报文中包含的头消息存在索引中,则从索引中取出数据。
具体地,网络代理服务器拦截到一个请求,例如一个http请求的地址是:http://a.b.com/insertData.do参数是c_key=c_data;d_key=d_data,则HTTP报文中包含的头消息为http://a.b.com/insertData.do?c_key=c_data&d_key=d_data,查询此请求是否在索引中,当头消息存在索引中时,则索引头存在,即确定发送该该请求对应客户端是从机,由于索引已命中,则利用索引头从索引中取出返回数据,则利用索引头从索引中取出返回数据,如果此时队列不阻塞,则可以取出数据,如果此时队列阻塞,则等待队列被填充后继续执行,将数据直接返回给从机,即取出步骤S43中的索引hashmap中的value部分,即本实施例中的数据。进一步地,若HTTP报文中包含的头消息存在索引中,则服务端会将该从机的请求抛掉,实现对从机的数据的拦截。
S70:将数据返回给从机,以使从机的数据与主机的数据同步。
具体地,服务端将从机的数据拦截后,将索引中取出的数据直接返回给从机,准确且快速地实现了对主机的数据和从机的数据的同步。
本实施例中,若HTTP报文中包含的头消息存在索引中,则从索引中取出数据,实现了对从机的数据的拦截;将数据返回给从机,以使从机的数据与主机的数据同步,准确且快速地实现了对主机的数据和从机的数据的同步。
在一实施例中,在步骤S50之后,即在以使从机的数据与主机的数据同步之后,数据同步方法还包括:
对死锁队列进行数据释放以截断从机的数据外发。
具体地,对死锁队列进行数据释放以截断从机的数据外发,定长为N-1阻塞队列被取完后立即释放,或者阻塞队列超时后立即释放,从而能够防止相同接口第二次请求数据访问第一次缓存,截断了从机的数据的外发,进一步提高了从机的数据与主机的数据的实现同步的效率。
本实施例中,对死锁队列进行数据释放以截断从机的数据外发,进一步提高了从机的数据与主机的数据的实现同步的效率。
在一实施例中,如图5所示,对死锁队列进行数据释放以截断从机的数据外发,具体包括如下步骤:
S81:若阻塞队列数据被读取N-1次,则对阻塞队列进行删除。
具体地,取阻塞队列的N-1次后主动释放,在队列取的时候计数器会加1,当取到第N-1次之后,阻塞队列会先从索引hashmap中删除,之后阻塞队列将释放,从而截断了从机的数据的外发,防止从机的缓存被访问,提高数据同步的准确性。
S82:若监测到阻塞队列被填充的时间大于预设的超时阈值,则对阻塞队列进行删除。
具体地,在全局存在一个线程,从线程循环监控阻塞队列的存在时长,如果监控到某阻塞队列被填充后超过预设的超时阈值,该预设的超时阈值可设置为5S(步骤S40中设置的超时理论值),则删除阻塞队列并释放,使得从机的数据不再发往服务端,而是直接从从机缓存的阻塞队列里取到,保证了数据同步的准确性的效率。
本实施例中,若阻塞队列数据被读取N-1次,则对阻塞队列进行删除,从而截断了从机的数据的外发,防止从机的缓存被访问,提高数据同步的准确性;若监测到阻塞队列被填充的时间大于预设的超时阈值,则对阻塞队列进行删除,使得从机的数据不再发往服务端,而是直接从从机缓存的阻塞队列里取到,保证了数据同步的准确性的效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种数据同步装置,该数据同步装置与上述实施例中数据同步方法一一对应。如图6所示,该数据同步装置包括集群监控模块10、主从机确定模块20、队列建立模块30、索引校验模块40和数据同步模块50。各功能模块详细说明如下:
集群监控模块10,用于实时监控客户端集群,所述客户端集群包括N个客户端,N为大于1的自然数;
主从机确定模块20,用于在检测到N个客户端的集群中的任一客户端发送数据请求时,将最先发送数据请求的客户端确定为主机,将其余的N-1个客户端确定为从机;
队列建立模块30,用于对所述主机发出的数据请求对应的数据建立索引,并基于所述从机发出的数据请求对应的数据构建长度为N-1的阻塞队列;
索引校验模块40,用于采用网络代理的方式截取所述主机发送的数据请求中的HTTP报文,校验所述HTTP报文中包含的头消息是否存在所述索引中;
数据同步模块50,用于在所述HTTP报文中包含的头消息不存在所述索引中时,将所述主机返回的响应数据填充至所述阻塞队列对应的死锁队列中,以使所述从机的数据与所述主机的数据同步。
优选地,如图7所示,索引校验模块40包括报文提取单元41、索引获取单元42和检验单元43。
报文提取单元41,用于提取所述HTTP报文中包含的URL和接口参数;
索引获取单元42,用于将所述URL和所述接口参数按照预设的组合方式进行组合得到查询索引;
检验单元43,用于基于所述查询索引判断所述HTTP报文中包含的头消息是否存在所述索引中。
优选地,如图8所示,数据同步装置还包括数据获取模块60和数据返回模块70。
数据获取模块60,用于若所述HTTP报文中包含的头消息存在所述索引中,则从所述索引中取出数据;
数据返回模块70,用于将所述数据返回给所述从机,以使所述从机的数据与所述主机的数据同步。
优选地,数据同步装置还包括数据释放模块,用于对所述死锁队列进行数据释放以截断所述从机的数据外发。
优选地,数据释放模块包括队列删除单元和阻塞队列删除单元。
队列删除单元,用于若所述阻塞队列数据被读取N-1次,则对所述阻塞队列进行删除;
阻塞队列删除单元,用于若监测到所述阻塞队列被填充的时间大于预设的超时阈值,则对所述阻塞队列进行删除。
关于数据同步装置的具体限定可以参见上文中对于数据同步方法的限定,在此不再赘述。上述数据同步装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据方法中所使用的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据同步方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中的数据同步方法。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中的数据同步方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据同步方法,其特征在于,所述数据同步方法包括:
实时监控客户端集群,所述客户端集群包括N个客户端,N为大于1的自然数;
若检测到N个客户端的集群中的任一客户端发送数据请求,则将最先发送数据请求的客户端确定为主机,将其余的N-1个客户端确定为从机;
对所述主机发出的数据请求对应的数据建立索引,并基于所述从机发出的数据请求对应的数据构建长度为N-1的阻塞队列;
采用网络代理的方式截取所述主机发送的数据请求中的HTTP报文,校验所述HTTP报文中包含的头消息是否存在所述索引中;所述主机的发送和响应被劫持后,劫持其余N-1个从机的响应同步主机的响应;所述从机根据所述索引选择性地接收主机的同步数据;
若所述HTTP报文中包含的头消息不存在所述索引中,则将所述主机返回的响应数据填充至所述阻塞队列对应的死锁队列中,以使所述从机的数据与所述主机的数据同步。
2.如权利要求1所述的数据同步方法,其特征在于,所述校验所述HTTP报文中包含的头消息是否存在所述索引中,包括:
提取所述HTTP报文中包含的URL和接口参数;
将所述URL和所述接口参数按照预设的组合方式进行组合得到查询索引;
基于所述查询索引判断所述HTTP报文中包含的头消息是否存在所述索引中。
3.如权利要求1所述的数据同步方法,其特征在于,在所述校验所述HTTP报文中包含的头消息是否存在所述索引中之后,所述数据同步方法还包括:
若所述HTTP报文中包含的头消息存在所述索引中,则从所述索引中取出数据;
将所述数据返回给所述从机,以使所述从机的数据与所述主机的数据同步。
4.如权利要求1所述的数据同步方法,其特征在于,在所述以使所述从机的数据与所述主机的数据同步之后,所述数据同步方法还包括:
对所述死锁队列进行数据释放以截断所述从机的数据外发。
5.如权利要求4所述的数据同步方法,其特征在于,所述对所述死锁队列进行数据释放以截断所述从机的数据外发,包括:
若所述阻塞队列数据被读取N-1次,则对所述阻塞队列进行删除;
若监测到所述阻塞队列被填充的时间大于预设的超时阈值,则对所述阻塞队列进行删除。
6.一种数据同步装置,其特征在于,所述数据同步装置包括:
集群监控模块,用于实时监控客户端集群,所述客户端集群包括N个客户端,N为大于1的自然数;
主从机确定模块,用于在检测到N个客户端的集群中的任一客户端发送数据请求时,将最先发送数据请求的客户端确定为主机,将其余的N-1个客户端确定为从机;
队列建立模块,用于对所述主机发出的数据请求对应的数据建立索引,并基于所述从机发出的数据请求对应的数据构建长度为N-1的阻塞队列;
索引校验模块,用于采用网络代理的方式截取所述主机发送的数据请求中的HTTP报文,校验所述HTTP报文中包含的头消息是否存在所述索引中;
数据同步模块,用于在所述HTTP报文中包含的头消息不存在所述索引中时,将所述主机返回的响应数据填充至所述阻塞队列对应的死锁队列中,以使所述从机的数据与所述主机的数据同步;
所述主机的发送和响应被劫持后,劫持其余N-1个从机的响应同步主机的响应;所述从机根据所述索引选择性地接收主机的同步数据。
7.如权利要求6所述的数据同步装置,其特征在于,所述索引校验模块包括:
报文提取单元,用于提取所述HTTP报文中包含的URL和接口参数;
索引获取单元,用于将所述URL和所述接口参数按照预设的组合方式进行组合得到查询索引;
检验单元,用于基于所述查询索引判断所述HTTP报文中包含的头消息是否存在所述索引中。
8.如权利要求6所述的数据同步装置,其特征在于,所述数据同步装置还包括:
数据获取模块,用于在所述HTTP报文中包含的头消息存在所述索引中时,从所述索引中取出数据;
数据返回模块,用于将所述数据返回给所述从机,以使所述从机的数据与所述主机的数据同步。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述数据同步方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述数据同步方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010037664.0A CN111262923B (zh) | 2020-01-14 | 2020-01-14 | 数据同步方法、装置、计算机设备及存储介质 |
PCT/CN2020/085566 WO2021142965A1 (zh) | 2020-01-14 | 2020-04-20 | 数据同步方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010037664.0A CN111262923B (zh) | 2020-01-14 | 2020-01-14 | 数据同步方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111262923A CN111262923A (zh) | 2020-06-09 |
CN111262923B true CN111262923B (zh) | 2022-08-19 |
Family
ID=70950490
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010037664.0A Active CN111262923B (zh) | 2020-01-14 | 2020-01-14 | 数据同步方法、装置、计算机设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111262923B (zh) |
WO (1) | WO2021142965A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434600B (zh) * | 2021-06-30 | 2023-06-09 | 青岛海尔科技有限公司 | 一种数据同步方法及装置 |
CN113946534B (zh) * | 2021-10-18 | 2023-09-12 | 广东工业大学 | 一种基于无线传输的usb数据截取处理系统及方法 |
CN114979174B (zh) * | 2022-04-15 | 2023-07-21 | 四川虹美智能科技有限公司 | 一种处理http阻塞等待分步式服务数据的方法 |
CN117009309B (zh) * | 2023-05-31 | 2024-05-07 | 合芯科技(苏州)有限公司 | 一种基于rsync的文件实时同步方法及装置 |
CN117076371B (zh) * | 2023-08-28 | 2024-04-12 | 广州市粤港澳大湾区前沿创新技术研究院 | 一种多机数据传输方法、装置、存储介质及电子设备 |
CN117640748B (zh) * | 2024-01-24 | 2024-04-05 | 金数信息科技(苏州)有限公司 | 跨平台设备信息采集系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109361770A (zh) * | 2018-12-11 | 2019-02-19 | 苏州创旅天下信息技术有限公司 | 基于WebSocket和消息队列实现双向实时通信的系统及方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN202551056U (zh) * | 2012-01-16 | 2012-11-21 | 西安奇维科技股份有限公司 | 一种在lvds接口通信中数据自动同步的装置 |
CN103905397B (zh) * | 2012-12-28 | 2015-05-13 | 腾讯科技(深圳)有限公司 | 数据同步方法和系统 |
CN106201853A (zh) * | 2015-04-30 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 测试方法及装置 |
CN106469158B (zh) * | 2015-08-17 | 2019-10-08 | 杭州海康威视系统技术有限公司 | 数据同步方法和装置 |
CN105528294B (zh) * | 2015-12-29 | 2018-05-25 | 广东金赋科技股份有限公司 | 一种接口测试用例自动生成的方法及系统 |
CN106131138B (zh) * | 2016-06-27 | 2019-06-04 | 浪潮软件股份有限公司 | 一种基于非阻塞队列的展示数据实时推送系统和方法 |
CN106712887B (zh) * | 2016-12-23 | 2018-10-26 | 北京航天测控技术有限公司 | 一种基于网络时钟协议的主从双机状态同步方法 |
CN106878473B (zh) * | 2017-04-20 | 2021-03-30 | 腾讯科技(深圳)有限公司 | 一种消息处理方法、服务器集群及系统 |
CN108306864B (zh) * | 2018-01-12 | 2021-02-26 | 深圳壹账通智能科技有限公司 | 网络数据检测方法、装置、计算机设备和存储介质 |
CN109309631A (zh) * | 2018-08-15 | 2019-02-05 | 新华三技术有限公司成都分公司 | 一种基于通用网络文件系统写入数据的方法及装置 |
CN109857565A (zh) * | 2019-01-18 | 2019-06-07 | 深圳壹账通智能科技有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
-
2020
- 2020-01-14 CN CN202010037664.0A patent/CN111262923B/zh active Active
- 2020-04-20 WO PCT/CN2020/085566 patent/WO2021142965A1/zh active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109361770A (zh) * | 2018-12-11 | 2019-02-19 | 苏州创旅天下信息技术有限公司 | 基于WebSocket和消息队列实现双向实时通信的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111262923A (zh) | 2020-06-09 |
WO2021142965A1 (zh) | 2021-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111262923B (zh) | 数据同步方法、装置、计算机设备及存储介质 | |
CN105930528B (zh) | 一种网页缓存的方法及服务器 | |
CN110602169B (zh) | 服务调用方法、装置、计算机设备和存储介质 | |
CN112073405A (zh) | 网页数据加载方法、装置、计算机设备及存储介质 | |
EP3368997A1 (en) | Network aware distributed business transaction anomaly detection | |
WO2019127890A1 (zh) | 漏洞扫描方法、装置、计算机设备和存储介质 | |
CN113419824A (zh) | 数据处理方法、装置、系统及计算机存储介质 | |
CN108933994B (zh) | 短信分发处理方法、装置、计算机设备和存储介质 | |
WO2021169275A1 (zh) | Sdn 网络设备访问方法、装置、计算机设备及存储介质 | |
US10067862B2 (en) | Tracking asynchronous entry points for an application | |
CN112612988A (zh) | 页面处理方法、装置、计算机设备及存储介质 | |
CN115203159B (zh) | 一种数据存储方法、装置、计算机设备和存储介质 | |
CN105610917B (zh) | 实现系统中同步数据修复的方法及系统 | |
CN113469866A (zh) | 数据处理方法、装置和服务器 | |
CN111431767A (zh) | 多浏览器资源同步方法、装置、计算机设备和存储介质 | |
JP2018533092A (ja) | ネットワークリクエスト及びレスポンスの処理方法、端末、サーバ及び記憶媒体 | |
CN116743619B (zh) | 网络服务的测试方法、装置、设备及存储介质 | |
CN111552643A (zh) | 多浏览器网页访问同步方法、系统 | |
KR20210044281A (ko) | 클라우드 저하 모드에서 지속적인 디바이스 동작 안정성을 보장하기 위한 방법 및 장치 | |
CN113157738B (zh) | 堆内数据缓存同步方法、装置、计算机设备及存储介质 | |
US20080028082A1 (en) | Sip message delivery program | |
CN106911733B (zh) | 云代理的网址访问方法及装置 | |
TWI496014B (zh) | Decentralized cache object removal method, system and delete server | |
CN115277518B (zh) | 网络状态检测方法、装置、计算机设备及存储介质 | |
CN117201043B (zh) | 文件检测方法、装置及电子设备 |
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 |