CN113268545B - 一种增量合并与全量相结合的集群节点间键值数据异步复制方法 - Google Patents

一种增量合并与全量相结合的集群节点间键值数据异步复制方法 Download PDF

Info

Publication number
CN113268545B
CN113268545B CN202110619958.9A CN202110619958A CN113268545B CN 113268545 B CN113268545 B CN 113268545B CN 202110619958 A CN202110619958 A CN 202110619958A CN 113268545 B CN113268545 B CN 113268545B
Authority
CN
China
Prior art keywords
version
key
request
value
replication
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
Application number
CN202110619958.9A
Other languages
English (en)
Other versions
CN113268545A (zh
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.)
Shenzhen Bangsheng Real Time Intelligent Technology Co ltd
Zhejiang Bangsheng Technology Co ltd
Original Assignee
Zhejiang Bangsun Technology 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 Zhejiang Bangsun Technology Co ltd filed Critical Zhejiang Bangsun Technology Co ltd
Priority to CN202110619958.9A priority Critical patent/CN113268545B/zh
Publication of CN113268545A publication Critical patent/CN113268545A/zh
Application granted granted Critical
Publication of CN113268545B publication Critical patent/CN113268545B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F16/273Asynchronous replication or reconciliation
    • 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/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Finance (AREA)
  • Data Mining & Analysis (AREA)
  • Accounting & Taxation (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种增量合并与全量相结合的集群节点间键值数据异步复制方法,该处理方法主要分为五个部分:键值数据复制操作类型的定义、键值对修改请求的合并、增量数据的复制、全量复制的探测和全量复制。本发明键值数据异步复制方法使用异步复制机制保证了数据复制的高吞吐和低延迟,使用版本号进度追踪的机制探测是否需要执行全量复制,并使用请求合并和全量复制的机制降低数据复制带来的网络带宽开销,默认情况下为增量复制,即复制合并后的指标修改请求,但当备节点数据新旧程度远远落后于主节点,主节点会触发全量复制,将本地保存的数据复制到备节点上,从而降低了追赶时间。

Description

一种增量合并与全量相结合的集群节点间键值数据异步复制 方法
技术领域
本发明涉及风控、营销、股票交易等需要进行高频实时信息处理和存储的金融领域,尤其涉及一种增量合并与全量相结合的集群节点间键值数据异步复制方法。
背景技术
在风控、营销、股票交易等需要实施计算指标的金融领域,经常需要计算如“某实体过去1天的交易量”、“某实体过去1星期最大交易额”等金融指标,这些指标通常以键值的形式存储(如例子中,以“某实体”作为键,以“交易量”和“最大交易额”等指标作为值)。在生产环境下,为了保证故障下计算的金融指标数据依旧可用,指标数据需要冗余,即被复制到集群中不同的节点上。而对于实时计算的场景,数据冗余不需要满足事务的完整性,而更多关注低延迟和高吞吐。
目前对于键值指标数据复制的技术主要分为下面三类:
1)基于二阶段协议提交的同步复制,典型的系统为分布式关系型数据库,如MySQL热备集群方案等;
2)基于投票的复制,如Paxos、Raft协议等,数据会被复制到若干备节点,并得到一定数量备节点的确认后才被认为复制成功。典型的系统为部分NoSQL存储,如etcd、ZooKeeper集群等;
3)异步复制,数据修改请求完成后直接响应客户端,并且将请求移交给后台进程,后台进程按照移交的顺序,逐个复制请求到若干备节点,备节点逐个执行收到的请求。典型的系统有Redis集群、Aerospike集群等。
在金融指标计算的场景下,生产环境需要数据冗余,冗余的一致性不需要很高,但金融指标计算场景的流水频率很高,需要保证修改指标数据的高吞吐量和低延迟,并尽量降低网络带宽的开销。在这些需求下,上述三类复制技术均有缺陷。
第一种数据方案能保证主节点和备节点的数据强一致,但这类方案在数据复制时,需要得到所有备节点的确认,其吞吐量低,延迟高,并有很高的网络带宽开销。此外,这类方案在故障发生时,数据复制会阻塞,导致整个数据存储不可用。
第二种方案也能保证主节点和备节点的数据一致,但它在数据复制时,依旧需要得到半数以上备节点的确认,吞吐量也较低,延迟也较高。不过这类方案有一定的容错性,即在小于半数节点故障时,整个数据存储依旧可用。
第三种方案,数据复制可能会滞后,但最终会保证一致,这满足金融指标计算的需求。但是这类方案在金融指标计算中依旧有2点缺陷:
1)由于请求被逐个发送给备节点,假如有热点数据存在,那么会有大量请求被发送,而这些请求往往可以被合并,造成网络带宽的浪费;
2)当网络故障或抖动时,可能造成备节点数据的新旧程度远远落后主节点,为了让备节点的数据追赶上主节点,主节点需要将网络故障或抖动期间的所有请求逐个发送给备节点,造成追赶时间过长,且也会带来网络带宽的浪费。
综上所述,上述三类已有的数据复制技术无法完全满足金融指标计算(如风控、营销、股票交易等)的需求。
发明内容
针对上述已有的数据复制技术所产生的问题,本发明提出了增量合并与全量相结合的集群节点间键值数据异步复制的方法,实现了在高频金融指标计算场景下指标数据的复制,其中指标数据以键值形式存储。
本发明的目的是通过以下技术方案来实现的:一种增量合并与全量相结合的集群节点间键值数据异步复制方法,该方法具体包括以下步骤:
(1)键值数据复制操作类型的定义,具体分为三种形式:SET(key,value):设置键为key的值为value,若key存在,则操作失败;PUT(key,value):设置键为key的值为value,若key存在,则覆盖原值;DELETE(key):删除键为key的值,若key不存在,则操作失败。
每种键值数据复制操作类型分别对应一个接口,所述接口分为主节点端和备节点端,两端有一样的接口函数,但所需参数个数不同,具体接口包括set(key,value,version_start,version_end)、put(key,value,version_start,version_end)和delete(key,version_start,version_end);
主节点端的接口接受各操作类型操作成功的请求,对于备节点端的接口,主节点端将version_start到version_end之间各操作类型的请求合并成一个指令,备节点端的接口接受该指令并执行,所述version_start和version_end分别代表合并的请求的起始版本号和末尾版本号。
(2)键值对修改请求的合并:当若干键值对修改请求被主节点端成功执行后,主节点端将version_start到version_end之间所有键值对修改的请求合并成一个指令发送到备节点端,备节点端接收指令并执行合并请求,具体步骤如下:
(2.1)对若干键值对中每个键维护一个版本号,初始为0,主节点端每接收一个该键的请求,版本号增加1,该版本号单调递增。
(2.2)执行请求合并,修改合并状态。合并状态包含:请求类型、键、值和版本号。其中请求类型包含EMPTY、SET、PUT、DELETE。初始状态下,请求类型为EMPTY,键和值为空,版本号为上次复制成功的最新版本号。
(2.3)若主节点端接收了SET请求SET(key,value):合并状态的请求类型为EMPTY或DELETE,则设置请求类型为SET,并设置键为key,值为value,并为版本号加1;
(2.4)若主节点端接收了PUT请求PUT(key,value):则设置请求类型为PUT,并设置键为key,值为value,并为版本号加1;
(2.5)若主节点端接收了DELETE请求DELETE(key):合并状态的请求类型为EMPTY、SET或PUT,则设置请求类型为DELETE,并设置键为key,值为空,并为版本号加1;
(3)增量数据的复制:
(3.1)指定一个参数限制步骤(2)中合并请求的个数,当个数达到该限制后,根据最终得到的合并状态生成复制请求,具体如下:
a)若合并状态中的请求类型为SET,则生成的复制请求为SET请求;
b)若合并状态中的请求类型为PUT,则生成的复制请求为PUT请求;
c)若合并状态中的请求类型为DELETE,则生成的复制请求为DELETE请求;
复制请求会捎带上一次复制的最新版本号和合并请求的最新版本号,对应参数分别为version_start和version_end;其中version_start为上一次复制后的version_end。
(3.2)复制请求生成后,主节点端将请求发送给备节点端,等待备节点端的响应。若备节点端响应正常,则这次增量数据的复制成功。
(3.3)备节点端收到主节点端的复制请求,首先检查本地副本中与复制请求相关的键值对版本号version,若复制请求中的version_start不超过version,则执行复制请求,并更新版本号version为复制请求中的version_end。
(4)全量复制的探测:探测通过版本号进度的追踪进行,该探测发生在备节点端处。在步骤(3.3)中,若复制请求中的version_start超过本地版本号version,备节点端就检测到需要全量复制。此时备节点端会响应给主节点端异常,要求主节点发送全量数据进行全量复制。
(a)主节点端接收到备节点端的异常响应后,则开始全量复制。主节点端获取存储保存的键值对数据,并使用SET请求将数据复制到备节点端,并捎带键值对的最新版本号version_end,而请求的version_start为空;
(b)备节点端收到全量复制请求后,首先删除原有的数据,然后执行SET操作,并更新本地版本号version为version_end。
进一步地,步骤(1)中,每种键值数据复制操作类型对应的接口具体如下:
set(key,value,version_start,version_end):对于主节点端,该接口接受一个操作成功的SET请求,且version_start和version_end值为空,对于备节点端,version_start和version_end非空,该接口接受主节点端合并的SET请求,主节点端将version_start和version_end之间的SET请求合并成一个指令发送到备节点端,备节点端执行SET操作;
put(key,value,version_start,version_end):对于主节点端,该接口接受一个操作成功的PUT请求,且version_start和version_end值为空;对于备节点端,version_start和version_end非空,该接口接受主节点端合并的PUT请求,主节点端将version_start和version_end之间的PUT请求合并成一个指令发送到备节点端,备节点端执行PUT操作;
delete(key,version_start,version_end):对于主节点端,该接口接受一个操作成功的DELETE请求,且version_start和version_end值为空;对于备节点端,version_start和version_end非空,该接口接受主节点端合并的DELETE请求,主节点端将version_start和version_end之间的DELETE请求合并成一个指令发送到备节点端,备节点端执行DELETE操作。
进一步地,所述接口用于键值存储,包括RocksDB、Memcache,因而接口可以接入不同的键值存储系统,使得这些非分布式的键值存储获得集群间数据复制的能力。
该方法提供了下面的有益效果:
(1)指标数据以键值形式表示,并进行异步复制,保证了低延时和高吞吐;
(2)指标修改的请求在复制前会进行合并,作为复制的增量数据,从而可以进行增量复制,从而降低网络带宽的消耗;
(3)默认情况下为增量复制,即复制合并后的指标修改请求,但当备节点数据新旧程度远远落后于主节点,主节点会触发全量复制,将本地保存的数据复制到备节点上,从而降低了追赶时间;
(4)该复制方法具有高度的通用性,可以应用到不同的键值存储系统,如RocksDB、Memcached等。
附图说明
图1为合并状态的请求类型变化状态图;
图2为增量合并与全量相结合的集群节点间键值数据异步复制流程图;
图3为实施例中异步合并增量复制的示意图;
图4为实施例中全量复制的示意图。
具体实施方式
以一个实施例的方式,对上述增量合并与全量相结合的集群节点间键值数据异步复制的方法进行进一步的说明。
本发明提供了一种增量合并与全量相结合的集群节点间键值数据异步复制方法,该方法具体包括以下步骤:
(1)键值数据复制操作类型的定义,具体分为三种形式:SET(key,value):设置键为key的值为value,若key存在,则操作失败;PUT(key,value):设置键为key的值为value,若key存在,则覆盖原值;DELETE(key):删除键为key的值,若key不存在,则操作失败。
每种键值数据复制操作类型分别对应一个接口,所述接口分为主节点端和备节点端,两端有一样的接口函数,但所需参数个数不同,具体接口包括set(key,value,version_start,version_end)、put(key,value,version_start,version_end)和delete(key,version_start,version_end);
主节点端的接口接受各操作类型操作成功的请求,对于备节点端的接口,主节点端将version_start到version_end之间各操作类型的请求合并成一个指令,备节点端的接口接受该指令并执行,所述version_start和version_end分别代表合并的请求的起始版本号和末尾版本号。
每种键值数据复制操作类型对应的接口具体如下:
set(key,value,version_start,version_end):对于主节点端,该接口接受一个操作成功的SET请求,且version_start和version_end值为空,对于备节点端,version_start和version_end非空,该接口接受主节点端合并的SET请求,主节点端将version_start和version_end之间的SET请求合并成一个指令发送到备节点端,备节点端执行SET操作;
put(key,value,version_start,version_end):对于主节点端,该接口接受一个操作成功的PUT请求,且version_start和version_end值为空;对于备节点端,version_start和version_end非空,该接口接受主节点端合并的PUT请求,主节点端将version_start和version_end之间的PUT请求合并成一个指令发送到备节点端,备节点端执行PUT操作;
delete(key,version_start,version_end):对于主节点端,该接口接受一个操作成功的DELETE请求,且version_start和version_end值为空;对于备节点端,version_start和version_end非空,该接口接受主节点端合并的DELETE请求,主节点端将version_start和version_end之间的DELETE请求合并成一个指令发送到备节点端,备节点端执行DELETE操作。
所述接口适用于大多数的键值存储,包括RocksDB、Memcache等,因而接口可以接入不同的键值存储系统,使得这些非分布式的键值存储获得集群间数据复制的能力。
(2)键值对修改请求(指标修改请求)的合并:主节点端会在后台进程接收键值对修改请求(该请求定义为原始请求),并执行请求合并(合并后的请求定义为合并请求),合并的执行以及下面步骤的执行均在后台进程中执行,前台数据修改请求成功后不需要等待复制完成。当若干键值对修改请求被主节点端成功执行后,主节点端将version_start到version_end之间所有键值对修改的请求合并成一个指令发送到备节点端,备节点端接收指令并执行合并请求,合并状态的请求类型变化状态图如图1所示,具体步骤如下:
(2.1)对若干键值对中每个键维护(maintain)一个版本号,初始为0,主节点端每接收一个该键的请求,版本号增加1,该版本号单调递增。
(2.2)执行请求合并,修改合并状态。合并状态包含:请求类型、键、值和版本号。其中请求类型包含EMPTY、SET、PUT、DELETE。初始状态下,请求类型为EMPTY,键和值为空,版本号为上次复制成功的最新版本号。
(2.3)若主节点端接收了SET请求SET(key,value):合并状态的请求类型为EMPTY或DELETE,则设置请求类型为SET,并设置键为key,值为value,并为版本号加1;合并的初始请求状态不可能为PUT,所以忽略。
(2.4)若主节点端接收了PUT请求PUT(key,value):则设置请求类型为PUT,并设置键为key,值为value,并为版本号加1;
(2.5)若主节点端接收了DELETE请求DELETE(key):合并状态的请求类型为EMPTY、SET或PUT,则设置请求类型为DELETE,并设置键为key,值为空,并为版本号加1;合并的初始请求类型不可能为DELETE,所以忽略。
(3)增量数据的复制,如图2所示:
(3.1)指定一个参数限制步骤(2)中合并请求的个数,当个数达到该限制后,根据最终得到的合并状态生成复制请求,具体如下:
a)若合并状态中的请求类型为SET,则生成的复制请求为SET请求;
b)若合并状态中的请求类型为PUT,则生成的复制请求为PUT请求;
c)若合并状态中的请求类型为DELETE,则生成的复制请求为DELETE请求;
复制请求会捎带上一次复制(不论成功与否)的最新版本号和合并请求的最新版本号,对应参数分别为version_start和version_end;其中version_start为上一次复制后的version_end。
(3.2)复制请求生成后,主节点端将请求发送给备节点端,等待备节点端的响应。若备节点端响应正常,则这次增量数据的复制成功。
(3.3)备节点端收到主节点端的复制请求,首先检查本地副本中与复制请求相关的键值对版本号version,若复制请求中的version_start不超过version,则执行复制请求,并更新版本号version为复制请求中的version_end。
(4)全量复制的探测:探测通过版本号进度的追踪进行,该探测发生在备节点端处。在步骤(3.3)中,若复制请求中的version_start超过本地版本号version,备节点端就检测到需要全量复制。此时备节点端会响应给主节点端异常,要求主节点发送全量数据进行全量复制。
(a)主节点端接收到备节点端的异常响应后,则开始全量复制。主节点端获取存储保存的键值对数据,并使用SET请求将数据复制到备节点端,并捎带键值对的最新版本号version_end,而请求的version_start为空;
(b)备节点端收到全量复制请求后,首先删除原有的数据,然后执行SET操作,并更新本地版本号version为version_end。
本发明实施例有如下假设:
1)实施例中的计算指标为“某人历史交易的单笔最大金额”,这在金融风控领域是一个常见的计算指标;
2)假设某人A,他连续产生了5笔流水,分别交易了100元、95元、105元、90元、110元,且之前A没有产生任何流水;
3)该复制设置的原始请求个数的阈值为5;
4)该实施例中,共有1个主节点,1个备节点,流水由主节点处理,主节点处理过后的指标数据将会复制到备节点上。
首先说明正常情况下的异步增量合并的复制:
1)根据实施例中第1)个假设所计算的指标,第2)个假设会产生5个修改指标数据的原始请求,分别为SET(A,100),PUT(A,100),PUT(A,105),PUT(A,105)和PUT(A,110);
2)根据本发明合并状态的请求类型变化过程,上述步骤产生的5个原始修改请求分别拥有版本号1、2、3、4和5,并合并得到一个增量的合并请求PUT(A,110),起始版本号version_start为0,末尾版本号version_end为5。合并的执行以及下面步骤的执行均在后台进程中执行,前台数据修改成功后不需要等待复制完成;
3)由于已经合并了5个请求,达到了设置的阈值,于是主节点将合并请求发送给备节点;
4)备节点对于键A保存的version为0,收到的请求为PUT(A,110),请求中起始版本号version_start为0,不小于本地保存的version,所以执行该请求,返回成功响应给主节点,整个异步增量复制结束。
整个异步增量合并复制的示意图如图3所示。整个复制流程,相较于普通的异步复制需要发送5个请求,本复制方法只需要发送1个请求,可以显著降低网络带宽的占用。
接下来说明全量复制的探测和全量复制的实施例。
该例子构建在图3所示的例子基础上:
1)在图3所示例子后,A又连续来了5笔流水,交易额分别为110、100、115、105、120,产生了PUT(A,110),PUT(A,110),PUT(A,115),PUT(A,115)和PUT(A,120)共5个原始请求,合并后的请求为PUT(A,120),起始版本号version_start为5,末尾版本号version_end为10;
2)由于网络故障,该合并请求未能成功发送到备节点,此时主节点拥有键为A的数据值为120,版本号为10,而备节点拥有键为A的数据值为110,版本号为5;
3)之后,A又连续来了5笔流水,交易额分别为200、300、400、500、600,产生了PUT(A,200),PUT(A,300),PUT(A,400),PUT(A,500)和PUT(A,600)共5个原始请求,合并后的请求为PUT(A,600),起始版本号version_start为10,末尾版本号version_end为15,而备节点拥有键为A的数据值为110,版本号为5;
4)主节点将3)的合并请求发送给备节点,备节点发现自己保存的版本号5小于请求中的起始版本号10,所以返回异常给主节点;
a)主节点收到异常后,从存储中获取A的全量数据(A,600),并附上版本号15,以SET请求形式发送全量复制请求给备节点;
b)备节点收到全量复制请求,执行请求,更新全量数据,返回成功响应给主节点,整个异步全量复制流程结束。
全量复制的检测和全量复制的示意图如图4所示。整个复制流程,相较于普通的异步复制追赶需要重新10个请求,本复制方法的全量复制也只需要发送1个请求,同样可以显著降低网络带宽的占用。
本发明实施效果如下:
为了验证该复制方法的效果,本发明方法接入了Memcache,并和普通的异步复制方案进行对比。而测试的方案如下列表所示:
服务端节点有2个,一个主节点,一个备节点;
客户端使用2个节点推送,线程总数为96,请求中SET/PUT/DELETE请求比例为1:1:1,其中SET/PUT请求的大小为1KB,请求中键分布满足zipf=0.9的分布,表现出一定的热点数据;
服务端和客户端节点硬件配置如下:
CPU:E5-2670 v3@2.30GHz 48逻辑核心;
内存:250GB;
网络带宽:10000Mbps;
测试经过10轮测试,测得吞吐量(每秒处理的记录数)、客户端延迟与网络带宽占用,取平均值,如下表1所示:
表1
方案 吞吐(每秒处理请求数) 延迟/ms 网络流量/(MB/s)
普通异步复制 171130 1.68 223.2
本方案复制 271087 1.01 167.3
综上可知,本方案的复制吞吐较普通复制提升了58.4%,延迟降低了39.9%,网络流量降低了25.0%。本方案的复制能实现数据冗余,并满足实施金融计算所需的高吞吐、低延迟、低带宽占用的要求。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。

