CN110149382A - 数据同步的方法、系统、主服务器、同步客户端及介质 - Google Patents

数据同步的方法、系统、主服务器、同步客户端及介质 Download PDF

Info

Publication number
CN110149382A
CN110149382A CN201910379917.XA CN201910379917A CN110149382A CN 110149382 A CN110149382 A CN 110149382A CN 201910379917 A CN201910379917 A CN 201910379917A CN 110149382 A CN110149382 A CN 110149382A
Authority
CN
China
Prior art keywords
data
primary server
synchronized
server
message 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.)
Pending
Application number
CN201910379917.XA
Other languages
English (en)
Inventor
马天亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lazas Network Technology Shanghai Co Ltd
Original Assignee
Lazas Network Technology Shanghai Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Lazas Network Technology Shanghai Co Ltd filed Critical Lazas Network Technology Shanghai Co Ltd
Priority to CN201910379917.XA priority Critical patent/CN110149382A/zh
Publication of CN110149382A publication Critical patent/CN110149382A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • H04L67/1051Group master selection mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication 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)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明实施例涉及数据库领域,公开了一种数据同步的方法、系统、主服务器、同步客户端及介质。数据同步的方法应用于redis集群中的主服务器,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器;数据同步的方法包括:获取待同步数据;将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器。采用本发明的实施方式,在构建redis集群多主架构的基础上实现服务器间的数据同步,以支持异地多活方案的应用。

Description

