CN113407637A - 一种数据同步方法、装置、电子设备以及存储介质 - Google Patents

一种数据同步方法、装置、电子设备以及存储介质 Download PDF

Info

Publication number
CN113407637A
CN113407637A CN202110789219.4A CN202110789219A CN113407637A CN 113407637 A CN113407637 A CN 113407637A CN 202110789219 A CN202110789219 A CN 202110789219A CN 113407637 A CN113407637 A CN 113407637A
Authority
CN
China
Prior art keywords
data
synchronized
service
message queue
processing thread
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
CN202110789219.4A
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.)
Shanghai Pudong Development Bank Co Ltd
Original Assignee
Shanghai Pudong Development Bank 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 Shanghai Pudong Development Bank Co Ltd filed Critical Shanghai Pudong Development Bank Co Ltd
Priority to CN202110789219.4A priority Critical patent/CN113407637A/zh
Publication of CN113407637A publication Critical patent/CN113407637A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据同步方法、装置、电子设备以及存储介质,该方法由基于Redis实现的任一机房中的服务器执行,该方法包括:获取待同步数据;根据所述待同步数据的业务标识,确定所述待同步数据对应的处理线程;采用所述处理线程,将所述待同步数据写入对应业务分区中的消息队列,并向其他机房同步所述消息队列中的数据。通过本申请所提供的技术方案,能够降低时延,提高数据同步吞吐量。

Description