Claims (3)

1.一种增量合并与全量相结合的集群节点间键值数据异步复制方法,其特征在于,该方法具体包括以下步骤:
(1)键值数据复制操作类型的定义,具体分为三种形式:SET(key,value):设置键为key的值为value,若key存在,则操作失败;PUT(key,value):设置键为key的值为value,若key存在,则覆盖原值;DELETE(key):删除键为key的值,若key不存在,则操作失败;
每种键值数据复制操作类型分别对应一个接口,所述接口分为主节点端和备节点端,两端有一样的接口函数,但所需参数个数不同,具体接口包括set(key,value,version_start,version_end)、put(key,value,version_start,version_end)和delete(key,version_start,version_end);主节点端的接口接受各操作类型操作成功的请求,对于备节点端的接口,主节点端将version_start到version_end之间各操作类型的请求合并成一个指令,备节点端的接口接受该指令并执行,所述version_start和version_end分别代表合并的请求的起始版本号和末尾版本号;
(2)键值对修改请求的合并:当若干键值对修改请求被主节点端成功执行后,主节点端将version_start到version_end之间所有键值对修改的请求合并成一个指令发送到备节点端,备节点端接收指令并执行合并请求,具体步骤如下:
(2.1)对若干键值对中每个键维护一个版本号,初始为0,主节点端每接收一个该键的请求,版本号增加1,该版本号单调递增;
(2.2)执行请求合并,修改合并状态; 合并状态包含:请求类型、键、值和版本号; 其中请求类型包含EMPTY、SET、PUT、DELETE; 初始状态下,请求类型为EMPTY,键和值为空,版本号为上次复制成功的最新版本号;
(2.3)若主节点端接收了SET请求SET(key,value):合并状态的请求类型为EMPTY或DELETE,则设置请求类型为SET,并设置键为key,值为value,并为版本号加1;
(2.4)若主节点端接收了PUT请求PUT(key,value):则设置请求类型为PUT,并设置键为key,值为value,并为版本号加1;
(2.5)若主节点端接收了DELETE请求DELETE(key):合并状态的请求类型为EMPTY、SET或PUT,则设置请求类型为DELETE,并设置键为key,值为空,并为版本号加1;
(3)增量数据的复制:
(3.1)指定一个参数限制步骤(2)中合并请求的个数,当个数达到该限制后,根据最终得到的合并状态生成复制请求,具体如下:
a)若合并状态中的请求类型为SET,则生成的复制请求为SET请求;
b)若合并状态中的请求类型为PUT,则生成的复制请求为PUT请求;
c)若合并状态中的请求类型为DELETE,则生成的复制请求为DELETE请求;
复制请求会捎带上一次复制的最新版本号和合并请求的最新版本号,对应参数分别为version_start和version_end;其中version_start为上一次复制后的version_end;
(3.2)复制请求生成后,主节点端将请求发送给备节点端,等待备节点端的响应; 若备节点端响应正常,则这次增量数据的复制成功;
(3.3)备节点端收到主节点端的复制请求,首先检查本地副本中与复制请求相关的键值对版本号version,若复制请求中的version_start不超过version,则执行复制请求,并更新版本号version为复制请求中的version_end;
(4)全量复制的探测:探测通过版本号进度的追踪进行,该探测发生在备节点端处; 在步骤(3.3)中,若复制请求中的version_start超过本地版本号version,备节点端就检测到需要全量复制; 此时备节点端会响应给主节点端异常,要求主节点发送全量数据进行全量复制;
(a)主节点端接收到备节点端的异常响应后,则开始全量复制; 主节点端获取存储保存的键值对数据,并使用SET请求将数据复制到备节点端,并捎带键值对的最新版本号version_end,而请求的version_start为空;
(b)备节点端收到全量复制请求后,首先删除原有的数据,然后执行SET操作,并更新本地版本号version为version_end。
2.根据权利要求1所述的一种增量合并与全量相结合的集群节点间键值数据异步复制方法,其特征在于,步骤(1)中,每种键值数据复制操作类型对应的接口具体如下:
set(key,value,version_start,version_end):对于主节点端,该接口接受一个操作成功的SET请求,且version_start和version_end值为空,对于备节点端,version_start和version_end非空,该接口接受主节点端合并的SET请求,主节点端将version_start和version_end之间的SET请求合并成一个指令发送到备节点端,备节点端执行SET操作;
put(key,value,version_start,version_end):对于主节点端,该接口接受一个操作成功的PUT请求,且version_start和version_end值为空;对于备节点端,version_start和version_end非空,该接口接受主节点端合并的PUT请求,主节点端将version_start和version_end之间的PUT请求合并成一个指令发送到备节点端,备节点端执行PUT操作;
delete(key,version_start,version_end):对于主节点端,该接口接受一个操作成功的DELETE请求,且version_start和version_end值为空;对于备节点端,version_start和version_end非空,该接口接受主节点端合并的DELETE请求,主节点端将version_start和version_end之间的DELETE请求合并成一个指令发送到备节点端,备节点端执行DELETE 操作。
3.根据权利要求1所述的一种增量合并与全量相结合的集群节点间键值数据异步复制方法,其特征在于,所述接口用于键值存储,包括RocksDB、Memcache,因而接口可以接入不同的键值存储系统,使得这些非分布式的键值存储获得集群间数据复制的能力。
CN202110619958.9A 2021-06-03 2021-06-03 一种增量合并与全量相结合的集群节点间键值数据异步复制方法 Active CN113268545B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110619958.9A CN113268545B (zh) 2021-06-03 2021-06-03 一种增量合并与全量相结合的集群节点间键值数据异步复制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110619958.9A CN113268545B (zh) 2021-06-03 2021-06-03 一种增量合并与全量相结合的集群节点间键值数据异步复制方法

