CN108512877B - 一种服务器集群中分享数据的方法和装置 - Google Patents
一种服务器集群中分享数据的方法和装置 Download PDFInfo
- Publication number
- CN108512877B CN108512877B CN201710111141.4A CN201710111141A CN108512877B CN 108512877 B CN108512877 B CN 108512877B CN 201710111141 A CN201710111141 A CN 201710111141A CN 108512877 B CN108512877 B CN 108512877B
- Authority
- CN
- China
- Prior art keywords
- data
- server
- module
- version information
- neighbor device
- 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
-
- 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/104—Peer-to-peer [P2P] networks
- H04L67/1042—Peer-to-peer [P2P] networks using topology management mechanisms
-
- 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/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种服务器集群中分享数据的方法和装置。服务器集群中的服务器可以获取预设的数据扩散关系,所述数据扩散关系用于指示,将更新数据在服务器集群中的多个服务器中进行多级传递时,与各服务器进行直接交互的至少一个服务器;根据所述数据扩散关系确定所述服务器集群中的至少一个服务器作为邻居设备,存储所述至少一个邻居设备的信息;根据存储的所述信息,依次向各邻居设备发送查询请求,所述查询请求中包括本地数据的第一版本信息;响应于第一邻居设备发送的更新数据时,用所述更新数据替换本地数据,并更新所述第一版本信息;响应于所述至少一个邻居设备中的第二邻居设备的查询请求,当本地数据的第一版本信息比所述查询请求中的第二版本信息新时,将本地数据提供给所述第二邻居设备。
Description
技术领域
本申请涉及计算机领域,特别涉及一种服务器集群中分享数据的方法和装置。
背景技术
目前,很多互联网服务提供者都是利用服务器集群来为数量庞大的用户提供服务。一些情况下,当服务器集群中的各服务器都需要获得某种数据时,提供数据的设备可以通过FTP(文件传输协议)、SCP(安全复制协议)、或者点到点的传输工具进行1对N的传输,将数据依次提供给服务器集群中的各服务器。整个传输过程是串行的,同一时刻只能给一台机器传输。
发明内容
本申请提供一种服务器集群中分享数据的方法和装置,可以缩短数据传输到服务器集群中各服务器的时间。
本申请实施例提供的一种服务器集群中分享数据的方法可以包括:
获取预设的数据扩散关系,所述数据扩散关系用于指示,将更新数据在服务器集群中的多个服务器中进行多级传递时,与各服务器进行直接交互的至少一个服务器;
根据所述数据扩散关系确定所述服务器集群中的至少一个服务器作为邻居设备,存储所述至少一个邻居设备的信息;
数据扩散关系数据扩散关系数据扩散关系根据存储的所述信息,依次向各所述邻居设备发送查询请求,所述查询请求中包括本地数据的第一版本信息;
响应于第一邻居设备发送的更新数据时,用所述更新数据替换本地数据,并更新所述第一版本信息;
响应于所述至少一个邻居设备中的第二邻居设备的查询请求,当本地数据的第一版本信息比所述查询请求中的第二版本信息新时,将本地数据提供给所述第二邻居设备。
本申请实施例提供的一种服务器集群中分享数据的装置可以包括:
邻居确定模块,用于获取预设的数据扩散关系,所述数据扩散关系用于指示,将更新数据在服务器集群中的多个服务器中进行多级传递时,与各服务器进行直接交互的至少一个服务器;根据所述数据扩散关系确定所述服务器集群中的至少一个服务器作为邻居设备,存储所述至少一个邻居设备的信息;
数据扩散关系数据扩散关系数据扩散关系;
分享数据存储模块,存储有本地数据;
数据获取模块,用于根据存储的所述至少一个邻居设备的信息,依次向所述至少一个邻居设备中的各邻居设备发送查询请求,所述查询请求中包括所述本地数据的第一版本信息;响应于第一邻居设备发送的更新数据时,用所述更新数据替换所述本地数据,更新所述第一版本信息;
数据提供模块,用于响应于所述至少一个邻居设备中的第二邻居设备的查询请求,当本地数据的第一版本信息比所述查询请求中的第二版本信息新时,将所述本地数据提供给所述第二邻居设备。
各实施例通过为服务器集群中的服务器配置一个虚拟的网络拓扑,使得各服务器向邻居提供更新的本地数据。相比由一个数据源依次向各服务器发送更新数据的方案,本申请实施例可以使多台服务器在同一时刻并行传输数据,从而实现一传十、十传百的数据扩散效果,大大缩短了数据传递到集群中各个服务器的时间。
附图说明
图1为本申请实施例的一种服务器集群中分享数据的方法流程图;
图2为本申请实施例的一种服务器集群中分享数据的方法流程图;
图3为本申请实施例的一种服务器集群中服务器的拓扑示意图;
图4为本申请实施例的一种在服务器集群中扩散业务基础信息的流程图;
图5为本申请实施例的一种在服务器集群中扩散业务基础信息的流程图;
图6为本申请实施例的一种在服务器集群中分享数据的装置的示意图;
图7为本申请实施例的一种服务器间信息交互的示意图。
具体实施方式
为了描述上的简洁和直观,下文通过描述若干代表性的实施例来对本发明的方案进行阐述。实施例中大量的细节仅用于帮助理解本发明的方案,本发明的技术方案实现时可以不局限于这些细节。为了避免不必要地模糊了本发明的方案,一些实施方式没有进行细致地描述,而是仅给出了框架。下文中,“包括”是指“包括但不限于”,“根据……”是指“至少根据……,但不限于仅根据……”,应当解释为除了之后提到的特征外,其它特征也可以存在。
现有的唯一数据源向多服务器分发数据的过程,即使单点传输速度再快,传输速度仍然会受限于单机网卡的流量瓶颈。假设每台机器传输的时间为m,N台机器则需要总时间N*m。此外,如果下发数据的设备如果故障了,就无法将新数据下发到每个服务器。
本申请实施例提供了一种服务器之间扩散数据的方法,利用服务器之间的通信将一份数据通过服务器间通信扩散到整个集群中,从而缩短整个集群获得该数据的时间。图1为本申请实施例的一种服务器集群中分享数据的方法。该方法可以应用于服务器集群中的任一服务器。如图1所示,该方法10可以包括以下步骤。
步骤S11,获取数据扩散关系,所述数据扩散关系用于指示,将更新数据在服务器集群中的多个服务器中进行多级传递时,与各服务器进行直接交互的至少一个服务器。
该数据扩散关系中服务器的连接关系可以不是物理连接关系,而是为了方便数据扩散而配置的虚拟的连接关系。数据扩散关系中的服务器的信息可以包括服务器的标识和通信地址。服务器标识用于在集群中唯一标识该服务器,可以为服务器ID、服务器名称等。服务器的通信地址是指与该服务器建立通信所使用的地址,例如IP地址(以及端口)、MAC地址,等。服务器的连接关系用于指明在该拓扑中与各服务器直接连接的服务器的信息。
步骤S12,根据所述数据扩散关系确定所述服务器集群中的至少一个服务器作为邻居设备,存储所述至少一个邻居设备的信息。
服务器可以从数据扩散关系中确定与其直接连接的至少一个服务器,将其作为邻居设备,并存储各邻居设备的信息,例如标识和通信地址,等。
步骤S13,根据存储的所述信息,依次向各邻居设备发送查询请求,所述查询请求中包括本地数据的第一版本信息。
服务器可以在满足触发条件的时候向各邻居设备依次发送查询请求。触发条件可以是到达预设时间、发生了预设的事件,等。一些例子中,服务器可以按照预设的时间周期发起查询过程,例如,每隔预设时间执行一次向所述第一邻居设备发送查询请求的步骤。服务器之间可以采用各种通信机制来交互信息,例如,可以通过FTP等文件传输协议进行通信,或者可以采用Peer-to-Peer(P2P)的方式通信,还可以通过收发TCP/IP报文或者UDP报文等的形式进行通信。这里不限定服务器间的通信方式。
本地数据是指存储在当前服务器中、且是当前查询过程期望更新的数据。该数据根据具体的业务的不同可以有不同的内容,例如推送需求数据、访问控制数据、分布式计算过程的原始数据,等。服务器中可以存储有多种数据,这多种数据都可以应用各实施例的方案在集群中扩散。此时,每种数据都包括数据标识,用于指示该数据的内容类型。一些例子中,服务器可以在查询请求中仅包括一种数据的数据标识和版本信息。服务器可以针对不同种类的数据分别发起查询请求。另一些例子中,服务器可以在查询请求中包括至少两种数据的数据标识及其对应的版本信息。
步骤S14,响应于第一邻居设备发送的更新数据时,用所述更新数据替换本地数据,并更新所述第一版本信息。
收到第一邻居设备发送的更新数据时,服务器可以用收到的更新数据替换本地数据。一些例子中,服务器可以从第一邻居设备提供的更新数据中获取版本信息,并用该版本信息替换本地数据的第一版本信息。例如,当接收到的更新数据的版本信息为v2.6.1.8,本地数据的第一版本信息为v2.6.0,服务器可以将本地数据的版本信息v2.6.0直接替换为收到的数据的版本信息v2.6.1.8。另一些例子中,服务器可以根据预设的规则更新第一版本信息。例如,当预设规则是在版本号上加1,则利用收到的更新数据替换本地数据后,服务器可以直接将本地数据的第一版本信息v21更新为v22。版本信息的更新方式可以根据需要来设计,这里不做限定。
步骤S15,响应于所述至少一个邻居设备中的第二邻居设备的查询请求,当本地数据的第一版本信息比所述查询请求中的第二版本信息新时,将本地数据提供给所述第二邻居设备。
接收到邻居设备发来的查询请求时,服务器可以从收到的查询请求中获得邻居设备的数据版本信息。当判断本地数据的版本比邻居设备的数据版本新时,服务器可以将本地数据提供给该邻居设备。判断版本新旧的方法可以根据实际中版本号的更新规则而定,这里不限定具体的方法。
通过各实施例的技术方案,相比现有技术中N台服务器的更新耗时为m*N的方案,本申请实施例可以实现一传十、十传百的数据扩散效果,N台服务器的更新耗时可以达到m*(logkN)(k大于1),远小于m*N。其中,k与采用的拓扑中各服务器的邻居设备的数目有关。当每台服务器有2台邻居设备时,N台服务器的更新耗时可以达到(log2N)*m。
图2为本申请实施例的一种服务器集群中分享数据的方法流程图。如图2所示,该方法20可以包括以下步骤。
步骤S21,接收数据更新设备提供的数据,利用所述数据替换本地数据,并更新所述第一版本信息。
数据更新设备是指向服务器集群提供最新版本的数据的设备。服务器可以通过各种方式从数据更新设备接收数据。例如,服务器可以通过FTP等远程文件传输机制接收数据更新设备向服务器上传的数据。又例如,服务器可以与数据更新设备通过P2P的方式通信,接收数据更新设备利用P2P机制发送的数据。再例如,服务器可以接收数据更新设备发送的报文,从报文中获得数据。用于传输数据的报文可以为各种通信协议定义的报文,例如TCP/IP报文、UDP报文,等。
步骤S22,接收邻居设备发送的查询请求。
服务器可以从查询请求中获取被查询数据的数据标识和版本信息(本例中称为第二版本信息,以与服务器本地数据的第一版本信息进行区别)。
步骤S23,判断本地数据的第一版本信息是否比查询请求中的第二版本信息新。
服务器可以将收到的查询请求中的第二版本信息与本地数据的第一版本信息进行比较,判断哪个数据版本更新。当查询请求中包括数据标识时,则服务器可以获取本地存储的具有相同数据标识的本地数据的版本信息作为第一版本信息。
步骤S24,当本地数据的第一版本信息比所述查询请求中的第二版本信息新时,将本地数据提供给所述邻居设备。
一些例子中,当判断本地数据的第一版本信息比所述查询请求中的第二版本信息旧时,还可以向所述第二邻居设备请求所述第二版本信息对应的数据。另一些例子中,当判断本地数据的第一版本信息比所述查询请求中的第二版本信息旧时,则不做处理,结束当前流程。
一些例子中,当本地数据的大小超过预设阈值时,可以将本地数据分割为至少两个部分,分多次将所述本地数据提供给所述第二邻居设备,每次提供所述至少两个部分中的一个部分。预设阈值可以根据网络带宽、数据处理能力、服务器的内存大小等信息来确定。分割本地数据可以采用预设的分割规则,生成预设格式的多个数据分块。服务器可以分多次将分割得到的多个数据分块提供给第二邻居设备,例如通过多个FTP上传步骤,或者通过多个UDP报文,等。邻居设备收到多个数据分块后,可以根据预设的分割规则将多个数据分块合并起来,恢复成原始数据。例如,服务器可以对于小于本机内存一半(例如2G)的数据进行一次性传输;对于大于2G的数据则进行数据分割(不同的业务数据切割方式不同,由具体需要决定),分块传输,由接收方根据预定规则组装数据。
图3为本申请实施例的一种服务器集群中服务器的拓扑示意图。如图3所示,图中的服务器为一个服务器集群。根据数据扩散关系,各服务器能与拓扑中相邻的服务器直接进行信息交互。这种拓扑可以不是物理连接形成的拓扑,而是配置的逻辑拓扑。
以下举几个应用本申请技术方案的例子。
一些例子中,本申请的技术方案可以应用在向服务器集群中传递业务基础信息的场景。业务基础信息是指服务器为用户提供业务时所依据的基本原则、供给数量等。例如,对于媒体推送业务,业务基础信息可以是媒体推送的素材信息、需求信息、推送资源信息等。素材信息可以包括向用户推送的内容的形式(图片、动画)、大小、URL、素材来源等。需求信息是指第三方提出的推送次数等需求的信息。推送资源信息可以包括页面的地址及该页面中可用于媒体推送的位置信息。图4为本申请实施例的一种在服务器集群中扩散业务基础信息的流程图。如图4所示,该方法40可以包括以下步骤。
步骤S41,业务设备根据预先配置的服务器列表,向服务器集群中的第一服务器发送业务资源文件。
业务设备指可以向服务器集群提供最新的业务资源文件的设备。这里的业务资源文件作为需要扩散的数据,可以是一种或者多种业务基础信息。业务设备可以按照预设的周期向服务器集群提供更新的业务资源文件。例如,业务设备可以每小时、每天等,向服务器集群提供一次更新的业务资源文件。
业务设备可以从服务器列表中随机选择一个服务器作为第一服务器,并向该第一服务器发送业务资源文件。每次更新,业务设备可以不必选择同一个服务器,即,可以选择不同的服务器来发送业务资源文件。
步骤S42,第一服务器接收到所述业务资源文件,利用该业务资源文件更新本地存储的业务资源文件,并更新版本信息。
步骤S43,第一服务器根据本地存储的所述业务资源文件向用户提供业务。
步骤S44,第一服务器接收到第二服务器发送的查询请求,确定本地存储的业务资源文件的版本比该查询请求中的版本新,将本地存储的业务资源文件提供给第二服务器。
步骤S45,第二服务器接收到第一服务器提供的业务资源文件,利用该业务资源文件替换第二服务器中存储的业务资源文件,并更新版本信息,利用该更新后的业务资源文件向用户提供业务。
步骤S46,第二服务器接收到第三服务器发送的查询请求,确定本地存储的业务资源文件的版本比该查询请求中的版本新,将本地存储的业务资源文件提供给第三服务器。
上述步骤S45-S46可以在服务器集群中被不同的服务器执行,从而使业务资源文件从第一服务器扩散到服务器集群中的其它各服务器,使得各服务器都可以根据更新后的业务资源文件向用户提供业务。
一些例子中,本申请的技术方案可以应用在向服务器集群中传递实时计算的业务控制信息的场景。业务控制信息是指服务器为用户提供业务时对用户或者内容提供方采取的针对供给数量、服务时间等的控制信息。例如,对于媒体推送业务,业务控制信息可以是从业务交易平台(例如adx(广告交易平台))获得的针对某第三方(例如广告主、广告代理商等)的媒体推送的控制信息。该控制信息可以包括各服务器为该第三方提供的用户qps(每秒查询数)等。该场景中,各设备的操作相似,区别可能包括:业务设备提供的是实时计算得出的业务控制信息,更新频率较快,例如可以为每分钟、每若干分钟发送一次,等;服务器获得业务控制信息后,根据该业务控制信息来处理用户的业务请求,从而控制向第三方提供的服务的数量。
一些例子中,本申请的技术方案可以应用在利用服务器集群进行分布式计算的场景。有些业务数据需要从业务运行过程中收集的所有信息中提取得到,计算量非常大,因此采用多服务器分布式计算的机制来提高计算速度和效率。例如,对于登录统计数据,业务设备可以将原始数据,例如过去的某一时间段内所有的用户登录信息及计算量分配信息,作为待扩散的数据,提供给服务器集群中的一个服务器。例如,用户登录信息可以包括,该时间段内,登录的每个用户的账号、登录时间、使用的设备、登录的服务器的信息,等。计算量分配信息可以是将原始数据分成多份,每个服务器与其中的一份数据的对应关系,即该服务器负责对原始数据中的这一部分进行计算。图5为本申请实施例的一种在服务器集群中扩散业务基础信息的流程图。如图5所示,该方法50可以包括以下步骤。
步骤S51,业务设备根据预先配置的服务器列表,向服务器集群中的第一服务器发送原始数据。
步骤S52,第一服务器接收到所述原始数据,利用该原始数据替换上一次分布式计算对应的原始数据,更新版本信息。
步骤S53,第一服务器根据原始数据中的计算量分配信息对第一服务器对应的部分进行计算,并将计算结果提供给原始数据中指定的第二服务器。
步骤S54,第一服务器接收到第三服务器发送的查询请求,确定本地存储的原始数据的版本比该查询请求中的版本新,将本地存储的原始数据提供给第三服务器。
步骤S55,第三服务器接收到第一服务器提供的原始数据,利用该原始数据替换第三服务器中存储的上一次分布式计算对应的原始数据,并更新版本信息。
步骤S56,第三服务器根据原始数据中的计算量分配信息对第三服务器对应的部分进行计算,并将计算结果提供给原始数据中指定的第二服务器。
步骤S57,第三服务器接收到第四服务器发送的查询请求,确定本地存储的原始数据的版本比该查询请求中的版本新,将本地存储的原始数据提供给第四服务器。
上述步骤S55-S57可以在服务器集群中被不同的服务器执行,从而使原始数据从第一服务器扩散到服务器集群中的其它各服务器,使得各服务器都可以根据接收到的原始数据利用其被分配的部分数据进行计算。
步骤S58,第二服务器将各服务器提供的计算结果合并生成最终的计算结果,并提供给第二服务器。
第二服务器可以是服务器集群中的一个服务器,也可以是其它的服务器设备。第二服务器的信息可以包括在原始数据中,从而使服务器集群中的各服务器将计算结果提供给第二服务器。
根据本申请实施例的方案,可以通过多对多的数据扩散缩短数据在服务器集群中扩散的时间。
各实施例还提供一种在服务器集群中分享数据的装置。如图6所示,该装置60可以包括处理器61、通信接口64、存储装置66和总线69。存储装置66中包括操作系统67、通信模块68、分享数据存储模块62和数据分享模块63。
处理器61可以有一个或者多个,可以在同一个物理设备中,或者分布在多个物理设备中。
装置60可以利用通信接口64通过某种网络接收数据和请求,并通过通信接口64将数据或请求处理结果发送出去。
分析数据存储模块62中存储有本地数据。
数据分享模块63可以包括:邻居确定模块631、数据获取模块632和数据提供模块633。
邻居确定模块631可以获取数据扩散关系,所述数据扩散关系用于指示,将更新数据在服务器集群中的多个服务器中进行多级传递时,与各服务器进行直接交互的至少一个服务器;根据所述数据扩散关系确定所述服务器集群中的至少一个服务器作为邻居设备,存储所述至少一个邻居设备的信息。
数据获取模块632可以根据所述存储模块中的所述信息,依次向各邻居设备发送查询请求,所述查询请求中包括所述本地数据的第一版本信息;响应于第一邻居设备发送的更新数据时,用所述更新数据替换所述本地数据,更新所述第一版本信息。
数据提供模块633可以响应于所述至少一个邻居设备中的第二邻居设备的查询请求,当本地数据的第一版本信息比所述查询请求中的第二版本信息新时,将所述本地数据提供给所述第二邻居设备。
一些例子中,数据获取模块632可以每隔预设时间执行一次向所述第一邻居设备发送查询请求的步骤。
一些例子中,装置60还可以包括数据更新模块(未示出),用于接收数据更新设备提供的数据,利用所述数据替换本地数据,并更新所述第一版本信息。
一些例子中,当本地数据的第一版本信息比所述查询请求中的第二版本信息旧时,数据提供模块633还可以使所述数据获取模块632向所述第二邻居设备请求所述第二版本信息对应的数据。
一些例子中,分享数据存储模块可以包括:第一版本数据存储模块和第二版本数据存储模块。第一版本数据存储模块存放当前使用中的本地数据,也称为读模块;第二版本数据存储模块存放旧版本、已不使用的本地数据,用于写入新收到的数据,也称为写模块。当所述第一版本数据存储模块中存储的本地数据的第一版本信息比所述查询请求中的第二版本信息新时,数据获取模块632可以将所述第一版本数据存储模块中存储的所述本地数据提供给所述第二邻居设备。数据获取模块632可以响应于所述第一邻居设备发送的更新数据时,将所述更新数据存储到所述第二版本数据存储模块,将所述第一版本信息更新后作为所述第二版本数据存储模块中本地数据的版本信息,并将所述第二版本数据存储模块和所述第一版本数据存储模块的角色互换。
数据提供模块633向相邻设备提供本地数据及其版本信息,并且只从读模块获取本地数据及其版本信息,也称为数据扩散功能中的server模块;数据获取模块632向邻居设备中的server模块发出查询请求,并且只对写模块进行写入新数据的操作,也称为数据扩散功能中client模块。图7为本申请实施例的一种服务器间信息交互的示意图。如图7所示,服务器1中的数据分享模块73包括server模块731、client模块732、读模块733、写模块734;服务器2中的数据分享模块74包括server模块741、client模块742、读模块743、写模块744。
触发条件满足时,client模块732从读模块733获取本地数据的第一版本信息,向server模块741发送包括第一版本信息的查询请求(S71)。
Server模块741收到查询请求后,从读模块743获取本地数据的第二版本信息,比较第二版本信息和查询请求中的第一版本信息;确定第二版本信息比第一版本信息新时,从读模块中读取本地数据,返回给client模块732(S72)。
Client模块732收到server模块发送的数据,将该数据写入写模块734,更新其中数据的版本信息(S73),将写模块734和读模块733的角色互换(S74),即,之前的写模块734成为当前的读模块733,之前的读模块733成为当前的写模块734。
Server模块731收到client模块742发送的查询请求(S75),从当前的读模块733(即S74执行前的写模块734)中读取本地数据的第一版本信息(该版本信息是client模块742在S73中更新后的版本信息)(S76),比较第一版本信息和查询请求中的第二版本信息;确定第一版本信息不比第二版本信息新,则结束当前处理,不对查询请求作出回应。
以上交互过程仅以两个服务器为例,实际上,上述过程可以同时在多个服务器间进行。
本申请实施例通过在服务器集群中建立网状的通信通道,保证集群中的每台服务器都可以与相邻的服务器进行数据传输。当整个集群中有任何一台服务器有新数据到达时,都会向相邻服务器提供新数据,达到“一传十十传百”的数据扩散效果。扩散过程中,多台服务器会在同一时刻并行传输,使数据能以最快速度传输到集群中的各服务器。
需要说明的是,上述各流程和各结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。各模块的划分仅仅是为了便于描述采用的功能上的划分,实际实现时,一个模块可以分由多个模块实现,多个模块的功能也可以由同一个模块实现,这些模块可以位于同一个设备中,也可以位于不同的设备中。另外,上面描述中采用“第一”、“第二”仅仅为了方便区分具有同一含义的两个对象,并不表示其有实质的区别。
各例中,各模块可以由专门的硬件或执行机器可读指令的硬件实现。例如,硬件可以为专门设计的永久性电路或逻辑器件(如专用处理器,如FPGA或ASIC)用于完成特定的操作。硬件也可以包括由软件临时配置的可编程逻辑器件或电路(如包括通用处理器或其它可编程处理器)用于执行特定操作。
各模块对应的机器可读指令可以存储在非易失性计算机可读存储介质中,使计算机上操作的操作系统等来完成这里描述的部分或者全部操作。非易失性计算机可读存储介质包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。
综上所述,权利要求的范围不应局限于以上描述的例子中的实施方式,而应当将说明书作为一个整体并给予最宽泛的解释。
Claims (12)
1.一种服务器集群中分享数据的方法,其特征在于,包括:
获取预设的数据扩散关系,所述数据扩散关系用于指示,将更新数据在服务器集群中的多个服务器中进行多级传递时,与各服务器进行直接交互的至少一个服务器,其中,每个服务器包括客户端模块、服务器模块、写模块和读模块;
根据所述数据扩散关系,确定所述服务器集群中的至少一个服务器作为邻居设备,存储至少一个邻居设备的信息;
根据存储的所述信息,由第一服务器的第一客户端模块依次向各邻居设备的第二服务器模块发送第一查询请求,所述第一查询请求中包括本地数据的第一版本信息;
由所述第一客户端模块接收第一邻居设备的第二服务器模块发送的更新数据,将所述更新数据写入所述第一服务器的写模块中,更新所述第一版本信息,并将所述第一服务器的写模块与所述第一服务器的读模块的角色互换,其中,所述第一邻居设备的第二服务器模块从自身的读模块中获取所述更新数据;
由所述第一服务器的第一服务器模块接收第二邻居设备的第二客户端模块发送的第二查询请求,从当前的读模块读取本地数据的第一版本信息,当本地数据的第一版本信息比所述第二查询请求中的第二版本信息新时,将本地数据提供给所述第二客户端模块。
2.根据权利要求1所述的方法,其特征在于,所述根据存储的所述信息,由第一服务器的第一客户端模块依次向各邻居设备的第二服务器模块发送第一查询请求,包括:
每隔预设时间,执行一次向各邻居设备的第二服务器模块发送第一查询请求的步骤。
3.根据权利要求1所述的方法,其特征在于,进一步包括:
接收数据更新设备提供的数据,利用所述数据替换本地数据,并更新所述第一版本信息。
4.根据权利要求1所述的方法,其特征在于,进一步包括:
当本地数据的第一版本信息比所述第二查询请求中的第二版本信息旧时,由所述第一客户端模块向所述第二邻居设备的第二服务器模块请求所述第二版本信息对应的数据。
5.根据权利要求1所述的方法,其特征在于,所述将本地数据提供给所述第二客户端模块,包括:
当本地数据的大小超过预设阈值时,将本地数据分割为至少两个部分,依次将每个部分提供给所述第二客户端模块。
6.一种服务器集群中分享数据的装置,其特征在于,包括:
邻居确定模块,用于获取预设的数据扩散关系,所述数据扩散关系用于指示,将更新数据在服务器集群中的多个服务器中进行多级传递时,与各服务器进行直接交互的至少一个服务器,其中,每个服务器包括客户端模块、服务器模块、写模块和读模块;根据所述数据扩散关系,确定所述服务器集群中的至少一个服务器作为邻居设备,存储至少一个邻居设备的信息;
分享数据存储模块,存储用于分享的本地数据;
数据获取模块,用于根据存储的所述信息,由第一服务器的第一客户端模块依次向各邻居设备的第二服务器模块发送第一查询请求,所述第一查询请求中包括本地数据的第一版本信息;由所述第一客户端模块接收第一邻居设备的第二服务器模块发送的更新数据,将所述更新数据写入所述第一服务器的写模块中,更新所述第一版本信息,并将所述第一服务器的写模块与所述第一服务器的读模块的角色互换,其中,所述第一邻居设备的第二服务器模块从自身的读模块中获取所述更新数据;
数据提供模块,用于由所述第一服务器的第一服务器模块接收第二邻居设备的第二客户端模块发送的第二查询请求,从当前的读模块读取本地数据的第一版本信息,当本地数据的第一版本信息比所述第二查询请求中的第二版本信息新时,将本地数据提供给所述第二客户端模块。
7.根据权利要求6所述的装置,其特征在于,所述数据获取模块用于:
每隔预设时间,执行一次向各邻居设备的第二服务器模块发送第一查询请求的步骤。
8.根据权利要求6所述的装置,其特征在于,进一步包括:
数据更新模块,用于接收数据更新设备提供的数据,利用所述数据替换本地数据,并更新所述第一版本信息。
9.根据权利要求6所述的装置,其特征在于,
所述数据提供模块进一步用于:当本地数据的第一版本信息比所述第二查询请求中的第二版本信息旧时,由所述第一客户端模块向所述第二邻居设备的第二服务器模块请求所述第二版本信息对应的数据。
10.根据权利要求6所述的装置,其特征在于,
所述数据提供模块用于:当本地数据的大小超过预设阈值时,将本地数据分割为至少两个部分,依次将每个部分提供给所述第二客户端模块。
11.一种服务器,其特征在于,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现如权利要求1至5中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,存储有计算机可读指令,所述计算机可读指令被至少一个处理器执行时,实现如权利要求1至5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710111141.4A CN108512877B (zh) | 2017-02-28 | 2017-02-28 | 一种服务器集群中分享数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710111141.4A CN108512877B (zh) | 2017-02-28 | 2017-02-28 | 一种服务器集群中分享数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108512877A CN108512877A (zh) | 2018-09-07 |
CN108512877B true CN108512877B (zh) | 2022-03-18 |
Family
ID=63372855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710111141.4A Active CN108512877B (zh) | 2017-02-28 | 2017-02-28 | 一种服务器集群中分享数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108512877B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111031126B (zh) * | 2019-12-10 | 2022-08-12 | 江苏满运软件科技有限公司 | 集群缓存共享方法、系统、设备及存储介质 |
CN111901389B (zh) * | 2020-07-03 | 2023-07-04 | 北京达佳互联信息技术有限公司 | 数据更新方法、装置、服务器及存储介质 |
CN114422486B (zh) * | 2022-03-14 | 2024-01-16 | 潍柴动力股份有限公司 | 一种终端的软件版本升级方法、系统以及车辆 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102055607A (zh) * | 2009-11-06 | 2011-05-11 | 三星电子(中国)研发中心 | 网络设备更新方法及其系统 |
CN102694860A (zh) * | 2012-05-25 | 2012-09-26 | 北京邦诺存储科技有限公司 | 一种云存储的数据处理方法、设备及系统 |
CN103002027A (zh) * | 2012-11-26 | 2013-03-27 | 中国科学院高能物理研究所 | 基于键值对系统实现树形目录结构的数据存储系统及方法 |
CN104184756A (zh) * | 2013-05-21 | 2014-12-03 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、装置及系统 |
CN104202375A (zh) * | 2014-08-22 | 2014-12-10 | 广州华多网络科技有限公司 | 同步数据的方法及系统 |
WO2016101758A1 (zh) * | 2014-12-27 | 2016-06-30 | 北京奇虎科技有限公司 | 一种跨集群的数据同步方法和装置 |
CN105975614A (zh) * | 2016-05-18 | 2016-09-28 | 华为技术有限公司 | 一种集群配置装置、一种更新数据的方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8990367B2 (en) * | 2006-09-29 | 2015-03-24 | Dell Products L.P. | Consistent binding of shared storage across clustered servers |
FR2932289B1 (fr) * | 2008-06-06 | 2012-08-03 | Active Circle | Procede et systeme de synchronisation de modules logiciels d'un systeme informatique distribue en grappe de serveurs, application au stockage de donnees. |
US9009121B2 (en) * | 2009-10-30 | 2015-04-14 | Oracle International Corporation | Bootstrapping server using configuration file stored in server-managed storage |
CN103825918B (zh) * | 2012-11-16 | 2018-09-18 | 腾讯科技(深圳)有限公司 | 数据同步方法、终端设备、服务器和系统 |
WO2015085456A1 (zh) * | 2013-12-09 | 2015-06-18 | 北京新媒传信科技有限公司 | 服务器集群下的日志提取方法和服务器集群 |
-
2017
- 2017-02-28 CN CN201710111141.4A patent/CN108512877B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102055607A (zh) * | 2009-11-06 | 2011-05-11 | 三星电子(中国)研发中心 | 网络设备更新方法及其系统 |
CN102694860A (zh) * | 2012-05-25 | 2012-09-26 | 北京邦诺存储科技有限公司 | 一种云存储的数据处理方法、设备及系统 |
CN103002027A (zh) * | 2012-11-26 | 2013-03-27 | 中国科学院高能物理研究所 | 基于键值对系统实现树形目录结构的数据存储系统及方法 |
CN104184756A (zh) * | 2013-05-21 | 2014-12-03 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、装置及系统 |
CN104202375A (zh) * | 2014-08-22 | 2014-12-10 | 广州华多网络科技有限公司 | 同步数据的方法及系统 |
WO2016101758A1 (zh) * | 2014-12-27 | 2016-06-30 | 北京奇虎科技有限公司 | 一种跨集群的数据同步方法和装置 |
CN105975614A (zh) * | 2016-05-18 | 2016-09-28 | 华为技术有限公司 | 一种集群配置装置、一种更新数据的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108512877A (zh) | 2018-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3481025B1 (en) | Node routing method and system | |
US7899877B2 (en) | Method for dynamically managing multicast sessions for software downloads and related systems | |
CN101394307B (zh) | 一种统计在线用户数量的方法、装置及系统 | |
CN101764831B (zh) | 一种流媒体数据共享方法、共享系统和流媒体节点 | |
US20120084386A1 (en) | System and method for sharing network storage and computing resource | |
US20130073727A1 (en) | System and method for managing data delivery in a peer-to-peer network | |
CN108512877B (zh) | 一种服务器集群中分享数据的方法和装置 | |
CN111260396B (zh) | 一种广告预加载方法、装置、电子设备及存储介质 | |
KR101485610B1 (ko) | 네트워크 구조를 고려한 분산형 컨텐트 전달 시스템 및 그 방법 | |
CN104380278A (zh) | 用于一个或多个客户端和数据中心的服务器之间的客户端管理会话持续性的设备、系统和方法 | |
KR20140075784A (ko) | 대규모 매체 클라우드를 위한 분산 맵핑 기능 | |
CN102025595A (zh) | 流量优化方法及系统 | |
CN105407128A (zh) | 在ccn中的中间路由器上兴趣保持活动 | |
CN103248666A (zh) | 一种离线下载资源的系统、方法及装置 | |
CN103731472A (zh) | 采用p2p技术下载文件的方法和系统、客户端 | |
US7739364B2 (en) | Method and apparatus for dynamically reconfiguring a server system | |
CN111275495A (zh) | 基于区块链的广告投放监测方法、装置及系统 | |
CN111083204A (zh) | 文件传输方法、装置及存储介质 | |
JP2007272540A (ja) | データ配信方法及びデータ配信システム | |
CN109412940B (zh) | 路由器管理方法及路由器管理系统 | |
US10116741B2 (en) | Peer-to-peer network image distribution hierarchy | |
CN102017568B (zh) | 用于递送自主播放的内容的系统 | |
CN106375132B (zh) | 一种云服务器系统的管理方法及云服务器系统 | |
CN103795810A (zh) | 数据分发系统及方法以及该数据分发系统中的中心服务器 | |
WO2008007862A1 (en) | Method and system for connecting server to client or client to client in network for data transmitting service |
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 |