CN111988359B - 基于消息队列的数据分片同步方法及系统 - Google Patents

基于消息队列的数据分片同步方法及系统 Download PDF

Info

Publication number
CN111988359B
CN111988359B CN202010682331.3A CN202010682331A CN111988359B CN 111988359 B CN111988359 B CN 111988359B CN 202010682331 A CN202010682331 A CN 202010682331A CN 111988359 B CN111988359 B CN 111988359B
Authority
CN
China
Prior art keywords
data
node
message
synchronization
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.)
Active
Application number
CN202010682331.3A
Other languages
English (en)
Other versions
CN111988359A (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.)
Zhongke Wuyuan Technology Hangzhou Co ltd
Institute Of Digital Economy Industry Institute Of Computing Technology Chinese Academy Of Sciences
Original Assignee
Zhongke Wuyuan Technology Hangzhou Co ltd
Institute Of Digital Economy Industry Institute Of Computing Technology Chinese Academy Of Sciences
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 Zhongke Wuyuan Technology Hangzhou Co ltd, Institute Of Digital Economy Industry Institute Of Computing Technology Chinese Academy Of Sciences filed Critical Zhongke Wuyuan Technology Hangzhou Co ltd
Priority to CN202010682331.3A priority Critical patent/CN111988359B/zh
Publication of CN111988359A publication Critical patent/CN111988359A/zh
Application granted granted Critical
Publication of CN111988359B publication Critical patent/CN111988359B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明涉及一种基于消息队列的数据分片同步方法及系统。本发明的目的是提供一种基于消息队列的数据分片同步方法及系统,以解决在数据同步过程中,数据节点失效和数据节点作恶所带来的数据不一致的问题。本发明的技术方案是:S1、管理节点获取各数据节点发送的当前数据节点已消费消息队列的消息序号M1;S2、管理节点将各数据节点已消费消息队列的消息序号M1中最大的消息序号作为选定的消息序号N;S3、数据节点在N>M1时,继续消费消息队列,直到本地消费的消息队列消息序号为N后停止消费;S4、管理节点获取各数据节点发送的当前数据节点已消费消息队列的消息序号M2和当前数据节点持有的每个数据分片的HASH值。本发明适用于数据存储领域。

Description