一种数据同步方法、装置、电子设备以及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据同步方法、装置、电子设备以及存储介质。
背景技术
Redis作为缓存数据库,在各类服务系统中有着十分广泛的应用,它可以将热点数据缓存在内存中,减少系统对数据库和磁盘的访问,降低数据库压力,提升服务的访问性能和效率,在软件架构中扮演重要的角色。
随着互联网的快速发展,数据规模和用户数量的快速增加,对高并发和异地容灾等的要求也越来越高。目前,通常采用主从异地部署方式,即多个基于Redis实现的机房部署于不同地区,且多个机房中有一个主机房,其余均为从机房;然而这种主从架构的异地部署方式,存在数据传输、同步延迟较高,数据写入性能瓶颈等问题,亟需改进。
发明内容
本申请提供一种数据同步方法、装置、电子设备以及存储介质,以降低时延,提高数据同步吞吐量。
第一方面,本申请实施例提供了一种数据同步方法,由基于Redis实现的任一机房中的主服务器执行,该方法包括:
获取待同步数据;
根据所述待同步数据的业务标识,确定所述待同步数据对应的处理线程;
采用所述处理线程,将所述待同步数据写入对应业务分区中的消息队列,并向其他机房同步所述消息队列中的数据。
第二方面,本申请实施例还提供了一种数据同步装置,配置于基于Redis实现的任一机房中的主服务器中,该装置包括:
数据获取模块,用于获取待同步数据;
线程确定模块,用于根据所述待同步数据的业务标识,确定所述待同步数据对应的处理线程;
数据同步模块,用于采用所述处理线程,将所述待同步数据写入对应业务分区中的消息队列,并向其他机房同步所述消息队列中的数据。
第三方面,本申请实施例还提供了一种电子设备,该电子设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本申请任意实施例所述的数据同步方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请任意实施例所述的数据同步方法。
本申请实施例的技术方案,可由基于Redis实现的任一机房中的服务器执行,通过引入业务标识,结合处理线程和业务分区,不仅提高了数据同步的吞吐量,而且维持了相关业务数据之间的同步顺序;同时,各机房之间不存在主从之分,进而使各机房的资源能够得到充分利用。此外,相比于现有的主从部署方案,本实施例各机房之间不存在主从之分,即任一机房均具有写操作和读操作权限,还可降低数据传输、同步时延,实现快速异地容灾,进而提高了服务的可靠性。为实时各异地机房之间的数据同步提供了一种新思路。
附图说明
图1A是本申请实施例提供的一种数据同步方法的流程图;
图1B是本申请实施例提供的一种数据同步系统架构图;
图2A是本申请实施例提供的另一种数据同步方法的流程图;
图2B是本申请实施例提供的一种数据写入业务分区的示意图;
图3是本申请实施例提供的又一种数据同步方法的流程图;
图4是本申请实施例提供的一种数据同步装置的结构框图;
图5是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
图1A是本申请实施例提供的一种数据同步方法的流程图,图1B是本申请实施例提供的一种数据同步系统架构图;本实施例可适用于基于Redis实现的多个机房之间进行数据同步的情况。可选的,本实施例中基于Redis实现的每一机房可以视为一个Redis集群,各机房可部署于不同地区,且各机房之间可以是完全对等的关系,也就是说每个机房均具有读写功能,各机房之间不存在主从之分;进一步的,每一机房中包括至少两个服务器,各服务器之间可以是完全对等的关系,也可以切换地设置一个服务器为主服务器,其他服务器作为从服务器。
本实施例的方法可以由本申请实施例提供的数据同步装置来执行,该装置可采用软件和/或硬件的方式实现,并可集成于任一机房中,具体可以集成于任一机房的任意服务器中,尤其适用于集成于任一机房的主服务器中。结合图1A和图1B,该数据同步方法具体包括:
S110,获取待同步数据。
本实施例中,所谓待同步数据即为本地机房所获取的需要向其他机房同步的数据;可选的,本地机房(进一步可以为本地机房中的主服务器)所获取的待同步数据可以是业务端写入的数据。其中,本地机房为执行本实施例所提供的数据同步方法的服务器所归属的机房,业务端可以是用户所持的终端。例如,如图1B所示,用户在具有数据写入需求时,可以通过业务端向接入层发送待写入数据;接入层根据用户所属地区(进一步可以为IP地址),从至少两个机房中选择一个机房(即本地机房,比如机房A),并向所选择的机房中的主服务器发送用户的待写入数据;进而本地机房中的主服务器可以获取用户的待写入数据,并可以将所获取的数据写入主服务器所配置的Redis中,用于后续向其他机房同步以保证数据的一致性,至此本地机房中的主服务器获取到了待同步数据。
其中,接入层用于管理各个机房以及业务端的接入等,本实施例中可以选用一个控制台作为接入层;进一步的,接入层根据用户所属地区,从至少两个机房中选择一个机房具体可以是,接入层选择至少两个机房中与用户所属地区相同的机房,或者接入层选择至少两个机房中与用户所属地区最近的机房。
需要说明的是,现有的主从部署方案,只有主节点具有写操作权限,如果一个用户在从节点的部署地要进行写操作,需要连接主节点所在的异地,进而会导致数据传输、同步延迟较高;本实施例通过引入接入层,基于用户所属地区分配机房,减少了网络传输举例,降低了时延。进一步的,如果用户所属地区的机房出现故障,通过本实施例在用户无感知的情况,将用户的数据传输至离用户所属地最近的机房,即实现快速异地容灾,大大提高了服务的可靠性。
S120,根据待同步数据的业务标识,确定待同步数据对应的处理线程。
本实施例中,业务标识用于唯一标识业务,比如可以是业务代码;不同业务具有不同的业务标识。可选的,接入层可以向用户展示系统所能处理的各种业务的业务规范,以便用户按照业务规范进行写操作和/或读操作,其中业务规范中可以包括业务标识。进一步的,本实施例可以从设定字段中获取待同步数据的业务标识。
示例性的,继续参见图1B,本实施例中本地机房(比如机房A)的任一服务器中均可以配置有复制模块,复制模块可以由复制器、Kafka和同步器等组成。进一步的,本地机房中作为主节点的服务器(即主服务器)中的复制器可模拟Redis从节点,基于主从协议实时从本地所配置的Redis中同步数据,即复制器可以从本地所配置的Redis中复制待同步数据;之后复制器可以根据业务标识,确定待同步数据对应的处理线程。
可选的,一种可实施方式,可以根据系统所能够服务的业务的数量预先设置多个有序线程,并建立线程与业务标识之间的关联关系,其中每一线程可处理至少一种业务的数据;进而可以根据待同步数据的业务标识,以及线程与业务标识之间的关联关系,确定待同步数据对应的处理线程。
需要说明的是,现有技术采用Keyspace Notification功能会对业务Redis的性能产生一定影响,并且会侵入现有Redis架构;而本实施例通过复制器模拟Redis从节点进行数据复制,能够在现有Redis架构的基础上进行零侵入改造。
S130,采用处理线程,将待同步数据写入对应业务分区中的消息队列,并向其他机房同步消息队列中的数据。
可选的,本实施例中基于Kafka的多分区功能对不同的业务进行分区,例如可以为一个业务分区对应一个业务;进一步的,一个业务分区关联一个消息队列,进而通过对业务进行分区,可实现将不同的业务的数据写入不同的消息队列中;其中,消息队列中所存储的数据即为需要向其他机房同步的数据。
一种可实施方式,预先建立业务标识与业务分区之间的关联关系,进而可根据待同步数据的业务标识,以及业务标识与业务分区之间的关联关系,确定待同步数据对应的业务分区,之后可以采用待同步数据对应的处理线程,将待同步数据写入对应业务分区中的消息队列。
需要指出的是,Redis作为高性能缓存数据库,在生产环境下其访问量是巨大的,本实施例中通过采用Kafka多分区,将不同业务的数据写入不同分区中的消息队列,即将同一业务的数据写入同一业务分区中的消息队列,不仅维持了相关业务数据之间的同步顺序,还起到了流量削峰和保证数据不丢的作用;同时,本实施例中引入多个有序线程,能够使不同业务的数据并发进行同步,提升了吞吐量。
进一步的,在将待同步数据写入对应业务分区中的消息队列之后,可以从消息队列中按顺序取出数据,并可以通过管道即pipline同步给其他机房。例如,继续参见图1B,可以由本地机房(比如机房A)中的主服务器所配置的同步器从消息队列中按照顺序取出数据,并同步给机房B、机房C、以及机房D等其他机房,使各机房的Redis达到最终一致性。具体的可以同步给其他机房中的主服务器,比如机房B中的主服务器,由机房B中的主服务器向机房B中的从服务器同步。
可选的,本地机房的任一服务器可配置有多个同步器;进而一种可实施方式,向其他机房同步消息队列中的数据可以是,通过业务分区对应的同步器,向其他机房同步消息队列中的数据。
其中,一个同步器可以从一个或多个业务分区的消息队列中获取数据;不同的同步器可从不同的业务分区的消息队列中获取。可选的,可以预先根据所配置的同步器的数量,以及业务分区的数量,为每个业务分区分配一个同步器。
进而,本地机房中的主服务器可以通过每个业务分区对应的同步器,向其他机房同步消息队列中的数据。可以理解的是,本实施例中引入多个同步器进行数据的同步,极大地提高了数据的吞吐量。
本申请实施例提供的技术方案,可由基于Redis实现的任一机房中的服务器执行,通过引入业务标识,结合处理线程和业务分区,不仅提高了数据同步的吞吐量,而且维持了相关业务数据之间的同步顺序;同时,各机房之间不存在主从之分,进而使各机房的资源能够得到充分利用。此外,相比于现有的主从部署方案,本实施例实施例各机房之间不存在主从之分,即任一机房均具有写操作和读操作权限,还可降低数据传输、同步时延,实现快速异地容灾,进而提高了服务的可靠性。为实时各异地机房之间的数据同步提供了一种新思路。
为了控制不合规数据的传播,示例性的,在上述实施例的基础上,根据待同步数据的业务标识,确定待同步数据对应的处理线程之前,还可以对待同步数据进行合规检测。具体可以是,检测待同步数据的格式是否符合要求,检测待同步数据的业务标识是否合规,检测待同步数据中是否包括黄反数据等。
图2A是本申请实施例提供的另一种数据同步方法的流程图,本实施例在上述实施例的基础上,进一步对如何确定待同步数据对应的处理线程进行解释说明。参见图2A,该数据同步方法包括:
S210,获取待同步数据。
S220,对待同步数据的业务标识进行哈希运算,得到业务标识的哈希值。
具体的,本实施例可以获取待同步数据的业务标识,并采用设定的哈希算法,对待同步数据的业务标识进行哈希运算,以得到业务标识的哈希值。
S230,根据业务标识的哈希值和线程池中线程数量,确定待同步数据对应的处理线程。
本实施例中,多个线程组成线程池,且线程池中的每个线程均为有序线程。
可选的,在复制器阶段,可以采用业务标识的哈希值对线程池中线程数量进行取模,根据取模结果,确定待同步数据对应的处理线程。例如,可以预先按照流水号,为线程池中的每个线程分配一个唯一编号,例如图2B所示,线程池中包括线程1、线程2、线程3…;进而可以将线程池中流水号与模型一致的线程,作为待同步数据对应的处理线程。
进一步的,在确定待同步数据对应的处理线程之后,可以将待同步数据放在对应的处理线程下执行。
可以理解的是,通过本实施例,同一业务的数据由同一线程执行,进而可以保证相关业务数据写入消息队列的顺序,避免出现先delete a再set a的现象。
S240,采用处理线程,将待同步数据写入对应业务分区中的消息队列,并向其他机房同步消息队列中的数据。
本申请实施例提供的技术方案,通过根据业务标识的哈希值和线程池中线程数量,确定待同步数据对应的处理线程,可以保证相关业务数据写入消息队列的顺序,避免出现先delete a再set a的现象。
可选的,在上述任一实施例的基础上,采用处理线程,将待同步数据写入对应业务分区中的消息队列可以是:根据待同步数据的业务标识,从至少两个业务分区中确定待同步数据对应的业务分区;采用处理线程,将待同步数据写入对应业务分区中的消息队列。
进一步的,本实施例中业务分区的数量大于线程池中线程数量。例如,业务分区的数量可以为线程池中线程数量的2倍。
具体的,可以采用设定的哈希算法,对待同步数据的业务标识进行哈希运算,以得到业务标识的哈希值;之后采用业务标识的哈希值对业务分区的数量进行取模,根据取模结果,确定待同步数据对应的业务分区;进而采用处理线程,将待同步数据写入对应业务分区中的消息队列。
例如,继续参见图2B,假设待同步数据对应的处理线程为线程池中的线程1,待同步数据中一部分数据对应的业务分区为业务分区1,一部分数据对应的业务分区为业务分区2,进而线程1可将待同步数据写入业务分区1的消息队列中和业务分区2的消息队列中。
可以理解的是,通过上述方案,同一业务的数据可以被写入同一业务分区的消息队列中,进而维持了相关业务数据之间的同步顺序。进一步的,通过采用线程池、Kafka多分区、多个同步器等组合的方式,极大地提升了数据同步吞吐量。
图3是本申请实施例提供的又一种数据同步方法的流程图,本实施例在上述实施例的基础上,又进一步对如何确定待同步数据对应的处理线程进行解释说明。参见图3,该数据同步方法包括:
S310,获取待同步数据。
S320,识别待同步数据是否为回环数据;若否,则执行S330;若是,则执行S350。
需要说明的是,结合图1B,本地机房的主服务器所获取的待同步数据可以是业务端写入的数据;还可以是其他机房中的主服务器向本地机房的主服务器写入的数据,比如机房B中的主服务器通过同步器从消息队列中提取数据,并向机房A同步数据,具体可以是将数据写入机房A的主服务器中的Redis中。进一步的,本实施例根据数据的来源可以将在系统内传输的数据分为两类,一类为源数据(即业务端写入的数据),一类为回环数据(即从其他机房同步的数据)。
可以理解的是,对于从其他机房获取的数据(即回环数据),如果本地机房再向其他机房同步,将会使得这条数据反复无限循环执行,也就是说数据重复同步,进而造成无效内存占用。
因此,为避免数据重复同步;本实施例中在获取到待同步数据之后,可以对待同步数据进行识别,以确定待同步数据是否为回环数据。具体可以是,对待同步数据执行回环验证,进而根据执行结果,确定待同步数据是否为回环数据;或者可以识别待同步数据中是否携带有回环验证数据,若有,则可以确定待同步数据为回环数据。
例如,结合图1B,假设本地机房为机房A,业务端向机房A的主服务器写入数据,例如set prefix:aKey 1,即机房A的主服务器获取到待同步数据,其中prefix(即前缀)代表业务标识;机房A的主服务器中的复制器可模拟Redis从节点,基于主从协议实时从本地所配置的Redis中同步数据,即复制器可以从本地所配置的Redis中复制待同步数据,之后复制器可以执行回环验证,具体可以是执行del prefix:circleKey:md5,若执行成功则说明待同步数据是回环数据;若否,则复制器可以根据业务标识,确定待同步数据对应的处理线程,并由处理线程将待同步数据写入对应业务分区中的消息队列;由同步器从业务分区的消息队列中取出数据,并计算数据的回环验证,即MD5(set prefix:aKey 1),得到prefix:circleKey:md5,之后向其他机房写入回环验证数据setex prefix:circleKey:md5 10 1,以及真实数据set prefix:aKey 1。其中,10表示同步延迟10s,可根据实际情况进行调整。
进而其他机房,比如机房B的主服务器中的复制器可模拟Redis从节点,基于主从协议实时从本地所配置的Redis中同步数据,并可执行del prefix:circleKey:md5,若执行成功则说明待同步数据是回环数据,此时该数据将不会被线程执行,也不会被写入消息队列,即不会出现机房B向机房A同步该数据的现象,至此打破了循环。
S330,根据待同步数据的业务标识,确定待同步数据对应的处理线程。
S340,采用处理线程,将待同步数据写入对应业务分区中的消息队列,并向其他机房同步消息队列中的数据。
S350,禁止向其他机房同步待同步数据。
本申请实施例提供的技术方案,在获取到待同步数据之后,先识别待同步数据是否为回环数据,只有在确定待同步数据不是回环数据的情况下,才执行后续同步数据的操作。本实施例通过增加回环数据识别过程,可以避免数据重复同步。
图4是本申请实施例提供的一种数据同步装置的结构框图,该装置可集成于任一机房中,具体可以集成于任一机房的任意服务器中,尤其适用于集成于任一机房的主服务器中。该装置可执行本发明上述任意实施例所提供的数据同步方法,具体执行方法相应的功能模块和有益效果。如图4所示,该数据同步装置400包括:
数据获取模块410,用于获取待同步数据;
线程确定模块420,用于根据待同步数据的业务标识,确定待同步数据对应的处理线程;
数据同步模块430,用于采用处理线程,将待同步数据写入对应业务分区中的消息队列,并向其他机房同步消息队列中的数据。
本申请实施例提供的技术方案,可由基于Redis实现的任一机房中的服务器执行,通过引入业务标识,结合处理线程和业务分区,不仅提高了数据同步的吞吐量,而且维持了相关业务数据之间的同步顺序;同时,各机房之间不存在主从之分,进而使各机房的资源能够得到充分利用。此外,相比于现有的主从部署方案,本实施例实施例各机房之间不存在主从之分,即任一机房均具有写操作和读操作权限,还可降低数据传输、同步时延,实现快速异地容灾,进而提高了服务的可靠性。为实时各异地机房之间的数据同步提供了一种新思路。
示例性的,线程确定模块420具体用于:
对待同步数据的业务标识进行哈希运算,得到业务标识的哈希值;
根据业务标识的哈希值和线程池中线程数量,确定待同步数据对应的处理线程。
示例性的,数据同步模块430在采用处理线程,将待同步数据写入对应业务分区中的消息队列时,具体用于:
根据待同步数据的业务标识,从至少两个业务分区中确定待同步数据对应的业务分区;
采用处理线程,将待同步数据写入对应业务分区中的消息队列。
示例性的,数据同步模块430在向其他机房同步消息队列中的数据时,具体用于:
通过业务分区对应的同步器,向其他机房同步消息队列中的数据。
示例性的,线程确定模块420还具体用于:
识别待同步数据是否为回环数据;
若否,则根据待同步数据的业务标识,确定待同步数据对应的处理线程。
示例性的,上述装置还包括:
禁止模块,用于若识别到待同步数据是回环数据,则禁止向其他机房同步待同步数据。
图5为本申请实施例提供的一种电子设备的结构示意图,图5示出了适于用来实现本申请实施例实施方式的示例性设备的框图。图5显示的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,电子设备50以通用计算设备的形式表现。电子设备50的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
电子设备50典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备50访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器(高速缓存32)。电子设备50可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请实施例各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本申请实施例所描述的实施例中的功能和/或方法。
电子设备50也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该电子设备50交互的设备通信,和/或与使得该电子设备50能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,电子设备50还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与电子设备50的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备50使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本申请实施例所提供的数据同步方法。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序(或称为计算机可执行指令),该程序被处理器执行时用于执行本申请实施例所提供的数据同步方法。
本申请实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请实施例操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请实施例进行了较为详细的说明,但是本申请实施例不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。