数据同步的方法、系统、主服务器、同步客户端及介质
技术领域
本发明实施例涉及数据库领域,特别涉及一种数据同步的方法、系统、主服务器、同步客户端及介质。
背景技术
Redis是一个可基于内存的高性能开源数据库,使用ANSI C语言编写,提供多种语言的编程接口,常用于实现软件或应用的数据存储和快速访问等功能;在生产环境中,redis的应用十分广泛,例如为了在扩容业务的同时保证服务的稳定性,常使用支持分布式高可用和横向扩展的redis集群来进行数据的存储和访问;然而发明人发现相关技术中至少存在如下问题:由于redis集群仅支持单个主服务器的架构,当分布在异地的多个服务器同时对外提供服务时,需要跨地域向主服务器调用数据,因此会因地理距离造成高昂的延时成本;而异地多活的方案中是将服务分散到多个异地机房中,多个异地机房内的服务器间需要调用数据,因此采用单主架构的redis集群难以实现异地多活的方案。
发明内容
本发明实施方式的目的在于提供一种数据同步的方法、系统、主服务器、同步客户端及介质,在构建redis集群多主架构的基础上实现服务器间的数据同步,以支持异地多活方案的应用。
为解决上述技术问题,本发明的实施方式提供了一种数据同步的方法,应用于redis集群中的主服务器,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器;数据同步的方法包括:获取待同步数据;将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器。
本发明的实施方式还提供了一种数据同步的方法,应用于预先为redis集群中的主服务器配置的同步客户端,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器,预先为每个所述主服务器配置有消息队列;所述数据同步的方法包括:获取所述redis集群中的另一主服务器的消息队列中的待同步数据;将所述待同步数据写入所述同步客户端的主服务器,供所述同步客户端的主服务器将所述待同步数据同步至所述主服务器对应的多个从服务器。
本发明的实施方式还提供了一种数据同步系统,包括:redis集群,同步客户端及消息队列,所述redis集群包括若干个主服务器,预先为每个所述主服务器配置有所述同步客户端和所述消息队列,且每个所述主服务器对应有多个从服务器;所述redis集群中的主服务器用于获取待同步数据,并将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器通过预先为另一所述主服务器配置的同步客户端从预先为所述主服务器配置的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器。
本发明的实施方式还提供了一种redis集群的主服务器,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器;所述主服务器包括:获取模块,用于获取待同步数据;写入模块,用于将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器。
本发明的实施方式还提供了一种同步客户端,所述同步客户端为预先为redis集群中的主服务器配置的同步客户端,所述redis集群包括若干个主服务器,预先为每个所述主服务器配置有消息队列,且每个所述主服务器对应有多个从服务器;所述同步客户端包括:获取模块,用于获取所述redis集群中的另一主服务器的消息队列中的待同步数据;写入模块,用于将所述待同步数据写入所述同步客户端的主服务器,供所述同步客户端的主服务器将所述待同步数据同步至所述主服务器对应的多个从服务器。
本发明的实施方式还提供了一种redis集群的主服务器,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器;所述redis集群的主服务器包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行:获取待同步数据;将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器。
本发明的实施方式还提供了一种同步客户端,所述同步客户端为预先为redis集群中的主服务器配置的同步客户的服务器,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器,预先为每个所述主服务器配置有消息队列;所述同步客户端包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行:获取所述redis集群中的另一主服务器的消息队列中的待同步数据;将所述待同步数据写入所述同步客户端的主服务器,供所述同步客户端的主服务器将所述待同步数据同步至所述主服务器对应的多个从服务器。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上数据同步的方法。
本发明实施方式相对于现有技术而言,应用于redis集群中的主服务器,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器;所述数据同步的方法包括:获取待同步数据;将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器;这种方式构建了多主架构的redis集群,在redis集群中的主服务器获取到待同步数据后,通过预先配置的消息队列暂存待同步数据,以供另一主服务器从主服务器的消息队列读取待同步数据,并将待同步数据写入上述另一主服务器,从而在不影响主服务器获取数据的前提下实现了主服务器间的数据同步,也就是redis集群中的多个数据一致同步的主服务器的存在,保证了redis集群中的某个主服务器故障时,仍可正常提供数据存储和快速访问等服务,有效控制了故障产生时带来的维修工作量及损耗成本,也因此多个数据一致同步的主服务器可分布于多个异地机房中共同对外提供服务,主服务器对应的从服务器也无需跨地域请求数据,使得异地多活方案得到实际应用。本实施方式从基础数据服务上解决了数据同步的问题,且对于redis集群的改造十分微小,节约了大量的业务人力资源。
另外,所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,包括:所述redis集群中的另一主服务器通过预先为另一所述主服务器配置的同步客户端从所述主服务器的消息队列中获取所述待同步数据,即提供了一种通过预先为主服务器配置的同步客户端来实现数据的同步的方式;同步客户端属于预先在redis集群中增加的一种双向复制类型的客户端,当主服务器将待同步数据写入主服务器的消息队列后,redis集群中的另一主服务器即可通过预先为另一主服务器配置的同步客户端,从主服务器的消息队列中获取待同步数据,从而另一主服务器可将待同步数据也同步至另一主服务器对应的多个从服务器,也就是实现了redis集群中多个主服务器间的数据同步,和主从服务器间的数据同步。
另外,在所述将所述待同步数据写入预先为所述主服务器配置的消息队列前,还包括:判断所述待同步数据的来源是否为预先为所述主服务器配置的同步客户端;若否,则将所述待同步数据写入所述主服务器的消息队列中。由于当待同步数据不是来源于预先为主服务器配置的同步客户端时,说明待同步数据是由业务端主动写入主服务器的数据,从而将待同步数据写入主服务器的消息队列中,以进一步的将主动写入的数据同步至集群中的其他服务器;当待同步数据是来源于同步客户端时,且由于同步客户端是用于从另一主服务器的消息队列读取待同步数据的,说明待同步数据是从另一主服务器同步至当前主服务器的,因此不将待同步数据写入当前主服务器的消息队列,也就是说不将待同步数据再次同步至集群中的其他服务器,从而避免了数据的重复同步和因此造成的无效内存占用。
另外,所述将所述待同步数据写入预先为所述主服务器配置的消息队列,包括:将所述待同步数据写入预先为所述主服务器配置的本地队列;建立所述主服务器的本地线程;通过所述本地线程将所述本地队列中的所述待同步数据写入所述主服务器的消息队列中。由于预先为主服务器配置的本地队列和消息队列都是基于磁盘层面进行数据存储,所以通过本地线程将本地队列中的待同步数据写入消息队列时,是在磁盘层面直接进行的数据传输;而redis服务器基于内存层面进行数据存储,所以由redis服务器将待同步数据写入消息队列,是从内存层面到磁盘层面的数据传输,相较于磁盘层面直接进行的数据传输,速度较慢,也就是由通过本地线程将本地队列中的待同步数据写入消息队列时的写入速度较快,耗时较短,造成的延时十分微小,有效保证了数据同步过程的效率。
另外,所述消息队列具体为:卡夫卡kafka队列。卡夫卡kafka队列是一种具有高吞吐量和高可扩展性的消息队列,能够支撑较大的数据量,且具备良好的容错性,因此通过卡夫卡kafka队列存储主服务器的待同步数据可以有效保证数据同步方法的可靠性。
另外,在所述将所述待同步数据写入预先为所述主服务器配置的消息队列前,还包括:判断所述待同步数据是否合法;若是,则将所述待同步数据写入所述主服务器的消息队列中;若当待同步数据不合法时,则不将待同步数据写入主服务器的消息队列,也就是不将待同步数据同步至集群中的其他服务器,从而控制了不合法数据的传播,避免集群中的其他服务器同步到错误的数据,进一步地也减少了后续修正不合法数据时的工作量。
附图说明
图1是根据本发明第一实施方式中数据同步的方法的流程图;
图2是根据本发明第一实施方式中数据同步的方法的示意图;
图3是根据本发明第二实施方式中数据同步的方法的流程图;
图4是根据本发明第二实施方式中另一种数据同步的方法的流程图;
图5是根据本发明第三实施方式中数据同步的方法的流程图;
图6是根据本发明第五实施方式中redis集群的主服务器的结构方框图;
图7是根据本发明第六实施方式中同步客户端的结构方框图;
图8是根据本发明第七实施方式中redis集群的主服务器的结构方框图;
图9是根据本发明第八实施方式中服务器的结构方框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本发明的第一实施方式涉及一种数据同步的方法,应用于redis集群中的主服务器;redis集群包括若干个主服务器,业务端对redis集群的主动写入操作仅向redis集群中的主服务器执行,对redis集群的读取操作可向redis集群中的主服务器或从服务器执行;每个主服务器对应有多个从服务器,主服务器接收到的写入数据将同步至主服务器对应的从服务器;当redis集群中的一个主服务器出现故障时,redis数据库引擎将会自动切换至该主服务器对应的一个从服务器作为新的主服务器,且由于从服务器同步有主服务器的数据,因此redis集群仍可保证数据存储和快速访问的功能正常可用。
本实施方式中的数据同步的方法的具体流程如图1所示,具体包括:
步骤101,获取待同步数据;
步骤102,将待同步数据写入预先为主服务器配置的消息队列中。
本实施方式中,获取待同步数据,将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器通过预先为另一所述主服务器配置的同步客户端从所述主服务器的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器;这种方式构建了多主架构的redis集群,在redis集群中的主服务器获取到待同步数据后,通过预先配置的消息队列暂存待同步数据,以供另一主服务器预先配置的同步客户端从主服务器的消息队列读取待同步数据,并将待同步数据写入上述另一主服务器,从而在不影响主服务器获取数据的前提下实现了主服务器间的数据同步,也就是redis集群中的多个数据一致同步的主服务器的存在,保证了redis集群中的某个主服务器故障时,仍可正常提供数据存储和快速访问等服务,有效控制了故障产生时带来的维修工作量及损耗成本,也因此多个数据一致同步的主服务器可分布于多个异地机房中共同对外提供服务,主服务器对应的从服务器也无需跨地域请求数据,使得异地多活方案得到实际应用。本实施方式从基础数据服务上解决了数据同步的问题,且对于redis集群的改造十分微小,节约了大量的业务人力资源。下面对本实施方式的数据同步的方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
在步骤101中,redis集群中的主服务器获取待同步数据。本实施方式中,主服务器获取的待同步数据可以是由业务端主动请求写入的数据。在一个实例中,以外卖业务场景为例,将进行外卖下单的用户的终端作为业务端,用户通过终端进行注册、下单等操作时,会生成包括用户名、用户联系方式、用户下单地址等数据的写入请求,写入请求由用户的终端(即业务端)发送至redis集群中的主服务器;当主服务器接收到写入请求后,将写入请求中携带的数据缓存到主服务器的本地内存;由于redis集群中的主服务器间需要同步复制数据,以保证数据的一致性,也就是说主服务器接收到写入的数据,并将写入的数据缓存至本地内存,即为主服务器获取到了待同步至redis集群中其他服务器的待同步数据。
在步骤102中,redis集群中的主服务器将获取到的待同步的数据,写入预先为主服务器配置的消息队列中进行暂存;本实施方式中,采用异步调用的方式将待同步数据写入主服务器的消息队列中,以不阻碍主服务器后续的正常运行,避免了同步调用方式可能产生的高性能消耗;此处预先为主服务器配置的消息队列可以是卡夫卡kafka队列,卡夫卡kafka队列是一种具有高吞吐量和高可扩展性的消息队列,能够支撑较大的数据量,且具备良好的容错性,因此通过卡夫卡kafka队列存储主服务器的待同步数据可以有效保证数据同步方法的可靠性。
更优的,由于主服务器是基于内存层面进行数据存储,而预先配置的消息队列(例如上述的卡夫卡kafka队列)是基于磁盘层面进行数据存储,也就是说由主服务器将数据写入消息队列这一步骤是从内存层面到磁盘层面的数据传输,属于跨存储层面的数据传输,其传输数据的速度较慢,耗时较长;因此为了提高传输数据的速度和数据同步的效率,可预先为主服务器配置基于磁盘层面进行数据存储的本地队列,本地队列的配置可通过修改redis底层架构的源码实现;同时,建立主服务器的本地线程;在主服务器获取到待同步数据后,主服务器将待同步数据写入本地队列,并通过消费本地线程将本地队列中的待同步数据写入消息队列;由于本地队列和消息队列都是基于磁盘层面进行数据存储的,所以通过本地线程将本地队列中的待同步数据写入消息队列时,是在磁盘层面直接进行的数据传输,相较于从主服务器(内存层面)到消息队列(磁盘层面)的跨层数据传输,数据传输速度较快,耗时较短,造成的延时十分微小,有效保证了数据同步过程的效率。
当主服务器将待同步数据写入主服务器的消息队列后,通过预先为主服务器配置有同步客户端来实现数据的同步;同步客户端属于预先在redis集群中增加的一种双向复制类型的客户端,同步客户端的配置可通过修改redis底层架构的源码实现;当主服务器将待同步数据写入主服务器的消息队列后,redis集群中的另一主服务器即可通过预先为另一主服务器配置的同步客户端,从主服务器的消息队列中获取待同步数据,从而另一主服务器可将待同步数据也同步至另一主服务器对应的多个从服务器,也就是实现了redis集群中多个主服务器间的数据同步,和主从服务器间的数据同步。
在一个实例中,在redis集群中实施本实施方式中的数据同步的方法时的示意图如图2所示:redis集群中包括主服务器A和主服务器B,主服务器A及其对应的从服务器划属于机房A,主服务器B及其对应的从服务器划属于机房B;当业务端向主服务器A写入数据时,主服务器A获取到写入的数据作为待同步数据,将待同步数据写入主服务器A的消息队列(卡夫卡kafka队列A),从而主服务器B的同步客户端B从主服务器A的消息队列(卡夫卡kafka队列A)读取到待同步数据,并将待同步数据写入主服务器B,使得主服务器B能够将待同步数据同步至其对应的从服务器中。同样,当业务端向主服务器B写入数据时,主服务器B获取到写入的数据作为待同步数据,将待同步数据写入主服务器B的消息队列(卡夫卡kafka队列B),从而主服务器A的同步客户端A从主服务器B的消息队列(卡夫卡kafka队列B)读取到待同步数据,并将待同步数据写入主服务器A,使得主服务器A能够将待同步数据同步至其对应的从服务器中;由于上述的redis集群中存在主服务器A和主服务器B,而不是单主服务器的结构,因此主服务器B对应的从服务器在请求数据时,可直接向同一机房B内对应的主服务器B请求数据,而无需向处于机房A内的主服务器A请求数据,又由于同一机房内的服务器的地理距离较近,因此采用本实施方式中的数据同步方法有效降低了因跨机房的地理距离较远而产生的时间消耗。
本实施方式相对于现有技术而言,构建了多主架构的redis集群,在redis集群中的主服务器获取到待同步数据后,通过预先配置的消息队列暂存待同步数据,或是先将待同步数据写入预先为主服务器配置的本地队列,再通过建立的主服务器的本地线程将本地队列中的待同步数据写入所述主服务器的消息队列中,使得数据传输速度较快,耗时较短,造成的延时十分微小,有效保证了数据同步过程的效率;另外,消息队列可以是性能优良的卡夫卡kafka队列,以保证数据同步方法的可靠性;将待同步数据写入主服务器的消息队列,是以供另一主服务器预先配置同步客户端从主服务器的消息队列读取待同步数据,并将待同步数据写入上述另一主服务器,从而在不影响主服务器获取数据的前提下实现了主服务器间的数据同步,也就是redis集群中的多个数据一致同步的主服务器的存在,保证了redis集群中的某个主服务器故障时,仍可正常提供数据存储和快速访问等服务,有效控制了故障产生时带来的维修工作量及损耗成本,也因此多个数据一致同步的主服务器可分布于多个异地机房中共同对外提供服务,主服务器对应的从服务器也无需跨地域请求数据,使得异地多活方案得到实际应用。本实施方式从基础数据服务上解决了数据同步的问题,且对于redis集群的改造十分微小,节约了大量的业务人力资源。
本发明的第二实施方式涉及一种数据同步的方法,本实施方式与第一实施方式大致相同,在本发明第二实施方式中,在将待同步数据写入预先为主服务器配置的消息队列前,还对待同步数据的来源及合法性进行了判断,以优化数据同步的方法。本实施方式中的数据同步的方法如图3及图4所示:图3所示的流程是本实施方式中,在将待同步数据写入预先为主服务器配置的消息队列前,对待同步数据的来源进行了判断;图4所示的流程是本实施方式中,在将待同步数据写入预先为主服务器配置的消息队列前,对待同步数据的合法性进行了判断;需要说明的是,对待同步数据的来源及合法性的判断是可以同步进行的。下面对本实施方式做具体说明:
图3所示的流程是本实施方式的数据同步的方法中,在将待同步数据写入预先为主服务器配置的消息队列前,对待同步数据的来源进行了判断,下面对图3的流程作具体说明:
步骤301,获取待同步数据;
步骤302,判断待同步数据的来源是否为预先为主服务器配置的同步客户端;若否,执行步骤303,若是,结束。
具体地说,主服务器获取的待同步数据,可以是由业务端主动请求写入的数据;由于redis集群中的主服务器间需要同步复制数据,以保证数据的一致性,也就是说当主服务器获取到的待同步数据是主动写入的数据时,待同步数据的来源不是预先为主服务器配置的同步客户端,因此执行步骤303,主服务器需要将待同步数据写入主服务器的消息队列,以进一步的将待同步数据同步至redis集群中其他服务器;同时,由于预先为主服务器配置的同步客户端用于从另一主服务器的消息队列读取待同步数据,因此主服务器获取的待同步数据也可以是通过预先配置的同步客户端从另一主服务器的消息队列中获取到的,也就是说当前主服务器通过同步客户端获取到的待同步数据从另一主服务器同步至当前主服务器的,因此无需将待同步数据写入当前主服务器的消息队列,也就是说不将待同步数据再次同步至集群中的其他服务器,从而避免了数据的重复同步和因此造成的无效内存占用。
步骤303,将待同步数据写入预先为主服务器配置的消息队列中。此步骤与步骤102大致相同,此处不再赘述。
另一方面,图4所示的流程是本实施方式的数据同步的方法中,在将待同步数据写入预先为主服务器配置的消息队列前,对待同步数据的合法性进行了判断,下面对图4的流程作具体说明:
步骤401,获取待同步数据;
步骤402,判断待同步数据是否合法;若是,执行步骤303,若否,结束。
具体地说,当主服务器获取到待同步数据后,对待同步数据的合法性进行检查,当待同步数据合法时,执行步骤303,令主服务器将待同步数据写入主服务器的消息队列,以进一步的将待同步数据同步至redis集群中其他服务器;当待同步数据不合法时,则不将待同步数据写入主服务器的消息队列,也就是不将待同步数据同步至集群中的其他服务器,从而控制了不合法数据的传播,避免集群中的其他服务器同步到错误的数据,进一步地也减少了后续修正不合法数据时的工作量。本实施方式中对待同步数据的合法性进行的检查,可以理解为:校验数据是否是以正确的格式填写的、校验数据的唯一性(例如将获取到的数据与主服务器中已经存储的数据进行比对,判断获取到的数据是否是已经存储在主服务器中的数据)。进一步地,在主服务器获取待同步数据时即可对数据的合法性进行判断:当主服务器判断接收到的数据合法时,主服务器才将合法的数据写入本地内存,从而避免了不合法的数据进入服务器存储,也就是说将合法的数据才会作为待同步数据被同步,以保证服务器间同步的数据的正确性。
在一个实例中,当主服务器接收到由业务端发出的写入请求时,主服务器会对写入请求进行解析,解析的过程即包含了判断写入请求中携带的数据是否合法的过程;当主服务器对写入请求解析成功并获得写入请求中携带的数据时,说明写入请求中携带的是合法数据,从而主服务器将解析出的数据缓存到主服务器的本地内存并写入主服务器的消息队列。
步骤403,将待同步数据写入预先为主服务器配置的消息队列中。此步骤与步骤102大致相同,此处不再赘述。
综上,当同时对待同步数据的来源及合法性进行判断时,写入主服务器的消息队列的待同步数据为合法数据且并非来源于同步客户端。
本实施方式相对于现有技术而言,在将待同步数据写入预先为主服务器配置的消息队列前,还可判断待同步数据的来源是否为预先为主服务器配置的同步客户端;若否,则将待同步数据写入所述主服务器的消息队列中,也就是不将待同步数据再次同步至集群中的其他服务器,从而避免了数据的重复同步和因此造成的无效内存占用;同时,在将待同步数据写入预先为主服务器配置的消息队列前,还可判断待同步数据是否合法;若是,则将待同步数据写入主服务器的消息队列中,也就是当待同步数据不合法时,不将待同步数据写入主服务器的消息队列,即不将待同步数据同步至集群中的其他服务器,从而控制了不合法数据的传播,避免集群中的其他服务器同步到错误的数据,进一步地也减少了后续修正不合法数据时的工作量。
本发明第三实施方式涉及一种数据同步的方法,应用于预先为redis集群中的主服务器配置的同步客户端。本实施方式中的数据同步的方法的具体流程如图5所示,具体包括:
步骤501,获取redis集群中的另一主服务器的消息队列中的待同步数据;
步骤502,将待同步数据写入同步客户端的主服务器。
具体地说,本实施方式中通过预先为主服务器配置的同步客户端来实现数据的同步;同步客户端属于预先在redis集群中增加的一种双向复制类型的客户端,同步客户端的配置可通过修改redis底层架构的源码实现;当主服务器将待同步数据写入主服务器的消息队列后,redis集群中的另一主服务器的同步客户端读取主服务器的消息队列中的待同步数据,并将待同步数据写入上述另一主服务器,从而上述另一服务器可将待同步数据也同步至另一主服务器对应的多个从服务器,也就是实现了redis集群中多个主服务器间的数据同步,和主从服务器间的数据同步。
在一个实例中,在redis集群中实施本实施方式中的数据同步的方法时的示意图如图2所示:redis集群中包括主服务器A和主服务器B;当业务端向主服务器A写入数据时,主服务器A获取到写入的数据作为待同步数据,将待同步数据写入主服务器A的消息队列(卡夫卡kafka队列A),从而主服务器B的同步客户端B从主服务器A的消息队列(卡夫卡kafka队列A)读取到待同步数据,并将待同步数据写入主服务器B,使得主服务器B能够将待同步数据同步至其对应的从服务器中。
本实施方式相对于现有技术而言,预先为主服务器配置的同步客户端来实现数据的同步;当主服务器将待同步数据写入主服务器的消息队列后,redis集群中的另一主服务器的同步客户端读取主服务器的消息队列中的待同步数据,并将待同步数据写入上述另一主服务器,从而上述另一服务器可将待同步数据也同步至另一主服务器对应的多个从服务器,也就是实现了redis集群中多个主服务器间的数据同步,和主从服务器间的数据同步,从而保证了redis集群可正常提供数据存储和快速访问等服务;同步客户端的配置可通过修改redis底层架构的源码实现,配置同步客户端对于redis集群的改造十分微小,节约了大量的业务人力资源,使得异地多活方案得到实际应用。
本发明第四实施方式提供了一种数据同步系统,包括:redis集群,同步客户端及消息队列,所述redis集群包括若干个主服务器,预先为每个所述主服务器配置有所述同步客户端和所述消息队列,且每个所述主服务器对应有多个从服务器;本实施方式中的数据同步系统可参见图2,图2所示的机房A与机房B的组合所包括的redis集群、同步客户端及消息队列,构成本实施方式中的数据同步系统,实际应用中不限制机房的数量与具体划分。
所述redis集群中的主服务器用于获取待同步数据,并将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器通过预先为另一所述主服务器配置的同步客户端从预先为所述主服务器配置的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器。
本实施方式相对于现有技术而言,数据同步系统包括redis集群、同步客户端及消息队列,其中所述redis集群包括若干个主服务器,预先为每个所述主服务器配置有所述同步客户端和所述消息队列,且每个所述主服务器对应有多个从服务器;数据同步系统在运行中实施数据同步的方法,能够在不影响主服务器获取数据的前提下实现了主服务器间及主从服务器间的数据同步,保证了redis集群可正常提供数据存储和快速访问等服务;且数据同步系统的构建对于redis集群的改造十分微小,节约了大量的业务人力资源,使得异地多活方案得到实际应用。
本发明第五实施方式涉及一种redis集群的主服务器,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器;如图6所示,redis集群的主服务器包括:获取模块601和写入模块602。
获取模块601,用于获取待同步数据;
写入模块602,用于将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器。
在一个实例中,写入模块602用于将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,包括:所述redis集群中的另一主服务器通过预先为另一所述主服务器配置的同步客户端从所述主服务器的消息队列中获取所述待同步数据。
在一个实例中,写入模块602在所述将所述待同步数据写入预先为所述主服务器配置的消息队列前,还包括:判断所述待同步数据的来源是否为预先为所述主服务器配置的同步客户端;若否,则将所述待同步数据写入所述主服务器的消息队列中。
在一个实例中,写入模块602将所述待同步数据写入预先为所述主服务器配置的消息队列,包括:将所述待同步数据写入预先为所述主服务器配置的本地队列;建立所述主服务器的本地线程;通过所述本地线程将所述本地队列中的所述待同步数据写入所述主服务器的消息队列中。
在一个实例中,所述消息队列具体为:卡夫卡kafka队列。
在一个实例中,写入模块602在所述将所述待同步数据写入预先为所述主服务器配置的消息队列前,还包括:判断所述待同步数据是否合法;若是,则将所述待同步数据写入所述主服务器的消息队列中。
不难发现,本实施方式为与第一实施方式或第二实施方式的相对应的装置实施例,本实施方式可与第一实施方式或第二实施方式互相配合实施。第一实施方式或第二实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应的,本实施方式中提到的相关技术细节也可应用在第一实施方式或第二实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本发明的第六实施方式涉及一种同步客户端,所述同步客户端为预先为redis集群中的主服务器配置的同步客户端,所述redis集群包括若干个主服务器,预先为每个所述主服务器配置有消息队列,且每个所述主服务器对应有多个从服务器;如图7所示,所述同步客户端包括:获取模块701和写入模块702。
获取模块701,用于获取所述redis集群中的另一主服务器的消息队列中的待同步数据;
写入模块702,用于将所述待同步数据写入所述同步客户端的主服务器,供所述同步客户端的主服务器将所述待同步数据同步至所述主服务器对应的多个从服务器。
不难发现,本实施方式为与第三实施方式的相对应的装置实施例,本实施方式可与第三实施方式互相配合实施。第三实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应的,本实施方式中提到的相关技术细节也可应用在第三实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本发明第七实施方式涉及一种redis集群的主服务器,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器;如图8所示,该redis集群的主服务器包括至少一个处理器801;以及,与至少一个处理器801通信连接的存储器802;以及,与redis集群的主服务器通信连接的通信组件803,通信组件803在处理器801的控制下接收和发送数据;其中,存储器802存储有可被至少一个处理器801执行的指令,指令被至少一个处理器801执行以实现:
获取待同步数据;
将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器。
另外,指令被至少一个处理器801执行时还能以实现:所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,包括:所述redis集群中的另一主服务器通过预先为另一所述主服务器配置的同步客户端从所述主服务器的消息队列中获取所述待同步数据。
另外,指令被至少一个处理器801执行时还能以实现:在所述将所述待同步数据写入预先为所述主服务器配置的消息队列前,还包括:判断所述待同步数据的来源是否为预先为所述主服务器配置的同步客户端;若否,则将所述待同步数据写入所述主服务器的消息队列中。
另外,指令被至少一个处理器801执行时还能以实现:所述将所述待同步数据写入预先为所述主服务器配置的消息队列,包括:将所述待同步数据写入预先为所述主服务器配置的本地队列;建立所述主服务器的本地线程;通过所述本地线程将所述本地队列中的所述待同步数据写入所述主服务器的消息队列中。
另外,指令被至少一个处理器801执行时还能以实现:所述消息队列具体为:卡夫卡kafka队列。
另外,指令被至少一个处理器801执行时还能以实现:在所述将所述待同步数据写入预先为所述主服务器配置的消息队列前,还包括:判断所述待同步数据是否合法;若是,则将所述待同步数据写入所述主服务器的消息队列中。
具体地,该redis集群的主服务器包括:一个或多个处理器801以及存储器802,图8中以一个处理器801为例。处理器801、存储器802可以通过总线或者其他方式连接,图8中以通过总线连接为例。存储器802作为一种计算机可读存储介质,可用于存储计算机软件程序、计算机可执行程序以及模块。处理器801通过运行存储在存储器802中的计算机软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述数据同步的方法。
存储器802可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器802可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器802可选包括相对于处理器801远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器802中,当被一个或者多个处理器801执行时,执行上述任意方法实施方式中的数据同步的方法。
上述产品可执行本申请实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本申请实施方式所提供的方法。
在本实施方式中,redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器;主服务器获取待同步数据;将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器通过预先为另一所述主服务器配置的同步客户端从所述主服务器的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器;这种方式构建了多主架构的redis集群,在redis集群中的主服务器获取到待同步数据后,通过预先配置的消息队列暂存待同步数据,以供另一主服务器从主服务器的消息队列读取待同步数据,并将待同步数据写入上述另一主服务器,从而在不影响主服务器获取数据的前提下实现了主服务器间的数据同步,也就是redis集群中的多个数据一致同步的主服务器的存在,保证了redis集群中的某个主服务器故障时,仍可正常提供数据存储和快速访问等服务,有效控制了故障产生时带来的维修工作量及损耗成本,也因此多个数据一致同步的主服务器可分布于多个异地机房中共同对外提供服务,主服务器对应的从服务器也无需跨地域请求数据,使得异地多活方案得到实际应用。本实施方式从基础数据服务上解决了数据同步的问题,且对于redis集群的改造十分微小,节约了大量的业务人力资源。
本发明第八实施方式涉及一种同步客户端,所述同步客户端为预先为redis集群中的主服务器配置的同步客户端,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器,预先为每个所述主服务器配置有消息队列;如图9所示,该同步客户端包括至少一个处理器901;以及,与至少一个处理器901通信连接的存储器902;以及,与同步客户端通信连接的通信组件903,通信组件903在处理器901的控制下接收和发送数据;其中,存储器902存储有可被至少一个处理器901执行的指令,指令被至少一个处理器901执行以实现:
获取所述redis集群中的另一主服务器的消息队列中的待同步数据;
将所述待同步数据写入所述同步客户端的主服务器,供所述同步客户端的主服务器将所述待同步数据同步至所述主服务器对应的多个从服务器。
具体地,该同步客户端包括:一个或多个处理器901以及存储器902,图9中以一个处理器901为例。处理器901、存储器902可以通过总线或者其他方式连接,图9中以通过总线连接为例。存储器902作为一种计算机可读存储介质,可用于存储计算机软件程序、计算机可执行程序以及模块。处理器901通过运行存储在存储器902中的计算机软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述数据同步的方法。
存储器902可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器902可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器902可选包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器902中,当被一个或者多个处理器901执行时,执行上述任意方法实施方式中的数据同步的方法。
上述产品可执行本申请实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本申请实施方式所提供的方法。
在本实施方式中,预先为主服务器配置的同步客户端来实现数据的同步;当主服务器将待同步数据写入主服务器的消息队列后,redis集群中的另一主服务器的同步客户端读取主服务器的消息队列中的待同步数据,并将待同步数据写入上述另一主服务器,从而上述另一服务器可将待同步数据也同步至另一主服务器对应的多个从服务器,也就是实现了redis集群中多个主服务器间的数据同步,和主从服务器间的数据同步,从而保证了redis集群可正常提供数据存储和快速访问等服务;同步客户端的配置可通过修改redis底层架构的源码实现,配置同步客户端对于redis集群的改造十分微小,节约了大量的业务人力资源,使得异地多活方案得到实际应用。
本发明第九实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述数据同步的方法实施例。
即,本领域技术人员可以理解,实现上述数据同步的方法实施例中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
本申请实施例提供了A1.一种数据同步的方法,应用于redis集群中的主服务器,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器;所述数据同步的方法包括:
获取待同步数据;
将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器。
A2.如A1所述的数据同步方法,所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,包括:
所述redis集群中的另一主服务器通过预先为另一所述主服务器配置的同步客户端从所述主服务器的消息队列中获取所述待同步数据。
A3.如A1所述的数据同步方法,在所述将所述待同步数据写入预先为所述主服务器配置的消息队列前,还包括:
判断所述待同步数据的来源是否为预先为所述主服务器配置的同步客户端;
若否,则将所述待同步数据写入所述主服务器的消息队列中。
A4.如A1所述的数据同步方法,所述将所述待同步数据写入预先为所述主服务器配置的消息队列,包括:
将所述待同步数据写入预先为所述主服务器配置的本地队列;
建立所述主服务器的本地线程;
通过所述本地线程将所述本地队列中的所述待同步数据写入所述主服务器的消息队列中。
A5.如A1-A4任一项所述的数据同步的方法,所述消息队列具体为:卡夫卡kafka队列。
A6.如A1所述的数据同步方法,在所述将所述待同步数据写入预先为所述主服务器配置的消息队列前,还包括:
判断所述待同步数据是否合法;
若是,则将所述待同步数据写入所述主服务器的消息队列中。
本申请实施例提供了B1.一种数据同步的方法,应用于预先为redis集群中的主服务器配置的同步客户端,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器,预先为每个所述主服务器配置有消息队列;所述数据同步的方法包括:
获取所述redis集群中的另一主服务器的消息队列中的待同步数据;
将所述待同步数据写入所述同步客户端的主服务器,供所述同步客户端的主服务器将所述待同步数据同步至所述主服务器对应的多个从服务器。
本申请实施例提供了C1.一种数据同步系统,包括:redis集群,同步客户端及消息队列,所述redis集群包括若干个主服务器,预先为每个所述主服务器配置有所述同步客户端和所述消息队列,且每个所述主服务器对应有多个从服务器;
所述redis集群中的主服务器用于获取待同步数据,并将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器通过预先为另一所述主服务器配置的同步客户端从预先为所述主服务器配置的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器。
本申请实施例提供了D1.一种redis集群的主服务器,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器;所述主服务器包括:
获取模块,用于获取待同步数据;
写入模块,用于将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器。
D2.如D1所述的redis集群的主服务器,所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,包括:
所述redis集群中的另一主服务器通过预先为另一所述主服务器配置的同步客户端从所述主服务器的消息队列中获取所述待同步数据。
D3.如D1所述的redis集群的主服务器,在所述将所述待同步数据写入预先为所述主服务器配置的消息队列前,还包括:
判断所述待同步数据的来源是否为预先为所述主服务器配置的同步客户端;
若否,则将所述待同步数据写入所述主服务器的消息队列中。
D4.如D1所述的redis集群的主服务器,所述将所述待同步数据写入预先为所述主服务器配置的消息队列,包括:
将所述待同步数据写入预先为所述主服务器配置的本地队列;
建立所述主服务器的本地线程;
通过所述本地线程将所述本地队列中的所述待同步数据写入所述主服务器的消息队列中。
D5.如D1-D4任一项所述的redis集群的主服务器,所述消息队列具体为:卡夫卡kafka队列。
D6.如D1所述的redis集群的主服务器,在所述将所述待同步数据写入预先为所述主服务器配置的消息队列前,还包括:
判断所述待同步数据是否合法;
若是,则将所述待同步数据写入所述主服务器的消息队列中。
本申请实施例提供了E1.一种同步客户端,所述同步客户端为预先为redis集群中的主服务器配置的同步客户端,所述redis集群包括若干个主服务器,预先为每个所述主服务器配置有消息队列,且每个所述主服务器对应有多个从服务器;所述同步客户端包括:
获取模块,用于获取所述redis集群中的另一主服务器的消息队列中的待同步数据;
写入模块,用于将所述待同步数据写入所述同步客户端的主服务器,供所述同步客户端的主服务器将所述待同步数据同步至所述主服务器对应的多个从服务器。
本申请实施例提供了F1.一种redis集群的主服务器,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器;所述redis集群的主服务器包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行:
获取待同步数据;
将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器。
F2.如F1所述的服务器,所述至少一个处理器能够执行:如A2-A6任一项所述的数据同步的方法。
本申请实施例提供了G1.一种同步客户端,所述同步客户端为预先为redis集群中的主服务器配置的同步客户端,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器,预先为每个所述主服务器配置有消息队列;所述同步客户端包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行:
获取所述redis集群中的另一主服务器的消息队列中的待同步数据;
将所述待同步数据写入所述同步客户端的主服务器,供所述同步客户端的主服务器将所述待同步数据同步至所述主服务器对应的多个从服务器。
本申请实施例提供了H1.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现A1-A6任一项所述的数据同步的方法。
本申请实施例提供了I1.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现B1所述的数据同步的方法。