基于消息队列的数据分片同步方法及系统
技术领域
本发明涉及一种基于消息队列的数据分片同步方法及系统。适用于数据存储领域。
背景技术
数据节点组成一个分布式数据存储系统(见图1),为了增加系统的可用性,数据存储在数据节点中的数据分片,数据分片在系统中冗余存储。对于每一个编号相同的数据分片,在系统中会有多个副本,每一个数据分片副本其中所保存的数据应完全相同。
当有数据节点新加入或者退出集群时,数据节点中的数据分片要进行同步,有新节点加入时,重新分配的目的是使现有的数据分片在各个节点中更均匀地分布;有节点退出时,重新分配的目的是使集群中的数据分片保持足够的副本数。
然而,现有技术仅考虑了负载均衡及灾备等方面的需求,当系统中存在节点失效或是节点作恶时,会带来数据不一致的问题,面对这一问题,现有方法均会低效甚至失效。
发明内容
本发明要解决的技术问题是:针对上述存在的问题,提供一种基于消息队列的数据分片同步方法及系统,以解决在数据同步过程中,数据节点失效和数据节点作恶所带来的数据不一致的问题。
本发明所采用的技术方案是:一种基于消息队列的数据分片同步方法,其特征在于:
S1、管理节点获取各数据节点发送的当前数据节点已消费消息队列的消息序号M1i,i对应系统中各数据节点的身份编号;
S2、管理节点将各数据节点已消费消息队列的消息序号M1i中最大的消息序号作为选定的消息序号N;
S3、数据节点在N>M1i时,继续消费消息队列,直到本地消费的消息队列消息序号为N后停止消费;
S4、管理节点获取各数据节点发送的当前数据节点已消费消息队列的消息序号M2i和当前数据节点持有的每个数据分片的HASH值;
S5、管理节点判断各数据节点的已消费消息队列消息序号M2i与选定的消息序号N是否相等,若相等,则记录相应数据节点为正常数据节点;
S6、管理节点根据正常数据节点上报的数据分片HASH值,按简单多数原则确定每一个数据分片X的HASH值HASH_X;
S7、管理节点判断各数据节点持有的数据分片X的HASH值是否与HASH_X一致,若一致则判定相应数据节点具备作为数据分片X的同步源节点的资格,并在具备资格的数据节点中确定数据分片X的唯一的同步源节点;
S8、管理节点向数据节点发送的指令,指令中包含:数据分片同步源节点的节点名、数据分片同步源节点的数据分片HASH值和数据分片在数据节点中的新分布信息;
S9、数据节点根据指令中数据分片同步源节点的数据分片HASH值和数据分片在数据节点中的新分布信息确定需要同步的数据分片,根据指令中数据分片同步源节点的节点名向相应同步源节点请求并接收需要同步的数据分片。
S10、数据节点在接收同步源节点返回的数据分片之后,计算接收到的数据分片HASH值,如该HASH值与指令中相应数据分片同步源节点的数据分片HASH值一致,则同步成功;如不一致,则向其余数据节点请求该数据分片。
S11、管理节点获取各数据节点发送的当前数据节点持有的所有数据分片编号和当前数据节点持有的所有数据分片的HASH值,并将其与数据分片同步源节点的数据分片HASH值和数据分片在数据节点中的新分布信息比较,若不一致,则同步失败,向数据节点发送REVERT指令;反之,则同步成功,向数据节点发送START指令;
S12、数据节点如收到REVERT指令,则删除所有新同步的数据分片,重新回到数据分片同步之前的状态,重新开始消费消息队列;数据节点如收到START指令,则删除所有旧的多余的数据分片,重新开始消费消息队列。
所述在具备资格的数据节点中确定数据分片X的唯一的同步源节点,包括:
使用负载均衡算法,为每个数据分片X选择唯一的同步源节点,使得同步源节点在现有节点中尽可能平均分布,同时在保证同步源节点不移动的情况下,重新对集群中的数据分片进行重新分配。
所述数据节点根据指令中数据分片同步源节点的数据分片HASH值和数据分片在数据节点中的新分布信息确定需要同步的数据分片,包括:
数据节点查看指令中数据分片同步源节点的数据分片HASH值和数据分片在数据节点中的新分布信息,如根据指令,该数据节点不持有新分布之下的数据分片,或虽然持有该数据分片但持有的数据分片的HASH值与指令中的不一致,则需要从同步源节点同步数据分片。
所述数据分片的HASH值仅与该数据分片内存储的数据有关。
一种新数据节点加入时的数据分片同步方法,其特征在于:
管理节点获取新加入的数据节点发送的PING消息,验证PING消息的合法性,并在确认合法后进入等待状态,等待状态持续一定时间;
在等待状态下管理节点接收来自其他新加入的数据节点发送的PING消息;
管理节点的等待状态结束后,根据所述的同步方法进行同步。
一种数据节点退出时的数据分片同步方法,其特征在于:
管理节点如在一定时间内未收到集群中数据节点发送的PING消息,则视该数据节点退出集群;
管理节点进入等待状态,等待状态持续一定时间;
管理节点在等待状态下未收到该数据节点发送的PING消息,则根据所述的同步方法进行同步。
一种基于消息队列的数据分片同步系统,其特征在于:具有写入节点、消息队列、管理节点和若干数据节点,其中:
写入节点,用于把要存储的数据写入消息队列;
数据节点,用于监听消息队列中的数据写入消息,按照预先制订的数据分片规则,把数据写入到对应的数据分片之中;
管理节点,用于在集群需要进行数据分片同步时,通过消息队列发送指令消息,协调整个集群中的数据节点根据所述的同步方法进行数据分片的同步。
本发明的有益效果是:本发明在数据同步时采用消息队列来保证消息的有序性。本发明考虑了数据分片同步过程中可能出现的拜占庭将军问题,在出现失效节点或作恶节点的情况下也能保证数据同步后的数据分片的完整性和一致性。
附图说明
图1为现有技术的系统框图。
图2为实施例的系统框图。
具体实施方式
如图2所示,本实施例为一种基于消息队列的数据分片同步系统,具有写入节点、消息队列、管理节点和若干数据节点,其中写入节点把要存储的数据写入消息队列;数据节点监听消息队列中的数据写入消息,按照预先制订的数据分片规则,把数据写入到对应的数据分片之中;管理节点在集群需要进行数据分片同步时,通过消息队列发送指令消息,协调整个集群中的数据节点进行数据分片的同步。
本例中该同步系统在有新的数据节点加入集群时,数据分片同步方法如下:
S0-1、新加入的数据节点向管理节点发送PING消息。
S0-2、管理节点收到PING消息之后,确认PING消息的合法性,在确认PING消息合法之后,管理节点进入RUNNING_WAIT状态,此状态将持续RUNNING_WAIT_T时间。
在RUNNING_WAIT状态下,管理节点可以接收来自其他新加入的数据节点的PING消息,以确保管理节点能够收集到所有新加入数据节点的信息。
S0-3、RUNNING_WAIT_T时间之后,管理节点向所有的数据节点发送STOP指令,管理节点进入STOP状态,在进入STOP状态之后,管理节点不再接收新的数据节点的PING指令,转而准备接收数据节点发送的SHARD_HASH消息。
S0-4、旧的数据节点收到STOP指令之后,停止消费消息队列中的信息,并记录当前已消费的消息队列的消息序号M1i,i对应系统中各数据节点的唯一身份编号,随后每个数据节点向管理节点发送SHARD_HASH消息。
SHARD_HASH消息包含:1.当前数据节点已消费消息队列的消息序号M1i;2.当前数据节点持有的每个数据分片的HASH值。
本例中数据分片的HASH值仅与该数据分片内所存储的数据有关,与数据分片编号和所在数据节点无关;如果两个数据分片内的所存储的数据相同,则数据分片的HASH相同,如果两个数据分片内所存储的数据不同,则数据分片的HASH不同。
本实施例中新加入的数据节点不向管理节点发送SHARD_HASH消息。
S1、管理节点获取各个旧的数据节点发送的SHARD_HASH消息,并把接收到的所有SHARD_HASH消息放入一个消息池中;
S2、从收到的第一个SHARD_HASH消息开始,启动计时器,等待STOP_WAIT时间之后,或者接收到所有数据节点(新加入的数据节点除外)的SHARD_HASH消息之后,管理节点根据SHARD_HASH消息池中所有SHARD_HASH消息,选择合适的消息队列的消息序号N。
由于每个数据节点消费消息队列的速度不一致,会有消息队列的消息序号不一致的现象。管理节点选择各数据节点已消费消息队列的消息序号M1i中最大的消息序号作为选定的消息序号N。
管理节点向所有数据节点发送包含这一选定消息序号N的OFFSET指令。管理节点进入TO_RESHARD状态,清空SHARD_HASH消息池,转而准备接收数据节点发送的SHARD_HASH_CONFIRM消息。
S3、数据节点收到管理节点发送的OFFSET指令之后,判断消息序号N是否大于本地记录的当前已消费的消息队列的消息序号M1i
如果N>M1i,则继续消费消息队列,直到本地消费的消息队列消息序号为N之后,停止消费消息队列。
停止消费消息队列后,数据节点向管理节点发送SHARD_HASH_CONFIRM消息,消息中包含:1.当前数据节点已消费消息队列的消息序号M2i,i对应系统中各数据节点的唯一身份编号;2.当前数据节点持有的每个数据分片的HASH值。
S4、管理节点获取各数据节点发送的SHARD_HASH_CONFIRM消息。
S5、管理节点把接收到的所有SHARD_HASH_CONFIRM消息放入一个消息池中。
从收到的第一个SHARD_HASH_CONFIRM消息开始,启动计时器,等待TO_RESHARD_WAIT时间之后,或者接收到所有数据节点(新加入的数据节点除外)的SHARD_HASH_CONFIRM消息之后,管理节点遍历SHARD_HASH_CONFIRM消息池中的所有SHARD_HASH_CONFIRM消息,判断SHARD_HASH_CONFIRM消息中的当前数据节点已消费消息队列的消息序号M2i与选定的消息序号N是否相等。
如果不相等,则舍弃这条SHARD_HASH_CONFIRM消息;如果相等,则记录这个数据节点为正常数据节点。
S6、从剩余的SHARD_HASH_CONFIRM消息,根据正常数据节点上报的数据分片HASH值,按照简单多数原则,确定每一个数据分片X的HASH值HASH_X。
S7、管理节点遍历每一个正常的数据节点上报的SHARD_HASH_CONFIRM消息,查看其中的数据分片HASH值。
如果该节点持有的数据分片X的HASH值与HASH_X一致,则判定该数据节点可以作为数据分片X的同步源节点。
使用通用的负载均衡算法,为每个数据分片X选择唯一的同步源节点,使得同步源节点在现有节点中尽可能平均分布,同时在保证同步源节点不移动的情况下,重新对集群中的数据分片进行重新分配。
S8、管理节点向所有数据节点发送RESHARD指令,RESHARD指令中包含:1.数据分片同步源节点的节点名;2.数据分片同步源节点的数据分片HASH值;3.数据分片在数据节点中的新分布信息。
发送RESHARD指令后,管理节点进入RESHARDING状态,等待接收SHARD_HASH_COMPLETE消息。
S9、数据节点查看收到的RESHARD指令中的数据分片在数据节点中的新分布信息和数据分片的HASH值,如果根据RESHARD指令,该数据节点不持有新分布之下的数据分片,或者虽然持有该数据分片但是持有的数据分片的HASH值与RESHARD指令中的不一致,则需要从同步源同步数据分片。
确定需要同步的数据分片之后,数据节点根据RESHARD指令,选择相应的数据分片同步源节点,向其发送同步请求并接收需要同步的数据分片。
S10、接收到同步源的所返回的数据分片之后,该数据节点需要再次计算收到的数据分片HASH值,如计算得到的HASH值与RESHARD指令中一致,则同步成功;如果HASH值不一致,则向其他的所有数据节点请求该数据分片。同步成功后,部署新的数据分片。
完成所有数据分片的同步之后,各数据节点向管理节点发送SHARD_HASH_COMPLETE消息。
SHARD_HASH_COMPLETE消息包含:1.该数据节点持有的所有数据分片编号;2.该数据节点持有的所有数据分片的HASH值。
S11、管理节点把接收到的所有SHARD_HASH_COMPLETE消息放入一个消息池中。
从收到的第一个SHARD_HASH_COMPLETE消息开始,启动计时器,等待RESHARDING_WAIT时间之后,或者接收到所有数据节点(新加入的数据节点除外)的SHARD_HASH_COMPLETE消息之后,管理节点遍历SHARD_HASH_COMPLETE消息池中的所有SHARD_HASH_COMPLETE消息,根据SHARD_HASH_COMPLETE中数据节点的数据分片同步情况,判断数据分片同步是否已经完成。
如果数据分片的分布情况或者HASH和RESHARD命令不符,则同步失败,管理节点记录出问题的数据节点,并向数据节点发送REVERT指令,回到数据分片同步之前的状态。如果数据分片的分布情况或者HASH和RESHARD命令中的描述一致,则同步成功,向数据节点发送START指令,管理节点重新回到RUNNING状态。
S12、数据节点如果收到REVERT指令,则表明同步失败,则删除所有新同步的数据分片,重新回到数据分片同步之前的状态,重新开始消费消息队列。数据节点如果收到START指令,则表明同步成功,则删除所有旧的多余的数据分片,重新开始消费消息队列。
本实施例中该同步系统在有新数据节点退出集群时,数据分片同步方法如下:
S0-1、在一定时间内,如果管理节点没有收到集群中数据节点的PING消息,管理节点视该节点退出集群。
S0-2、如果管理节点判定剩余的数据节点能够完整分配数据分配的所有副本,则开始进行数据分片同步,管理节点进入RUNNING_WAIT状态,此状态将持续RUNNING_WAIT_T时间。
S0-3、在RUNNING_WAIT状态下,管理节点可以接收来自该数据节点的PING指令,如果在RUNNING_WAIT_T时间时间内收到了该节点的PING消息,则管理节点回到RUNNING状态,不进行数据同步;反之,则继续以下数据同步步骤。
S0-4、RUNNING_WAIT_T时间之后,管理节点向所有的数据节点发送STOP指令,管理节点进入STOP状态,在进入STOP状态之后,管理节点不再接收新的数据节点的PING指令,转而准备接收数据节点发送的SHARD_HASH消息。
S0-5、数据节点收到STOP指令之后,停止消费消息队列中的信息,并记录当前已消费的消息队列的消息序号M1i,随后每个数据节点向管理节点发送SHARD_HASH消息。
SHARD_HASH消息包含:1.当前数据节点已消费消息队列的消息序号M1i;2.当前数据节点持有的每个数据分片的HASH值。
本例中数据分片的HASH值仅与该数据分片内所存储的数据有关,与数据分片编号和所在数据节点无关;如果两个数据分片内的所存储的数据相同,则数据分片的HASH相同,如果两个数据分片内所存储的数据不同,则数据分片的HASH不同。
S1、管理节点获取各个数据节点发送的SHARD_HASH消息,并把接收到的所有SHARD_HASH消息放入一个消息池中;
S2、从收到的第一个SHARD_HASH消息开始,启动计时器,等待STOP_WAIT时间之后,或者接收到所有数据节点的SHARD_HASH消息之后,管理节点根据SHARD_HASH消息池中所有SHARD_HASH消息,选择合适的消息队列的消息序号N。
由于每个数据节点消费消息队列的速度不一致,会有消息队列的消息序号不一致的现象。管理节点选择各数据节点已消费消息队列的消息序号M1i中最大的消息序号作为选定的消息序号N。
管理节点向所有数据节点发送包含这一选定消息序号N的OFFSET指令。管理节点进入TO_RESHARD状态,清空SHARD_HASH消息池,转而准备接收数据节点发送的SHARD_HASH_CONFIRM消息。
S3、数据节点收到管理节点发送的OFFSET指令之后,判断消息序号N是否大于本地记录的当前已消费的消息队列的消息序号M1i
如果N>M1i,则继续消费消息队列,直到本地消费的消息队列消息序号为N之后,停止消费消息队列。
停止消费消息队列后,数据节点向管理节点发送SHARD_HASH_CONFIRM消息,消息中包含:1.当前数据节点已消费消息队列的消息序号M2i;2.当前数据节点持有的每个数据分片的HASH值。
S4、管理节点获取各数据节点发送的SHARD_HASH_CONFIRM消息。
S5、管理节点把接收到的所有SHARD_HASH_CONFIRM消息放入一个消息池中。
从收到的第一个SHARD_HASH_CONFIRM消息开始,启动计时器,等待TO_RESHARD_WAIT时间之后,或者接收到所有数据节点的SHARD_HASH_CONFIRM消息之后,管理节点遍历SHARD_HASH_CONFIRM消息池中的所有SHARD_HASH_CONFIRM消息,判断SHARD_HASH_CONFIRM消息中的当前数据节点已消费消息队列的消息序号M2i与选定的消息序号N是否相等。
如果不相等,则舍弃这条SHARD_HASH_CONFIRM消息;如果相等,则记录这个数据节点为正常数据节点。
S6、从剩余的SHARD_HASH_CONFIRM消息,根据正常数据节点上报的数据分片HASH值,按照简单多数原则,确定每一个数据分片X的HASH值HASH_X。
S7、管理节点遍历每一个正常数据节点上报的SHARD_HASH_CONFIRM消息,查看其中的数据分片HASH值。
如果该节点持有的数据分片X的HASH值与HASH_X一致,则判定该数据节点可以作为数据分片X的同步源节点。
使用通用的负载均衡算法,为每个数据分片X选择唯一的同步源节点,使得同步源节点在现有节点中尽可能平均分布,同时在保证同步源节点不移动的情况下,重新对集群中的数据分片进行重新分配。
S8、管理节点向所有数据节点发送RESHARD指令,RESHARD指令中包含:1.数据分片同步源节点的节点名;2.数据分片同步源节点的数据分片HASH值;3.数据分片在数据节点中的新分布信息。
发送RESHARD指令后,管理节点进入RESHARDING状态,等待接收SHARD_HASH_COMPLETE消息。
S9、数据节点查看收到的RESHARD指令中的数据分片在数据节点中的新分布信息和数据分片的HASH值,如果根据RESHARD指令,该数据节点不持有新分布之下的数据分片,或者虽然持有该数据分片但是持有的数据分片的HASH值与RESHARD指令中的不一致,则需要从同步源同步数据分片。
确定需要同步的数据分片之后,数据节点根据RESHARD指令中的数据分片同步源节点的节点名开始向相应同步源节点请求并接收需要同步的数据分片。
S10、接收到同步源的所返回的数据分片之后,该数据节点需要再次计算收到的数据分片HASH值,如计算得到的HASH值与RESHARD指令中一致,则同步成功;如果HASH值不一致,则向其他的所有数据节点请求该数据分片。同步成功后,部署新的数据分片。
完成所有数据分片的同步之后,各数据节点向管理节点发送SHARD_HASH_COMPLETE消息。
SHARD_HASH_COMPLETE消息包含:1.该数据节点持有的所有数据分片编号;2.该数据节点持有的所有数据分片的HASH值。
S11、管理节点把接收到的所有SHARD_HASH_COMPLETE消息放入一个消息池中。
从收到的第一个SHARD_HASH_COMPLETE消息开始,启动计时器,等待RESHARDING_WAIT时间之后,或者接收到所有数据节点(新加入的数据节点除外)的SHARD_HASH_COMPLETE消息之后,管理节点遍历SHARD_HASH_COMPLETE消息池中的所有SHARD_HASH_COMPLETE消息,根据SHARD_HASH_COMPLETE中数据节点的数据分片同步情况,判断数据分片同步是否已经完成。
如果数据分片的分布情况或者HASH和RESHARD命令不符,则同步失败,管理节点记录出问题的数据节点,并向数据节点发送REVERT指令,回到数据分片同步之前的状态。如果数据分片的分布情况或者HASH和RESHARD命令中的描述一致,则同步成功,向数据节点发送START指令,管理节点重新回到RUNNING状态。
S12、数据节点如果收到REVERT指令,则表明同步失败,则删除所有新同步的数据分片,重新回到数据分片同步之前的状态,重新开始消费消息队列。数据节点如果收到START指令,则表明同步成功,则删除所有旧的多余的数据分片,重新开始消费消息队列。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (10)