Claims (9)

1.一种数据同步方法,其特征在于,由基于Redis实现的任一机房中的服务器执行,所述方法包括:
获取待同步数据;
根据所述待同步数据的业务标识,确定所述待同步数据对应的处理线程;
采用所述处理线程,将所述待同步数据写入对应业务分区中的消息队列,并向其他机房同步所述消息队列中的数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述待同步数据的业务标识,确定所述待同步数据对应的处理线程,包括:
对所述待同步数据的业务标识进行哈希运算,得到所述业务标识的哈希值;
根据所述业务标识的哈希值和线程池中线程数量,确定所述待同步数据对应的处理线程。
3.根据权利要求1所述的方法,其特征在于,所述采用所述处理线程,将所述待同步数据写入对应业务分区中的消息队列,包括:
根据所述待同步数据的业务标识,从至少两个业务分区中确定所述待同步数据对应的业务分区;
采用所述处理线程,将所述待同步数据写入对应业务分区中的消息队列。
4.根据权利要求1所述的方法,其特征在于,所述向其他机房同步所述消息队列中的数据,包括:
通过业务分区对应的同步器,向其他机房同步所述消息队列中的数据。
5.根据权利要求1所述的方法,其特征在于,所述根据所述待同步数据的业务标识,确定所述待同步数据对应的处理线程,还包括:
识别所述待同步数据是否为回环数据;
若否,则根据所述待同步数据的业务标识,确定所述待同步数据对应的处理线程。
6.根据权利要求5所述的方法,其特征在于,还包括:
若识别到所述待同步数据是回环数据,则禁止向其他机房同步所述待同步数据。
7.一种数据同步装置,其特征在于,配置于基于Redis实现的任一机房中的服务器中,所述装置包括:
数据获取模块,用于获取待同步数据;
线程确定模块,用于根据所述待同步数据的业务标识,确定所述待同步数据对应的处理线程;
数据同步模块,用于采用所述处理线程,将所述待同步数据写入对应业务分区中的消息队列,并向其他机房同步所述消息队列中的数据。
8.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一项所述的数据同步方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一项所述的数据同步方法。
CN202110789219.4A 2021-07-13 2021-07-13 一种数据同步方法、装置、电子设备以及存储介质 Pending CN113407637A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110789219.4A CN113407637A (zh) 2021-07-13 2021-07-13 一种数据同步方法、装置、电子设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110789219.4A CN113407637A (zh) 2021-07-13 2021-07-13 一种数据同步方法、装置、电子设备以及存储介质