Claims (10)

1.一种数据同步的方法,其特征在于,应用于redis集群中的主服务器,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器;所述数据同步的方法包括:
获取待同步数据;
将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器。
2.根据权利要求1所述的数据同步方法,其特征在于,所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,包括:
所述redis集群中的另一主服务器通过预先为另一所述主服务器配置的同步客户端从所述主服务器的消息队列中获取所述待同步数据。
3.根据权利要求1所述的数据同步方法,其特征在于,在所述将所述待同步数据写入预先为所述主服务器配置的消息队列前,还包括:
判断所述待同步数据的来源是否为预先为所述主服务器配置的同步客户端;
若否,则将所述待同步数据写入所述主服务器的消息队列中。
4.一种数据同步的方法,其特征在于,应用于预先为redis集群中的主服务器配置的同步客户端,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器,预先为每个所述主服务器配置有消息队列;所述数据同步的方法包括:
获取所述redis集群中的另一主服务器的消息队列中的待同步数据;
将所述待同步数据写入所述同步客户端的主服务器,供所述同步客户端的主服务器将所述待同步数据同步至所述主服务器对应的多个从服务器。
5.一种数据同步系统,其特征在于,包括:redis集群,同步客户端及消息队列,所述redis集群包括若干个主服务器,预先为每个所述主服务器配置有所述同步客户端和所述消息队列,且每个所述主服务器对应有多个从服务器;
所述redis集群中的主服务器用于获取待同步数据,并将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器通过预先为另一所述主服务器配置的同步客户端从预先为所述主服务器配置的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器。
6.一种redis集群的主服务器,其特征在于,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器;所述主服务器包括:
获取模块,用于获取待同步数据;
写入模块,用于将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器。
7.一种同步客户端,其特征在于,所述同步客户端为预先为redis集群中的主服务器配置的同步客户端,所述redis集群包括若干个主服务器,预先为每个所述主服务器配置有消息队列,且每个所述主服务器对应有多个从服务器;所述同步客户端包括:
获取模块,用于获取所述redis集群中的另一主服务器的消息队列中的待同步数据;
写入模块,用于将所述待同步数据写入所述同步客户端的主服务器,供所述同步客户端的主服务器将所述待同步数据同步至所述主服务器对应的多个从服务器。
8.一种redis集群的主服务器,其特征在于,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器;所述redis集群的主服务器包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行:
获取待同步数据;
将所述待同步数据写入预先为所述主服务器配置的消息队列中,以供所述redis集群中的另一主服务器从所述主服务器的消息队列中获取所述待同步数据,并将所述待同步数据同步至另一所述主服务器对应的多个从服务器。
9.一种同步客户端,其特征在于,所述同步客户端为预先为redis集群中的主服务器配置的同步客户端,所述redis集群包括若干个主服务器,且每个所述主服务器对应有多个从服务器,预先为每个所述主服务器配置有消息队列;所述同步客户端包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行:
获取所述redis集群中的另一主服务器的消息队列中的待同步数据;
将所述待同步数据写入所述同步客户端的主服务器,供所述同步客户端的主服务器将所述待同步数据同步至所述主服务器对应的多个从服务器。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-3任一项所述的数据同步的方法,或权利要求4中所述的数据同步的方法。
CN201910379917.XA 2019-05-08 2019-05-08 数据同步的方法、系统、主服务器、同步客户端及介质 Pending CN110149382A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910379917.XA CN110149382A (zh) 2019-05-08 2019-05-08 数据同步的方法、系统、主服务器、同步客户端及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910379917.XA CN110149382A (zh) 2019-05-08 2019-05-08 数据同步的方法、系统、主服务器、同步客户端及介质