1.一种基于消息队列的数据分片同步方法,其特征在于:
S1、管理节点获取各数据节点发送的当前数据节点已消费消息队列的消息序号M1i,i对应系统中各数据节点的身份编号;
S2、管理节点将各数据节点已消费消息队列的消息序号M1i中最大的消息序号作为选定的消息序号N;
S3、数据节点在N>M1i时,继续消费消息队列,直到本地消费的消息队列消息序号为N后停止消费;
S4、管理节点获取各数据节点发送的当前数据节点已消费消息队列的消息序号M2i和当前数据节点持有的每个数据分片的HASH值;
S5、管理节点判断各数据节点的已消费消息队列消息序号M2i与选定的消息序号N是否相等,若相等,则记录相应数据节点为正常数据节点;
S6、管理节点根据正常数据节点上报的数据分片HASH值,按简单多数原则确定每一个数据分片X的HASH值HASH_X;
S7、管理节点判断各数据节点持有的数据分片X的HASH值是否与HASH_X一致,若一致则判定相应数据节点具备作为数据分片X的同步源节点的资格,并在具备资格的数据节点中确定数据分片X的唯一的同步源节点;
S8、管理节点向数据节点发送的指令,指令中包含:数据分片同步源节点的节点名、数据分片同步源节点的数据分片HASH值和数据分片在数据节点中的新分布信息;
S9、数据节点根据指令中数据分片同步源节点的数据分片HASH值和数据分片在数据节点中的新分布信息确定需要同步的数据分片,根据指令中数据分片同步源节点的节点名向相应同步源节点请求并接收需要同步的数据分片。
2.根据权利要求1所述的基于消息队列的数据分片同步方法,其特征在于:
S10、数据节点在接收同步源节点返回的数据分片之后,计算接收到的数据分片HASH值,如该HASH值与指令中相应数据分片同步源节点的数据分片HASH值一致,则同步成功;如不一致,则向其余数据节点请求该数据分片。
3.根据权利要求2所述的基于消息队列的数据分片同步方法,其特征在于:
S11、管理节点获取各数据节点发送的当前数据节点持有的所有数据分片编号和当前数据节点持有的所有数据分片的HASH值,并将其与数据分片同步源节点的数据分片HASH值和数据分片在数据节点中的新分布信息比较,若一致,则同步失败,向数据节点发送REVERT指令;反之,则同步成功,向数据节点发送START指令;
S12、数据节点如收到REVERT指令,则删除所有新同步的数据分片,重新回到数据分片同步之前的状态,重新开始消费消息队列;数据节点如收到START指令,则删除所有旧的多余的数据分片,重新开始消费消息队列。
4.根据权利要求1所述的基于消息队列的数据分片同步方法,其特征在于:所述在具备资格的数据节点中确定数据分片X的唯一的同步源节点,包括:
使用负载均衡算法,为每个数据分片X选择唯一的同步源节点。
5.根据权利要求1所述的基于消息队列的数据分片同步方法,其特征在于:所述数据节点根据指令中数据分片同步源节点的数据分片HASH值和数据分片在数据节点中的新分布信息确定需要同步的数据分片,包括:
数据节点查看指令中数据分片同步源节点的数据分片HASH值和数据分片在数据节点中的新分布信息,如根据指令,该数据节点不持有新分布之下的数据分片,或虽然持有该数据分片但持有的数据分片的HASH值与指令中的不一致,则需要从同步源节点同步数据分片。
6.根据权利要求1所述的基于消息队列的数据分片同步方法,其特征在于:所述数据分片的HASH值仅与该数据分片内存储的数据有关。
7.一种新数据节点加入时的数据分片同步方法,其特征在于:
管理节点获取新加入的数据节点发送的PING消息,验证PING消息的合法性,并在确认合法后进入等待状态,等待状态持续一定时间;
在等待状态下管理节点接收来自其他新加入的数据节点发送的PING消息;
管理节点的等待状态结束后,根据权利要求1~6任意一项所述的同步方法进行同步。
8.一种数据节点退出时的数据分片同步方法,其特征在于:
管理节点如在一定时间内未收到集群中数据节点发送的PING消息,则视该数据节点退出集群;
管理节点进入等待状态,等待状态持续一定时间;
管理节点在等待状态下未收到该数据节点发送的PING消息,则根据权利要求1~6任意一项所述的同步方法进行同步。
9.一种基于消息队列的数据分片同步系统,其特征在于:具有写入节点、消息队列、管理节点和若干数据节点,其中:
写入节点,用于把要存储的数据写入消息队列;
数据节点,用于监听消息队列中的数据写入消息,按照预先制订的数据分片规则,把数据写入到对应的数据分片之中;
管理节点,用于在集群需要进行数据分片同步时,通过消息队列发送指令消息,协调整个集群中的数据节点根据权利要求1~6任意一项所述的同步方法进行数据分片的同步。
10.一种基于消息队列的数据分片同步系统,其特征在于:具有写入节点、消息队列、管理节点和若干数据节点,其中:
写入节点,用于把要存储的数据写入消息队列;
数据节点,用于监听消息队列中的数据写入消息,按照预先制订的数据分片规则,把数据写入到对应的数据分片之中;
管理节点,用于在集群需要进行数据分片同步时,通过消息队列发送指令消息,协调整个集群中的数据节点根据权利要求7或8所述的同步方法进行数据分片的同步。
CN202010682331.3A 2020-07-15 2020-07-15 基于消息队列的数据分片同步方法及系统 Active CN111988359B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010682331.3A CN111988359B (zh) 2020-07-15 2020-07-15 基于消息队列的数据分片同步方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010682331.3A CN111988359B (zh) 2020-07-15 2020-07-15 基于消息队列的数据分片同步方法及系统