Publications (1)

Publication Number Publication Date
CN113407637A true CN113407637A (zh) 2021-09-17

Family

ID=77685939

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110789219.4A Pending CN113407637A (zh) 2021-07-13 2021-07-13 一种数据同步方法、装置、电子设备以及存储介质

Country Status (1)

Country Link
CN (1) CN113407637A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114442959A (zh) * 2022-01-29 2022-05-06 北京百度网讯科技有限公司 多地域存储系统的数据写入方法、装置及系统
CN115037758A (zh) * 2022-04-27 2022-09-09 浪潮通信技术有限公司 消息同步方法及服务器
CN117785767A (zh) * 2024-02-27 2024-03-29 苏州仰思坪半导体有限公司 消息同步方法、系统以及相关装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104202375A (zh) * 2014-08-22 2014-12-10 广州华多网络科技有限公司 同步数据的方法及系统
CN108055343A (zh) * 2017-12-26 2018-05-18 北京奇虎科技有限公司 用于机房的数据同步方法及装置
CN109739929A (zh) * 2018-12-18 2019-05-10 中国人民财产保险股份有限公司 数据同步方法、装置及系统
CN112422628A (zh) * 2020-10-19 2021-02-26 天翼电子商务有限公司 Redis-canal跨机房缓存同步系统
CN112988423A (zh) * 2021-03-19 2021-06-18 北京京东拓先科技有限公司 消息消费、消息分发方法、装置、服务器及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104202375A (zh) * 2014-08-22 2014-12-10 广州华多网络科技有限公司 同步数据的方法及系统
CN108055343A (zh) * 2017-12-26 2018-05-18 北京奇虎科技有限公司 用于机房的数据同步方法及装置
CN109739929A (zh) * 2018-12-18 2019-05-10 中国人民财产保险股份有限公司 数据同步方法、装置及系统
CN112422628A (zh) * 2020-10-19 2021-02-26 天翼电子商务有限公司 Redis-canal跨机房缓存同步系统
CN112988423A (zh) * 2021-03-19 2021-06-18 北京京东拓先科技有限公司 消息消费、消息分发方法、装置、服务器及存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114442959A (zh) * 2022-01-29 2022-05-06 北京百度网讯科技有限公司 多地域存储系统的数据写入方法、装置及系统
CN115037758A (zh) * 2022-04-27 2022-09-09 浪潮通信技术有限公司 消息同步方法及服务器
CN117785767A (zh) * 2024-02-27 2024-03-29 苏州仰思坪半导体有限公司 消息同步方法、系统以及相关装置
CN117785767B (zh) * 2024-02-27 2024-04-23 苏州仰思坪半导体有限公司 消息同步方法、系统以及相关装置