Publications (2)

Publication Number Publication Date
CN113268545A CN113268545A (zh) 2021-08-17
CN113268545B true CN113268545B (zh) 2022-05-17

Family

ID=77234140

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110619958.9A Active CN113268545B (zh) 2021-06-03 2021-06-03 一种增量合并与全量相结合的集群节点间键值数据异步复制方法

Country Status (1)

Country Link
CN (1) CN113268545B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114676136B (zh) * 2022-03-28 2024-06-18 浙江邦盛科技股份有限公司 一种面向内存键值表的子集过滤器

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105915391A (zh) * 2016-06-08 2016-08-31 国电南瑞科技股份有限公司 基于单阶段提交并具备自恢复功能的分布式键值存储方法
CN111177159A (zh) * 2019-08-16 2020-05-19 腾讯科技(深圳)有限公司 一种数据处理的系统、方法和数据更新设备
CN112579550A (zh) * 2020-12-21 2021-03-30 国电南瑞科技股份有限公司 一种分布式文件系统的元数据信息同步方法及系统
CN112612850A (zh) * 2020-12-18 2021-04-06 腾讯科技(深圳)有限公司 数据同步方法及装置
CN112711470A (zh) * 2020-12-30 2021-04-27 浙江邦盛科技有限公司 一种集群并行处理多任务的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10606864B2 (en) * 2016-08-16 2020-03-31 Quintessencelabs Pty Ltd. Fault-tolerant key management system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105915391A (zh) * 2016-06-08 2016-08-31 国电南瑞科技股份有限公司 基于单阶段提交并具备自恢复功能的分布式键值存储方法
CN111177159A (zh) * 2019-08-16 2020-05-19 腾讯科技(深圳)有限公司 一种数据处理的系统、方法和数据更新设备
CN112612850A (zh) * 2020-12-18 2021-04-06 腾讯科技(深圳)有限公司 数据同步方法及装置
CN112579550A (zh) * 2020-12-21 2021-03-30 国电南瑞科技股份有限公司 一种分布式文件系统的元数据信息同步方法及系统
CN112711470A (zh) * 2020-12-30 2021-04-27 浙江邦盛科技有限公司 一种集群并行处理多任务的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
接处警系统中容灾备份子系统的设计与实现;余诗尧;《计算机技术》;20170401;全文 *