Publications (2)

Publication Number Publication Date
CN111988359A CN111988359A (zh) 2020-11-24
CN111988359B true CN111988359B (zh) 2023-08-15

Family

ID=73439502

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010682331.3A Active CN111988359B (zh) 2020-07-15 2020-07-15 基于消息队列的数据分片同步方法及系统

Country Status (1)

Country Link
CN (1) CN111988359B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012121316A1 (ja) * 2011-03-08 2012-09-13 日本電気株式会社 分散ストレージシステムおよび方法
WO2017114176A1 (zh) * 2015-12-30 2017-07-06 阿里巴巴集团控股有限公司 一种分布式环境协调消费队列方法和装置
CN107092533A (zh) * 2017-03-29 2017-08-25 弘成科技发展有限公司 基于ActiveMQ+Redis的同步消息队列
CN108572976A (zh) * 2017-03-10 2018-09-25 华为软件技术有限公司 一种分布式数据库中数据恢复方法、相关设备和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012121316A1 (ja) * 2011-03-08 2012-09-13 日本電気株式会社 分散ストレージシステムおよび方法
WO2017114176A1 (zh) * 2015-12-30 2017-07-06 阿里巴巴集团控股有限公司 一种分布式环境协调消费队列方法和装置
CN108572976A (zh) * 2017-03-10 2018-09-25 华为软件技术有限公司 一种分布式数据库中数据恢复方法、相关设备和系统
CN107092533A (zh) * 2017-03-29 2017-08-25 弘成科技发展有限公司 基于ActiveMQ+Redis的同步消息队列

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
分布式文件系统中元数据管理优化;陈友旭;《中国博士学位论文电子期刊网》;全文 *

