CN107438084B - 多客户端数据同步方法和装置 - Google Patents
多客户端数据同步方法和装置 Download PDFInfo
- Publication number
- CN107438084B CN107438084B CN201610355110.9A CN201610355110A CN107438084B CN 107438084 B CN107438084 B CN 107438084B CN 201610355110 A CN201610355110 A CN 201610355110A CN 107438084 B CN107438084 B CN 107438084B
- Authority
- CN
- China
- Prior art keywords
- client
- data
- item
- identifier
- synchronized
- 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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了多客户端数据同步方法和装置。该方法的一具体实施方式包括:接收客户端以Ajax长轮询方式发送的数据同步请求,数据同步请求包括项目标识、与服务器预先建立连接的第三方数据库的管道标识;接收与客户端属于同一工作组的其他客户端发送的与项目标识对应的数据更新请求,并根据数据更新请求更新项目标识对应的项目数据;将已更新项目标识对应的项目数据及其对应的管道标识发送至第三方数据库;接收第三方数据库发送的与管道标识对应的已更新的项目数据标识对应的项目数据;将已更新项目数据推送至客户端,并断开与客户端的连接。在节省网络资源的同时,实现了与第三方数据库的相同管道对应的安装有不同版本浏览器的多客户端实时数据同步。
Description
技术领域
本申请涉及计算机领域,具体涉及数据管理应用领域,尤其涉及多客户端数据同步方法和装置。
背景技术
在团队协同工作系统中,如果一个项目成员所在的客户端对上述项目中的数据发起变更,例如对上述项目中的数据进行新增/移动/删除、内容变更、归档等,往往需要将变更的内容能够在其他项目成员的客户端(PC、移动设备)中能够实时展现出来以实现多客户端数据同步。当多个客户端是异地办公时,多客户端数据同步就显得更加重要。目前,多客户端数据同步,通常采用以下方式:1)客户端定时请求服务端方式,客户端定时询问是否有内容变更,服务端收到请求后采用一请求一线程方式提供服务,先根据客户端的标识查询缓存的变更信息,将查询结果分析并组装后返回给特定的客户端;2)WebSocket方式为客户端和服务端实现全双工通信,可实时双向通信;3)基于内嵌框架(In Frame,iFrame)嵌入隐藏帧方式是通过在超文本语言实现的网页中嵌入一个隐藏帧,然后将这个隐藏帧的属性设为个长连接,服务器端就能源源不断地往客户端输出变化内容。
然而,当采用上述方式实现多客户端数据同步时,客户端定时请求服务端方式,客户端定时请求服务端,服务端立即返回,会导致带宽资源浪费且大多是无效请求,且定时请求方式客户端接收到变更的消息会有一定延迟。WebSocket为新标准,不能应用于老版本的浏览器中;基于iFrame嵌入隐藏帧方式部分客户端或浏览器会一直显示正在加载,存在很明显的用户体验问题。
发明内容
本申请提供了多客户端数据同步方法和装置,用于解决上述背景技术部分存在的技术问题。
第一方面,本申请提供了多客户端数据同步方法,该方法包括:服务器接收客户端以Ajax长轮询方式发送的数据同步请求,所述数据同步请求包括项目标识、与所述服务器预先建立连接的第三方数据库的管道标识;接收与所述客户端属于同一工作组的其他客户端发送的与所述项目标识对应的数据更新请求,并根据所述数据更新请求更新所述项目标识对应的项目数据,其中所述数据更新请求包括所述其他客户端标识、更新内容;将已更新所述项目标识对应的项目数据及其对应的管道标识发送至所述述第三方数据库;接收所述第三方数据库发送的与所述管道标识对应的已更新的所述项目数据标识对应的项目数据;将所述已更新的所述项目标识对应的项目数据推送至所述客户端,并断开与所述客户端的连接。
第二方面,本申请提供了多客户端数据同步装置,该装置包括:第一接收单元,配置用于接收客户端以Ajax长轮询方式发送的数据同步请求,所述数据同步请求包括项目数据标识、与所述服务器预先建立连接的第三方数据库的管道标识;第二接收单元,配置用于接收与所述客户端属于同一工作组的其他客户端发送的与所述项目标识对应的数据更新请求,并根据所述数据更新请求更新所述项目标识对应的项目数据,其中所述数据更新请求包括所述其他客户端标识、更新内容;发送单元,配置用于将已更新所述项目标识对应的项目数据及其对应的管道标识发送至所述第三方数据库;第三接收单元,配置用于接收所述第三方数据库发送的与所述管道标识对应的已更新的所述项目数据标识对应的项目数据;第一推送单元,配置用于将所述已更新的所述项目标识对应的项目数据推送至所述客户端,并断开与所述客户端的连接。
本申请提供的多客户端数据同步方法和装置,服务器通过接收客户端以Ajax长轮询方式发送的数据同步请求,其中,数据同步请求包括项目数据标识、与所述服务器预先建立连接的第三方数据库的管道标识;接着接收与客户端属于同一工作组的其他客户端发送的对上述项目标识对应的数据更新请求,并更新上述项目标识对应的项目数据;然后将已更新的上述项目标识对应的项目数据及其对应的管道标识发送至上述第三方数据库;然后接收上述第三方数据库发送的与上述管道标识对应的已更新的上述项目数据标识对应的项目数据;最后将已更新的上述项目标识对应的项目数据推送至所述客户端,并断开与所述客户端的连接。在节省网络资源的情况下,实现了与上述第三方数据库的相同管道对应的安装有不同版本浏览器的多个客户端实时数据同步。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性系统架构图;
图2示出了根据本申请的多客户端数据同步方法的一个实施例的流程图;
图3示出了本申请中的多客户端数据同步的一个示例性原理图;
图4示出了本申请多客户端数据同步的一个示例性应用场景;
图5出了本申请中的多客户端数据同步装置的一个实施例的结构示意图;
图6是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的多客户端数据同步方法或装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104、106和服务器105和服务器107。网络104用以在终端设备101、102、103和服务器105之间提供传输链路的介质。网络106用以在服务器105和服务器107之间提供传输链路的介质。网络104和网络106可以包括各种连接类型,例如有线、无线传输链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种应用,例如团队协同工作的项目应用、文字处理类应用等。
终端设备101、102、103可以是具有显示屏并且支持网络通信的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以对终端设备101、102、103上的团队协同工作组中的项目应用提供数据服务,可以接收终端设备101、102和103对团队协同处理的项目的更新请求,例如添加/删除项目数据等更新请求,并根据终端设备的操作更新项目数据。同时服务器105将项目的更新内容通过网络106发送到服务器107中。接收服务器107的发送的更新内容通知以及从服务器107中获取需要接收该更新内容通知的终端设备的标识,例如终端设备102和103。并将更新内容发送终端设备中。
服务器107可以是各种类型的服务器,可以接收并缓存服务器105发送的与服务器器105建立长连接的终端设备的标识。并可以将服务器105发送的项目变更内容通知给服务器105。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
请参考图2,其示出了根据本申请的多客户端数据同步方法的一个实施例的流程200。需要说明的是,本申请实施例所提供的多客户端数据同步方法一般由图1中的服务器105执行,相应地,多客户端数据同步装置一般设置于服务器105中。该方法包括以下步骤:
步骤201,接收客户端以Ajax长轮询方式发送的数据同步请求。
在本实施例中,多客户端数据同步方法运行于其上的电子设备(例如图1所示的服务器105)可以通过有线连接方式或者无线连接方式从用户利用其进行即时通讯的客户端接收以Ajax长轮询方式发送的数据同步请求。其中,数据同步请求包括:需要同步的项目标识、与上述电子设备预先建立连接的第三方数据库(例如图1所示的服务器107)的管道标识。在本实施例中,用户可以为团队协同工作组中的任意一个用户,客户端可以为用户使用的客户端。
在本实施例中,团队协同工作组中通常包括多个客户端。其中,多个客户端可以为位于同地的多个客户端,也可以为位于异地的多个客户端。多个客户端可以属于同一个项目组。
在本实施例中,电子设备首先与第三方数据库建立连接关系,并订阅第三方数据库中的多个管道消息,此处管道为消息类型。
在本实施例的一些可选实现方式中,第三方数据库例如可以为Redis数据库。Redis数据库是服务与Web应用的一个开源的以关键值存储的数据库,可以短期保存数据也可以长期保存数据。使用Redis数据库的用户(可以是服务器,也可以是客户端)可以向Redis数据库发布一种类型或多种类型的消息;Redis数据库接收这些消息并保存在缓存中。同时,Redis数据库用户(可以是服务器,也可以是客户端)可以向Redis数据库订阅某一类型或多种类型的消息类型,Redis数据库将保存在缓存中的满足Redis数据库用户订阅的类型的消息发送给用户。Redis数据库用户可以订阅某一个管道的消息,也可以同时订阅多个管道的消息。当某一管道中有更新的消息时,Redis数据库会将该更新的消息发送给订阅该管道的所有的Redis数据库用户。在本实施例的一些可选实现方式中,电子设备在接收客户端以Ajax长轮询方式发送的数据同步请求之前,向第三方数据库Redis数据库发送管道信息订阅请求,订阅请求包括管道标识。此处,管道例如例如可以为对某一个项目数据的所有操作消息。每一个管道具有唯一的标识。使用redis订阅功能,保证了消息订阅解耦了消息发布者和订阅者之间的关联,保证了推送的及时性、可靠性。
在本实施例的一些可选实现方式中,电子设备(如图1所示的服务器105)在接收客户端以Ajax长轮询方式发送的数据同步请求之前,接收客户端发送的http长连接请求,并根据可户端发送的http长连接请求建立与客户端的连接。也就是说,电子设备首先接收协同工作组中的一个或多个客户端发送的http长连接请求,并根据长连接请求建立与每一个客户端的长连接。此处的长连接是指在建立的一个基于TCP协议的客户端与服务器之间的连接上可以处理多个http请求和响应,其优点在于可以减少建立和关闭TCP连接的次数,以减少网络流量。在超文本传输协议-版本1.1(Hypertext Transfer Protocol Version1.1,http1.1)1中规定TCP连接默认为长连接。同时,服务器观察到有数据变更时可以使用异步并行输入输出机制将数据变更内容发送至客户端。这样,保证了连接处的高效,降低服务器资源负载。
在本实施例的一些可选实现方式中,电子设备将与其已建立长连接的每一个客户端信息保存至第三方数据库(Redis数据库)中。如表1所示,保存在第三方数据库中的客户端信息包括:管道标识,客户端关注的通过电子设备订阅的第三方数据库的管道标识,例如表1中的SyncData;客户端所属项目标识,例如表1中的Project1、Project2及Project3等;客户端ID,例如表1中的WzdDJ158、WzdDJ168、WzdDJ178、WzdDJ188及WzdDJ198等;电子设备(服务器)的标识等发送给第三方数据库(Redis数据库)进行缓存。
在本实施例中,每一个客户端均可以通过Ajax长轮询方式向服务器(如图1所示的105)发送数据同步请求。Ajax长轮询是指:客户端向服务器发送Ajax请求,服务器接到请求后保持住连接,服务器保持连接的时间可以设置(例如60s),直到有新消息或轮询超时才向客户端返回响应信息。使用Ajax长轮询可以接省网络带宽。同时,Ajax轮询可以兼容各种版本的浏览器,有利于安装有不同版本浏览器的各个客户端的数据同步的实现。
表1 客户端连接数据样本
管道标识 | 项目标识 | 客户端ID | Server标识 |
SyncData | Project1 | WzdDJ158 | Server1 |
SyncData | Project2 | WzdDJ168 | Server1 |
SyncData | Project2 | WzdDJ178 | Server1 |
SyncData | Project3 | WzdDJ188 | Server1 |
SyncData | Project3 | WzdDJ198 | Server1 |
… | … | … |
步骤202,接收与客户端属于同一工作组的其他客户端发送的与项目标识对应的数据更新请求,并根据数据更新请求更新项目标识对应的项目数据。
在本实施例中,每一个客户端都可以向电子设备(例如图1所示的服务器105)发送关于设置于电子设备上的与其他客户端协同处理的项目的数据更新请求,例如对项目进行新增/移动/删除数据、内容变更、项目数据归档等变更请求。电子设备接收与上述请求数据同步的客户端属于同一协同工作组中处理同一项目的其他客户端发起的数据的更新请求。数据更新请求例如可以包括项目标识,上述发起更新请求的其他客户端标识以及项目数据变更内容。电子设备根据数据更新请求更新安装于其上的上述项目标识对应的项目数据。
在本实施例的一些可选实现方式中,其他客户端包括与其他服务器(例如图1所示服务器105之外的服务器)相对应的与客户端属于同一工作组的客户端。在大型协同工作系统中,往往包括多个服务器,每一个服务器可以连接多个不同的客户端。不同服务器的多可客户端可以同一个工作组,可以处理相同的一个或多个项目。电子设备(例如图1所示的服务器105)接收与其他服务器相对应的与上述发起Ajax长轮询的客户端属于同一个工作组的其他客户端发送的与上述项目标识相对应的数据更新请求。电子设备根据上述数据更新请求对安装于其上的上述项目标识对应的项目数据进行更新。
步骤203,将已更新项目标识对应的项目数据及其对应的管道标识发送至第三方数据库。
在本实施例中,管道消息例如可以为对某一项目的所有操作。也就是对某一项目的所有操作都对应同一个管道标识。电子设备将已更新的上述项目标识对应的项目数据以及对上述管道标识发送至第三方数据库,例如Redis数据库。
步骤204,接收第三方数据库发送的与管道标识对应的已更新的项目数据标识对应的项目数据。
在本实施例中,当第三方数据库(Redis数据库)中的每一管道中有更新消息时,Redis数据库会自动将更新消息发送给订阅上述管道的电子设备(例如图1所示的服务器105)以及其他订阅上述管道的其他服务器。电子设备可以接收Redis数据库发送的与上述管道标识对应的已更新的项目数据标识对应的项目数据。
步骤205,将已更新的上述项目标识对应的项目数据推送至客户端,并断开与客户端的连接。
电子设备(例如图1中的服务器105)将已更新的项目标识对应的项目数据推送至客户端,并断开与客户端的长连接以使客户端可以发起下一业务的http长连接。
在本实施例的一些可选实现方式中,当电子设备将已更新的项目标识对应的项目数据推送至客户端失败时,将推送失败的已更新的项目数据发送至Redis数据库进行缓存,并按预定时间间隔从Redis数据库中获取上述已更新的项目数据并将其重新推送至客户端。
在本实施例中,电子设备在第三方数据库中的管道有更新消息时,将已更新的项目标识对应的项目数据异步推送至客户端。达到客户端自动实时同步变更内容,没有延迟。同时客户端浏览器上不会一直显示正在加载的现象。
本申请的上述实施例通过客户端与服务器之间建立http长连接,然后客户端向服务器以Ajax长轮询方式询问已与服务器建立连接的第三方数据库的管道是否有变化;在上述管道中有更新消息时,服务器向管道的客户端异步推送更新消息。实现了与上述第三方数据库的相同管道对应的安装有不同版本浏览器的多个客户端实时数据同步。
请参考图3,其示出了本申请中多客户端数据同步的一个示例性原理图。如图3所示,(1)服务器向Redis数据库订阅对应某一项目的管道信息;(2)服务器接收客户端的http长连接请求;(3)服务器根据客户端的http长连接请求与客户端建立长连接并将已建立连接的客户端标识发送至Redis数据库缓存;(4)服务器接收客户端发出的用于同步上述项目的数据的Ajax长轮询;(5)服务器接收其他客户端发起的上述项目的数据更新请求;(6)根据其他客户端的更新请求,服务器更新安装于其上的上述项目的数据,并将更新内容发送至Redis数据库。在Redis数据库中,对该项目的所有操作为一个消息类型,即管道;(7)Redis数据库将对上述项目的更新内容及保存在Redis数据库中的与上述管道相关的客户端的标识发送至服务器;(8)根据客户端的标识,服务器将更新内容推送至客户端。
请参考图4,其示出了本申请多客户端数据同步的一个示例性应用场景。
假设服务器A、服务器B和服务器C属于同一协同工作组,例如在服务器A、服务器B和服务器C中同时对项目D提供服务。服务器A对应有客户端A1、A2和A3;服务器B对应有客户端B1、B2和B3;服务器C对应有客户端C1、C2和C3。其中,服务器A、服务器B和服务器C向第三方数据库(Redis数据库)订阅了关于项目D所有操作的管道F。当客户端A1、A2和A3中的至少一个客户端与服务器A建立http长连接,客户端B1、B2和B3中的至少一个客户端与服务器B建立http长连接以及客户端C1、C2和C3中的至少一个客户端与服务器C建立http长连接时,服务器A将与其建立长连接的客户端A1、A2和A3的标识、服务器B将与其建立长连接的客户端B1、B2和B3的标识以及服务器C将与其建立长连接的客户端C1、C2和C3的标识分别发送给第三方数据库(Redis数据库)进行缓存。当服务器A的客户端A2向服务器A发起安装在服务器A中的项目D的某条数据的删除操作请求时,服务器A执行对该项目中的该条数据的删除操作,并将删除操作内容以及客户端A2的标识、项目D的标识、服务器A的标识以及管道F的标识发送给第三方数据库(Redis数据库)。第三方数据库(Redis数据库)将该删除操作发送给订阅了管道F的服务器A、服务器器B和服务器C。服务器A、服务器B和服务器C从第三方数据库(Redis数据库)中获取上述保存在第三方数据库(Redis数据库)缓存中的与服务A、服务器B和服务器C已建立http长连接的至少一个客户端的标识,并分别在获取到的所有客户端标识中对客户端进行选别,过滤掉发起上述对该项目中的某条数据的删除操作请求的客户端A2以及与服务器A、B或C已经无效的长连接。此处的无效连接例如可以为在上述过程中某个客户端上的该项目页面被关闭。
请参考图5,作为对上述各图所示方法的实现,本申请提供了一种多客户端数据同步装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例的多客户端数据同步的装置500包括:第一接收单元501,第二接收单元502,发送单元503,第三接收单元504以及第一推送单元505。其中,第一接收单元501,配置用于接收客户端以Ajax长轮询方式发送的数据同步请求,数据同步请求包括项目数据标识、与服务器预先建立连接的第三方数据库的管道标识;第二接收单元502,配置用于接收与客户端属于同一工作组的其他客户端发送的与项目标识对应的数据更新请求,并根据数据更新请求更新项目标识对应的项目数据,其中项目数据更新请求包括其他客户端标识、项目数据变更内容;发送单元503,配置用于将已更新项目标识对应的项目数据及其对应的管道标识发送至第三方数据库;第三接收单元504,配置用于接收第三方数据库发送的与管道标识对应的已更新的项目数据标识对应的项目数据;第一推送单元505,配置用于将已更新的项目标识对应的项目数据推送至客户端,并断开与客户端的连接。
在本实施例的一些可选实现方式中,上述第三方数据库包括Redis数据库。
在本实施例的一些可选实现方式中,多客户端数据同步装置500还包括:订阅单元(未示出),配置用于第一接收单元501在接收客户端以Ajax长轮询方式发送的数据同步请求之前向第三方数据库发送订阅请求,订阅请求包括管道标识。
在本实施例的一些可选实现方式中,多客户端数据同步装置500还包括:第四接收单元(未示出),配置用于在第一接收单元501接收客户端以Ajax长轮询方式发送的数据同步请求之前,接收客户端发送http长连接请求,以与建立与客户端的连接。
在本实施例的一些可选实现方式中,多客户端数据同步装置500第二接收单元502进一步配置用于:接收与其他服务器相对应的、与上述客户端属于同一工作组的客户端发送的与上述项目标识相对应的数据更新请求。
在本实施例的一些可选实现方式中,多客户端数据同步装置500还包括:第二推送单元(未示出),配置用于当第一推送单元505将已更新的项目标识对应的项目数据推送至上述客户端失败后,将已更新的项目标识对应的项目数据发送至第三方数据库进行缓存。并按预定时间间隔重新从第三方数据库的缓存中获取已更新的项目标识对应的项目数据并推送至客户端。
图6示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当一个或者多个程序被一个设备执行时,使得设备:接收客户端以Ajax长轮询方式发送的数据同步请求,数据同步请求包括项目标识、与服务器预先建立连接的第三方数据库的管道标识;接收与客户端属于同一工作组的其他客户端发送的与项目标识对应的数据更新请求,并根据数据更新请求更新项目标识对应的项目数据,其中项目数据更新请求包括其他客户端标识、项目数据变更内容;将已更新项目标识对应的项目数据及其对应的管道标识发送至第三方数据库;接收第三方数据库发送的与管道标识对应的已更新的项目数据标识对应的项目数据;将已更新的项目标识对应的项目数据推送至客户端,并断开与客户端的连接。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (14)
1.一种多客户端数据同步方法,其特征在于,所述方法包括:
服务器接收客户端以Ajax长轮询方式发送的数据同步请求,所述数据同步请求包括需要同步的项目标识、与所述服务器预先建立连接的第三方数据库的管道标识;
接收与所述客户端属于同一工作组的其他客户端发送的与所述需要同步的项目标识对应的数据更新请求,并根据所述数据更新请求更新所述需要同步的项目标识对应的项目数据,其中所述数据更新请求包括所述其他客户端标识、更新内容;
将已更新所述需要同步的项目标识对应的项目数据及其对应的管道标识发送至所述第三方数据库;
接收所述第三方数据库发送的与所述管道标识对应的已更新的所述需要同步的项目标识对应的项目数据;
将所述已更新的所述需要同步的项目标识对应的项目数据推送至所述客户端,并断开与所述客户端的连接。
2.根据权利要求1所述的方法,其特征在于,所述第三方数据库包括Redis数据库。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括,在所述接收客户端以Ajax长轮询方式发送的数据同步请求之前,向所述第三方数据库发送订阅请求,所述订阅请求包括所述管道标识。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括,在所述接收客户端以Ajax长轮询方式发送的数据同步请求之前,接收所述客户端发送http长连接请求,以建立与所述客户端的连接。
5.根据权利要求1或2所述的方法,其特征在于,所述其他客户端包括与其他服务器相对应的、与所述客户端属于同一工作组的客户端;
所述接收与所述客户端属于同一工作组的其他客户端发送的与所述需要同步的项目标识对应的数据更新请求,包括:
接收与所述其他服务器相对应的、与所述客户端属于同一工作组的客户端发送的与所述需要同步的项目标识对应的数据更新请求。
6.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
当所述将所述已更新的所述需要同步的项目标识对应的项目数据推送至所述客户端失败后,所述服务器将所述已更新的所述需要同步的项目标识对应的项目数据发送至所述第三方数据库缓存;
按预定时间间隔从所述第三方数据库获取所述项目数据并推送至所述客户端。
7.一种多客户端数据同步装置,其特征在于,所述装置包括:
第一接收单元,配置用于接收客户端以Ajax长轮询方式发送的数据同步请求,所述数据同步请求包括需要同步的项目标识、与服务器预先建立连接的第三方数据库的管道标识;
第二接收单元,配置用于接收与所述客户端属于同一工作组的其他客户端发送的与所述需要同步的项目标识对应的数据更新请求,并根据所述数据更新请求更新所述需要同步的项目标识对应的项目数据,其中所述数据更新请求包括所述其他客户端标识、更新内容;
发送单元,配置用于将已更新所述需要同步的项目标识对应的项目数据及其对应的管道标识发送至所述第三方数据库;
第三接收单元,配置用于接收所述第三方数据库发送的与所述管道标识对应的已更新的所述需要同步的项目标识对应的项目数据;
第一推送单元,配置用于将所述已更新的所述需要同步的项目标识对应的项目数据推送至所述客户端,并断开与所述客户端的连接。
8.根据权利要求7所述的装置,其特征在于,所述第三方数据库包括Redis数据库。
9.根据权利要求7或8所述的装置,其特征在于,所述装置还包括订阅单元,配置用于在所述接收客户端以Ajax长轮询方式发送的数据同步请求之前,向所述第三方数据库发送订阅请求,所述订阅请求包括所述管道标识。
10.根据权利要求7或8所述的装置,其特征在于,所述装置还包括第四接收单元,配置用于在所述第一接收单元接收所述客户端以Ajax长轮询方式发送的数据同步请求之前,接收所述客户端发送http长连接请求,以与建立与所述客户端的连接。
11.根据权利要求7或8所述的装置,其特征在于,所述第二接收单元进一步配置用于:
接收与其他服务器相对应的、与所述客户端属于同一工作组的客户端发送的与所述需要同步的项目标识对应的数据更新请求。
12.根据权利要求7或8所述的装置,其特征在于,所述装置还包括第二推送单元,配置用于当第一推送单元将所述已更新的所述需要同步的项目标识对应的项目数据推送至所述客户端失败后,将所述已更新的所述需要同步的项目标识对应的项目数据发送至所述第三方数据库;
按预定时间间隔从所述第三方数据库中获取所述已更新的所述需要同步的项目标识对应的项目数据并推送至所述客户端。
13.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如权利要求1-6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610355110.9A CN107438084B (zh) | 2016-05-25 | 2016-05-25 | 多客户端数据同步方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610355110.9A CN107438084B (zh) | 2016-05-25 | 2016-05-25 | 多客户端数据同步方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107438084A CN107438084A (zh) | 2017-12-05 |
CN107438084B true CN107438084B (zh) | 2020-12-22 |
Family
ID=60454145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610355110.9A Active CN107438084B (zh) | 2016-05-25 | 2016-05-25 | 多客户端数据同步方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107438084B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109582684B (zh) * | 2018-11-30 | 2021-11-09 | 深圳市乐信信息服务有限公司 | 一种本地缓存数据的更新方法、装置、服务器及存储介质 |
CN109597820B (zh) * | 2018-12-07 | 2022-03-15 | 万翼科技有限公司 | 客户信息同步方法、装置及计算机可读存储介质 |
CN109857747B (zh) * | 2018-12-18 | 2021-07-13 | 百度在线网络技术(北京)有限公司 | 数据同步更新方法、系统和计算机设备 |
US12028261B2 (en) * | 2019-08-12 | 2024-07-02 | Social Microphone, Inc. | Optimizing data priority by managing network resources |
CN110730173B (zh) * | 2019-10-16 | 2022-06-07 | 北京明略软件系统有限公司 | 一种信息交互方法及装置 |
CN111966719B (zh) * | 2020-10-21 | 2021-07-13 | 四川新网银行股份有限公司 | 一种分布式消费信贷系统本地数据缓存实时刷新的方法 |
CN112507193A (zh) * | 2020-10-30 | 2021-03-16 | 长沙市到家悠享网络科技有限公司 | 数据更新方法、装置、设备和存储介质 |
CN112463251A (zh) * | 2020-12-03 | 2021-03-09 | 中国建设银行股份有限公司 | 一种uliweb框架配置热发布的方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101167071A (zh) * | 2005-05-25 | 2008-04-23 | 微软公司 | 用于与多个客户机同步可修改文档的方法、系统和计算机可读介质 |
CN102035893A (zh) * | 2010-12-23 | 2011-04-27 | 中国农业银行股份有限公司 | 一种服务器主动推送数据的方法和系统 |
CN103457841A (zh) * | 2013-09-17 | 2013-12-18 | 北京京东尚科信息技术有限公司 | 一种基于长连接的消息处理方法和消息处理装置 |
CN104717133A (zh) * | 2015-03-16 | 2015-06-17 | 墨仕(厦门)电子商务有限公司 | 一种分布式消息推送系统及方法 |
US9123019B1 (en) * | 2008-03-25 | 2015-09-01 | Egain Communications Corporation | Method, web browser and system for co-browsing online content |
CN104994152A (zh) * | 2015-06-30 | 2015-10-21 | 中国科学院计算技术研究所 | 一种Web协同缓存系统和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030046433A1 (en) * | 2001-07-25 | 2003-03-06 | Omer Luzzatti | Method to synchronize information between online devices |
-
2016
- 2016-05-25 CN CN201610355110.9A patent/CN107438084B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101167071A (zh) * | 2005-05-25 | 2008-04-23 | 微软公司 | 用于与多个客户机同步可修改文档的方法、系统和计算机可读介质 |
US9123019B1 (en) * | 2008-03-25 | 2015-09-01 | Egain Communications Corporation | Method, web browser and system for co-browsing online content |
CN102035893A (zh) * | 2010-12-23 | 2011-04-27 | 中国农业银行股份有限公司 | 一种服务器主动推送数据的方法和系统 |
CN103457841A (zh) * | 2013-09-17 | 2013-12-18 | 北京京东尚科信息技术有限公司 | 一种基于长连接的消息处理方法和消息处理装置 |
CN104717133A (zh) * | 2015-03-16 | 2015-06-17 | 墨仕(厦门)电子商务有限公司 | 一种分布式消息推送系统及方法 |
CN104994152A (zh) * | 2015-06-30 | 2015-10-21 | 中国科学院计算技术研究所 | 一种Web协同缓存系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107438084A (zh) | 2017-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107438084B (zh) | 多客户端数据同步方法和装置 | |
CN109413127B (zh) | 一种数据同步方法和装置 | |
CN111917687B (zh) | 一种循环推送提醒消息的方法和装置 | |
CN112860451A (zh) | 一种基于SaaS的多租户数据处理方法和装置 | |
CN106874471B (zh) | 信息推送方法和装置 | |
CN110837409B (zh) | 一种定时执行任务的方法和系统 | |
CN107329963B (zh) | 加速网页访问的方法和装置 | |
CN110351323A (zh) | 一种应用系统的参数管理方法和装置 | |
CN110572422B (zh) | 数据下载方法、装置、设备和介质 | |
CN111478781B (zh) | 一种消息广播的方法和装置 | |
CN109218041B (zh) | 用于服务器系统的请求处理方法和装置 | |
US20190370293A1 (en) | Method and apparatus for processing information | |
CN110798495A (zh) | 用于在集群架构模式下端到端的消息推送的方法和服务器 | |
CN107729394A (zh) | 基于Hadoop集群的数据集市管理系统及其使用方法 | |
CN109087097B (zh) | 一种更新链码同一标识的方法和装置 | |
CN112949326B (zh) | 信息查询方法、装置、设备和计算机可读介质 | |
CN112688982B (zh) | 一种用户请求处理方法和装置 | |
CN111767495A (zh) | 一种合成网页的方法及系统 | |
JP7376553B2 (ja) | グループベース通信システムにおいてプッシュベース通信コネクションが存在しない場合の最小のインタフェース機能の維持 | |
CN113138943B (zh) | 一种处理请求的方法和装置 | |
CN110909269B (zh) | 一种日志上报的方法和装置 | |
CN110019671B (zh) | 一种处理实时消息的方法和系统 | |
CN107666497B (zh) | 数据访问方法和装置 | |
CN113760965B (zh) | 数据查询的方法和装置 | |
CN111291290A (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 |