Also Published As

Publication number Publication date
CN113268545A (zh) 2021-08-17

Similar Documents

Publication Publication Date Title
US7895501B2 (en) Method for auditing data integrity in a high availability database
JP5559821B2 (ja) データを記憶する方法、データをミラーリングする方法、命令シーケンスを担持する機械読み取り可能な媒体、および、当該方法をコンピュータに実行させるためのプログラム
US9965364B2 (en) Fault tolerant listener registration in the presence of node crashes in a data grid
JP4461147B2 (ja) リモートデータミラーリングを用いたクラスタデータベース
US8301600B1 (en) Failover recovery in a distributed data store
US20020133507A1 (en) Collision avoidance in database replication systems
US20130110781A1 (en) Server replication and transaction commitment
US8626722B2 (en) Consolidating session information for a cluster of sessions in a coupled session environment
US20180165343A1 (en) Quorum-based replication of data records
CN115858236A (zh) 一种数据备份方法和数据库集群
CN114461438A (zh) 非对称中心模式的分布式数据库容灾系统及方法
CN109783578B (zh) 数据读取方法、装置、电子设备以及存储介质
CN113268545B (zh) 一种增量合并与全量相结合的集群节点间键值数据异步复制方法
CN110377664B (zh) 数据同步方法、装置、服务器及存储介质
CN108763312A (zh) 一种基于负载的从数据节点筛选方法
CN115048061B (zh) 基于Raft的冷数据存储方法
AU2019371362A1 (en) Methods, devices and systems for non-disruptive upgrades to a distributed coordination engine in a distributed computing environment
CN113535430B (zh) 应用数据读写分离方法、装置、计算机设备和存储介质
CN115202925A (zh) 基于rdma的支持细粒度容错的共识方法及系统
CN112131318B (zh) 一种数据库集群中预写日志记录排序系统
CN117640652A (zh) 领导者选举方法、装置及共识方法、装置
CN116932075A (zh) 服务器集群重启方法、分布式集群系统、设备和存储介质
CN115421972A (zh) 一种分布式数据库故障恢复的方法与系统
CN115421971A (zh) Etcd灾备故障恢复的方法及应用
CN118672993A (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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Room ABCD, 17th floor, building D, Paradise Software Park, No.3 xidoumen Road, Xihu District, Hangzhou City, Zhejiang Province, 310012

Patentee after: Zhejiang Bangsheng Technology Co.,Ltd.

Address before: Room ABCD, 17th floor, building D, Paradise Software Park, No.3 xidoumen Road, Xihu District, Hangzhou City, Zhejiang Province, 310012

Patentee before: ZHEJIANG BANGSUN TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20221102

Address after: 407-9, Phase II, Qianhai Shimao Financial Center, No. 3040 Xinghai Avenue, Nanshan Street, Qianhai Shenzhen Hong Kong Cooperation Zone, Shenzhen, Guangdong 518000

Patentee after: Shenzhen Bangsheng real time Intelligent Technology Co.,Ltd.

Patentee after: Zhejiang Bangsheng Technology Co.,Ltd.

Address before: Room ABCD, 17th floor, building D, Paradise Software Park, No.3 xidoumen Road, Xihu District, Hangzhou City, Zhejiang Province, 310012

Patentee before: Zhejiang Bangsheng Technology Co.,Ltd.