Also Published As

Publication number Publication date
CN111988359A (zh) 2020-11-24

Similar Documents

Publication Publication Date Title
ES2703901T3 (es) Sistema de archivo distribuido mediante nodos de consenso
CN108600353B (zh) 一种区块链节点的并行块同步方法
EP2434729A2 (en) Method for providing access to data items from a distributed storage system
WO2019119212A1 (zh) 识别osd亚健康的方法、装置和数据存储系统
CN107919977B (zh) 一种基于Paxos协议的在线扩容、在线缩容的方法和装置
US7865763B2 (en) Data replication method
CN103294701B (zh) 一种分布式文件系统以及数据处理的方法
CN108804465B (zh) 一种分布式缓存数据库数据迁移的方法及系统
CA2938768A1 (en) Geographically-distributed file system using coordinated namespace replication
CN114466027B (zh) 一种云原生数据库服务提供方法、系统、设备及介质
CN115794499B (zh) 一种用于分布式块存储集群间双活复制数据的方法和系统
US10445295B1 (en) Task-based framework for synchronization of event handling between nodes in an active/active data storage system
CN111726388A (zh) 一种跨集群高可用的实现方法、装置、系统及设备
CN113810216B (zh) 一种集群的故障切换方法、装置及电子设备
JP3808874B2 (ja) 分散システム及び多重化制御方法
CN116107516B (zh) 数据写入方法、装置、固态硬盘、电子设备及存储介质
CN114124650A (zh) 一种sptn网络控制器主从部署方法
CN111240901A (zh) 分布式块存储系统的节点动态扩展系统、方法及设备
CN111988359B (zh) 基于消息队列的数据分片同步方法及系统
CN106855869A (zh) 一种实现数据库高可用的方法、装置和系统
CN110912979B (zh) 一种解决多服务器资源同步冲突方法
WO2015196692A1 (zh) 一种云计算系统以及云计算系统的处理方法和装置
CN114390052B (zh) 一种基于vrrp协议实现etcd双节点高可用方法和装置
CN107045426B (zh) 一种多副本读取方法和系统
CN111400098B (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 12 / F, building 4, 108 Xiangyuan Road, Gongshu District, Hangzhou City, Zhejiang Province 310015

Applicant after: Institute of digital economy industry, Institute of computing technology, Chinese Academy of Sciences

Applicant after: Zhongke Wuyuan Technology (Hangzhou) Co.,Ltd.

Address before: Room 319, building 5, 17-1 Chuxin Road, Gongshu District, Hangzhou City, Zhejiang Province, 310015

Applicant before: Zhongke Wuyuan Technology (Hangzhou) Co.,Ltd.

Applicant before: Institute of digital economy industry, Institute of computing technology, Chinese Academy of Sciences

GR01 Patent grant
GR01 Patent grant