Publications (1)

Publication Number Publication Date
CN110149382A true CN110149382A (zh) 2019-08-20

Family

ID=67595106

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910379917.XA Pending CN110149382A (zh) 2019-05-08 2019-05-08 数据同步的方法、系统、主服务器、同步客户端及介质

Country Status (1)

Country Link
CN (1) CN110149382A (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110597910A (zh) * 2019-09-12 2019-12-20 聚好看科技股份有限公司 一种异地数据同步方法、装置和系统
CN110727733A (zh) * 2019-09-25 2020-01-24 许昌许继软件技术有限公司 一种主备服务器系统及数据同步方法
CN110795503A (zh) * 2019-10-18 2020-02-14 北京达佳互联信息技术有限公司 分布式存储系统的多集群数据同步方法及相关装置
CN111190766A (zh) * 2019-12-12 2020-05-22 北京淇瑀信息科技有限公司 基于HBase数据库的跨机房集群的容灾方法、装置和系统
CN111460028A (zh) * 2020-03-09 2020-07-28 拉扎斯网络科技(上海)有限公司 数据传输方法、数据传输装置、存储介质和电子设备
CN111767296A (zh) * 2020-06-30 2020-10-13 北京百度网讯科技有限公司 用于同步数据的方法、装置、电子设备及可读存储介质
CN111988427A (zh) * 2020-08-31 2020-11-24 湖南快乐阳光互动娱乐传媒有限公司 一种基于分布式的本地缓存处理方法及系统
CN112187889A (zh) * 2020-09-15 2021-01-05 中信银行股份有限公司 一种数据同步方法、装置及存储介质
CN112925848A (zh) * 2021-02-23 2021-06-08 马上消费金融股份有限公司 一种数据同步方法、装置、设备及可读存储介质
CN113760556A (zh) * 2020-11-17 2021-12-07 西安京迅递供应链科技有限公司 一种消息同步方法和装置
CN114610817A (zh) * 2022-05-12 2022-06-10 恒生电子股份有限公司 数据同步方法、装置、多活系统、电子设备及存储介质
CN114780643A (zh) * 2022-06-16 2022-07-22 恒生电子股份有限公司 数据同步处理方法、装置、电子设备及可读存储介质
CN115037758A (zh) * 2022-04-27 2022-09-09 浪潮通信技术有限公司 消息同步方法及服务器
CN117453150A (zh) * 2023-12-25 2024-01-26 杭州阿启视科技有限公司 录像存储调度服务多实例的实现方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104980519A (zh) * 2015-06-29 2015-10-14 北京奇虎科技有限公司 多机房存储系统
CN106357782A (zh) * 2016-09-29 2017-01-25 苏州科达科技股份有限公司 用于数据同步的多级架构、数据同步方法和故障处理方法
CN108055343A (zh) * 2017-12-26 2018-05-18 北京奇虎科技有限公司 用于机房的数据同步方法及装置
CN108256002A (zh) * 2017-12-31 2018-07-06 广东欧珀移动通信有限公司 跨机房数据同步方法、装置、系统以及服务器
CN108874555A (zh) * 2018-05-23 2018-11-23 福建天泉教育科技有限公司 一种写消息至消息中间件的方法及装置
CN108920504A (zh) * 2018-05-28 2018-11-30 北京达佳互联信息技术有限公司 一种缓存数据的同步方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104980519A (zh) * 2015-06-29 2015-10-14 北京奇虎科技有限公司 多机房存储系统
CN106357782A (zh) * 2016-09-29 2017-01-25 苏州科达科技股份有限公司 用于数据同步的多级架构、数据同步方法和故障处理方法
CN108055343A (zh) * 2017-12-26 2018-05-18 北京奇虎科技有限公司 用于机房的数据同步方法及装置
CN108256002A (zh) * 2017-12-31 2018-07-06 广东欧珀移动通信有限公司 跨机房数据同步方法、装置、系统以及服务器
CN108874555A (zh) * 2018-05-23 2018-11-23 福建天泉教育科技有限公司 一种写消息至消息中间件的方法及装置
CN108920504A (zh) * 2018-05-28 2018-11-30 北京达佳互联信息技术有限公司 一种缓存数据的同步方法及装置

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110597910A (zh) * 2019-09-12 2019-12-20 聚好看科技股份有限公司 一种异地数据同步方法、装置和系统
CN110727733B (zh) * 2019-09-25 2023-07-14 许昌许继软件技术有限公司 一种主备服务器系统及数据同步方法
CN110727733A (zh) * 2019-09-25 2020-01-24 许昌许继软件技术有限公司 一种主备服务器系统及数据同步方法
CN110795503A (zh) * 2019-10-18 2020-02-14 北京达佳互联信息技术有限公司 分布式存储系统的多集群数据同步方法及相关装置
CN111190766A (zh) * 2019-12-12 2020-05-22 北京淇瑀信息科技有限公司 基于HBase数据库的跨机房集群的容灾方法、装置和系统
CN111460028A (zh) * 2020-03-09 2020-07-28 拉扎斯网络科技(上海)有限公司 数据传输方法、数据传输装置、存储介质和电子设备
CN111767296A (zh) * 2020-06-30 2020-10-13 北京百度网讯科技有限公司 用于同步数据的方法、装置、电子设备及可读存储介质
CN111988427A (zh) * 2020-08-31 2020-11-24 湖南快乐阳光互动娱乐传媒有限公司 一种基于分布式的本地缓存处理方法及系统
CN112187889A (zh) * 2020-09-15 2021-01-05 中信银行股份有限公司 一种数据同步方法、装置及存储介质
CN113760556A (zh) * 2020-11-17 2021-12-07 西安京迅递供应链科技有限公司 一种消息同步方法和装置
CN112925848A (zh) * 2021-02-23 2021-06-08 马上消费金融股份有限公司 一种数据同步方法、装置、设备及可读存储介质
CN112925848B (zh) * 2021-02-23 2024-02-06 马上消费金融股份有限公司 一种数据同步方法、装置、设备及可读存储介质
CN115037758A (zh) * 2022-04-27 2022-09-09 浪潮通信技术有限公司 消息同步方法及服务器
CN114610817B (zh) * 2022-05-12 2022-09-27 恒生电子股份有限公司 数据同步方法、装置、多活系统、电子设备及存储介质
CN114610817A (zh) * 2022-05-12 2022-06-10 恒生电子股份有限公司 数据同步方法、装置、多活系统、电子设备及存储介质
CN114780643A (zh) * 2022-06-16 2022-07-22 恒生电子股份有限公司 数据同步处理方法、装置、电子设备及可读存储介质
CN114780643B (zh) * 2022-06-16 2022-10-21 恒生电子股份有限公司 数据同步处理方法、装置、电子设备及可读存储介质
CN117453150A (zh) * 2023-12-25 2024-01-26 杭州阿启视科技有限公司 录像存储调度服务多实例的实现方法
CN117453150B (zh) * 2023-12-25 2024-04-05 杭州阿启视科技有限公司 录像存储调度服务多实例的实现方法

Similar Documents

Publication Publication Date Title
CN110149382A (zh) 数据同步的方法、系统、主服务器、同步客户端及介质
CN108737468B (zh) 云平台服务集群、构建方法及装置
CN104735098B (zh) 会话信息的控制方法和控制系统
US9699276B2 (en) Data distribution method and system and data receiving apparatus
CN106506703A (zh) 基于共享内存的服务发现方法、装置及系统、服务器
CN105357296A (zh) 一种Docker云平台下弹性缓存系统
CN104580226A (zh) 一种共享会话数据的系统和方法
CN104011701A (zh) 内容传送网络
CN109032796B (zh) 一种数据处理方法和装置
CN106657314A (zh) 跨数据中心数据同步系统及方法
CN103188245A (zh) 一种对战类游戏服务端系统
CN111314212B (zh) 一种基于Netty与插件机制的API网关及控制方法
CN103023857A (zh) 一种信息资源远程部署的方法及系统
CN110196860A (zh) 唯一标识分配方法及装置、电子设备、存储介质
CN107734017A (zh) 数据服务方法及系统
CN110196843A (zh) 一种基于容器集群的文件分发方法及容器集群
CN115794139A (zh) 镜像数据处理方法、装置、设备以及介质
CN115426361A (zh) 分布式客户端打包方法、装置、主服务器及存储介质
CN113204425B (zh) 供进程管理内部线程的方法、装置、电子设备及存储介质
CN104717249A (zh) 远程操作应用发布的方法、代理服务器和系统
CN205142283U (zh) 多平台数据共享系统
CN105357306B (zh) 多平台数据共享系统及其数据共享方法
CN106936643B (zh) 一种设备联动方法以及终端设备
CN110493175A (zh) 一种信息处理方法、电子设备和存储介质
CN114221971B (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190820