Similar Documents

Publication Publication Date Title
CN113407637A (zh) 一种数据同步方法、装置、电子设备以及存储介质
US9934242B2 (en) Replication of data between mirrored data sites
CN111078147B (zh) 一种缓存数据的处理方法、装置、设备及存储介质
WO2022116425A1 (zh) 数据血缘关系解析方法、系统、计算机设备及存储介质
JP5686034B2 (ja) クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム
CN106959996B (zh) 一种基于互联网电视的后台数据同步方法
CN109561151B (zh) 数据存储方法、装置、服务器和存储介质
CN111399764B (zh) 数据存储方法、读取方法、装置、设备及存储介质
CN110633046A (zh) 一种分布式系统的存储方法、装置、存储设备及存储介质
CN111049928A (zh) 数据同步方法、系统、电子设备及计算机可读存储介质
CN111338834B (zh) 数据存储方法和装置
CN113190620B (zh) Redis集群之间数据的同步方法、装置、设备及存储介质
CN104462342B (zh) 数据库快照同步处理方法及装置
US10169441B2 (en) Synchronous data replication in a content management system
US20180025067A1 (en) Apparatus and method to establish a connection between apparatuses while synchronization of connection information thereof is suspended
CN111381770B (zh) 一种数据存储切换方法、装置、设备及存储介质
WO2021189283A1 (zh) 数据处理方法、装置、电子装置及存储介质
CN105511808B (zh) 一种数据操作方法、系统及相关装置
CN113377863A (zh) 数据同步方法、装置、电子设备及计算机可读存储介质
CN109992447B (zh) 数据复制方法、装置及存储介质
CN111083192B (zh) 数据共识方法、装置及电子设备
CN113297327A (zh) 生成分布式id的系统和方法
CN109710183B (zh) 一种数据同步方法及装置
CN112948494A (zh) 数据同步方法、装置、电子设备和计算机可读介质
CN113535478B (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: 20210917