CN105260376A - 用于集群节点缩扩的方法、设备和*** - Google Patents
用于集群节点缩扩的方法、设备和*** Download PDFInfo
- Publication number
- CN105260376A CN105260376A CN201510505399.3A CN201510505399A CN105260376A CN 105260376 A CN105260376 A CN 105260376A CN 201510505399 A CN201510505399 A CN 201510505399A CN 105260376 A CN105260376 A CN 105260376A
- Authority
- CN
- China
- Prior art keywords
- section point
- node
- cluster
- thread
- client
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种用于集群节点缩扩的方法、设备和***。该方法包括从接收多个第一节点并行生成的redis数据库快照;接收客户端在redis数据库快照的发送之后进行的写操作;生成与多个第二节点分别对应的附加文件,并将写操作分别记录在附加文件中;分析redis数据库快照并将redis数据库快照重新组合到与多个第二节点分别对应的数据库文件中;向多个第二节点分别发送与其对应的数据库文件和附加文件;以及指示配置客户端的配置管理***将第二节点集群的集群节点拓扑发送到客户端,以使得客户端能够根据第二节点集群的集群节点拓扑来进行读写操作。该方法、设备和***解决了现有技术中存在的数据迁移耗时且难以在线进行的问题。
Description
技术领域
本发明涉及节点集群领域,具体涉及用于集群节点缩扩的方法、设备和***。
背景技术
Redis(远程字典服务,RemoteDictionaryService)是一种全内存的Key/Value(键值对)缓存/存储***。由于受单个节点所在服务器内存容量限制,在大规模数据缓存/存储场景下,一般由多个节点组成集群,每个节点只负责存储部分数据,称为sharding。客户端根据Key(键)和节点的映射关系,将对特定Key的请求发送到特定节点。
Key和节点的映射关系,目前常用的方式是由客户端路由算法来实现。将节点按顺序编号,以Key作为参数,通过一个Hash函数算出一个数值,然后根据节点的数量来取模(或者一致性Hash算法)以定位到一个节点。由于是通过算法来进行路由,算法本身也能保证路由的时间复杂度是O(1),而且并不需要在任何地方存储Key到节点的映射关系,因此被主要使用在有大量的、不断增长的Key/Value的存储场景。
但是客户端路由算法也存在着弊端。目标节点数量和编号一旦发生变化,key和节点的映射关系就会发生变化,客户端之前通过旧的映射关系写入到节点A的key/value数据,由于通过新的映射关系映射到节点B,可能会去节点B上读取而无法读取到。因此,在由于数据量增长而需要增加节点时,必须遍历所有key(通常直接调用redis的命令接口来执行遍历),在节点间迁移数据,以便反映最新的映射关系。这种通过增加节点来增大整体集群容量的方式被称为水平扩展。水平扩展造成的数据迁移通常会非常耗时并且很难在线进行。
为了避免节点变化造成的数据迁移。可以采取pre-sharding方案,即预先估计数据量及其增长速度,设定一个合适的足够多的节点数量。而且,为了避免占有过多的物理服务器,通常初期会在同一服务器上部署多个节点,随着数据量的增长,通过将节点迁移到新增加的物理服务器上,使得每个节点拥有更多的内存资源,从而使得整体集群的内存容量扩大。迁移节点到其他服务器,采取redis本身提供的主从复制实现即可实现。由于只是更改节点与物理机的映射关系,节点数量和编号并未发生变化,不需要在节点之间迁移数据。这种通过增大单节点的容量、节点数不发生变化的方式也称为垂直扩展。
垂直扩展需要预先规划数据容量和增长。评估合适的足够多的节点并不容易。节点数量的设立需要综合考虑内存消耗和数据增长,随着超出预计的数据增长,即使一个物理服务器部署一个节点,由于受制于物理服务器内存而无法继续扩展,不可避免需要水平扩展来解决整体集群的容量扩大。
而上面谈到的水平扩展造成的数据迁移需要遍历所有的key,按照新的映射关系,将数据迁移到新的节点上,这整个过程通常会非常耗时。而且也很难在线进行。
还存在离线的水平扩展方案,即:在扩展前先停止所有客户端的读写,迁移完成后,再允许客户端按照新的映射关系进行读写。这种离线的水平扩展避免了迁移程序和客户端程序同时进行读写而造成的数据冲突和不一致性,但是需要较长的禁止读写时间。然而业务需求却常常不允许长时间的禁止读写,因此需要一个能够进行在线水平扩展的方案。
发明内容
为解决上述问题,本发明实施例提供了一种集群节点缩扩的方法、设备和***。
根据本发明的一个方面,提供了一种用于集群节点缩扩的方法,包括:从第一节点集群的多个第一节点接收所述多个第一节点并行生成的redis数据库快照;从所述多个第一节点接收客户端在所述redis数据库快照的发送之后进行的写操作;生成与第二节点集群的多个第二节点分别对应的附加文件,并按照所建立的key到所述第二节点集群的映射关系,将所述写操作分别记录在所述附加文件中;按照所述所建立的key到所述第二节点集群的映射关系,分析所述redis数据库快照并将所述redis数据库快照重新组合到与所述第二节点集群的所述多个第二节点分别对应的数据库文件中;向所述多个第二节点分别发送与其对应的数据库文件和附加文件;以及指示配置所述客户端的配置管理***将所述第二节点集群的集群节点拓扑发送到所述客户端,以使得所述客户端可根据所述第二节点集群的集群节点拓扑来进行读写操作。
根据本发明的第二方面,提供了一种用于集群节点缩扩的设备,包括:接收单元,用于从第一节点集群的多个第一节点接收所述多个第一节点并行生成的redis数据库快照,以及从所述多个第一节点接收客户端在所述redis数据库快照的发送之后进行的写操作;附加文件生成单元,用于生成与第二节点集群的多个第二节点分别对应的附加文件,并按照所建立的key到所述第二节点集群的映射关系,将所述接收单元接收到的所述写操作分别记录在所述附加文件中;重组合单元,用于按照所述所建立的key到所述第二节点集群的映射关系,分析所述接收单元接收到的所述redis数据库快照并将所述redis数据库快照重新组合到与所述第二节点集群的所述多个第二节点分别对应的数据库文件中;发送单元,用于向所述多个第二节点分别发送与其对应的数据库文件和附加文件,以及用于指示配置所述客户端的配置管理***将所述第二节点集群的集群节点拓扑发送到所述客户端,以使得所述客户端能够根据所述第二节点集群的集群节点拓扑来进行读写操作。
根据本发明的第三方面,提供了一种用于集群节点缩扩的***,包括:客户端;包括多个第一节点的第一节点集群;包括多个第二节点的第二节点集群;上述用于集群节点缩扩的设备;以及用于配置所述客户端的配置管理***,所述配置管理***将所述第二节点集群的集群节点拓扑发送到所述客户端,以使得所述客户端可根据所述第二节点集群的集群节点拓扑来进行读写操作。
通过使用上述的方法、设备和***,解决了现有技术中存在的数据迁移耗时且难以在线进行的问题。
附图说明
通过下面结合附图对发明进行的详细描述,将使本发明的上述特征和优点更加明显,其中:
图1是示出根据本发明的实施例的集群节点缩扩***的示意图;
图2是示出根据本发明的实施例的集群节点缩扩方法的流程图;以及
图3是示出根据本发明的实施例的集群节点缩扩设备的示意框图。
具体实施方式
下面,参考附图详细说明本发明的优选实施方式。在附图中,虽然示于不同的附图中,但相同的附图标记用于表示相同的或相似的组件。为了清楚和简明,包含在这里的已知的功能和结构的详细描述将被省略,以避免使本发明的主题不清楚。
在通常的技术方案中,redis节点数据的整体迁移依靠的是redis主从复制功能。从节点初始化时,请求主节点将那一时刻的数据快照,打包成rdb(redisdb的二进制格式)发送给从节点,从节点加载rdb初始化自身内存。同时主节点记录了自那个快照时刻之后的所有写操作,并按写操作时间顺序依次发生到从节点。从节点在加载的快照数据基础上,依次执行主节点后续发送的所有写操作,从而达到主、从节点的数据最终一致性。
而本发明实施例所提供的方案在redis主从复制的支持下,提供一个称为redis桥的中间件,将原有的n节点集群A,通过复制和复制过程中按key和节点的新的映射关系,将数据迁移到m个节点的集群B。迁移过程中,集群A继续服务客户端的读写请求,等到B集群已经完整复制了数据并且追赶上了后续发生在集群A的增量写操作,B集群的复制延时已经非常小时,才让B集群服务于客户端的读写请求。具体地,在一些实施例中,根据业务需求允许的时间窗口,通过配置***将B集群新的节点数量和编号(集群节点拓扑)发送到客户端,同时禁止客户端写。在该时间窗口内,客户端仍然可以按照集群A节点拓扑进行只读请求。当A和B集群数据达到完全同步的时候,配置***通知客户端按照B集群节点拓扑进行读写请求。至此,数据迁移和节点数量变更完成。老的集群A节点资源即可释放。
本发明中的redis桥是实现了redis复制协议的中间件。redis桥进程启动后,作为从节点的角色连接到集群A上所有节点,请求复制。同时,它也作为主节点的角色允许B集群的所有节点连接并响应后者的复制请求。由于redis的主从复制是以节点(进程)为单位,因此本发明实施例中可以通过以连接为粒度实现redis的复制协议来实现上述多节点的从节点和主节点。
下面简要描述用于上述本发明的设计原理的***示意图。图1示出了根据本发明实施例的集群节点缩扩***的示意图。
如图1所示,该***包括应用程序客户端(简称客户端)、用于配置客户端的配置管理***、包括两个节点的集群A(在本文中也称为第一节点集群)、将要从集群A扩展到的包括三个节点的集群B(在本文中也称为第二节点集群)、以及redis桥(在本文中也称为用于集群节点缩扩的设备)。
需要注意的是,虽然图1中示出集群A中包含两个节点,集群B中包含三个节点,本发明实施例也可以应用于存在其他各种数目的节点的情况下。例如,在图1中,集群A中节点的数目小于集群B中节点的数目,以进行集群扩容。然而在一些实施例中,集群A中节点的数目可大于集群B中节点的数目,以实现集群缩容。因此,虽然在下面的描述中以集群扩容为示例来进行描述,本发明实施例的方法也可同等用于集群缩容的情况。
下面根据图1所示的***描述根据本发明实施例的集群节点缩扩方法。图2示出了根据本发明实施例的集群节点缩扩方法的流程图。
在图2的步骤210中,可以由redis桥从第一节点集群的多个第一节点接收该多个第一节点并行生成的redis数据库(rdb)快照。
在该步骤之前,可以在redis桥配置集群A和B集群的节点拓扑。
此外,redis桥还可针对集群A和集群B中的节点分别建立线程和连接。
具体地,B集群3个节点以主从关系中的从角色连接到redis桥,发起同步(sync)命令。redis桥为该3个节点的3个连接c1、c2、c3对应建立3个线程b1、b2、b3,并新建3个同步队列(SynchronousQueue)q1、q2、q3。其中,b1、b2、b3分别消费q1、q2、q3。在没有数据的时候,3个连接c1、c2、c3进入阻塞状态。
此外,redis桥还可新建1个线程t1,负责进行rdb转换。t1可包含一个计数同步器(CountdownLatch)L1。该计数同步器L1的初始值与集群A中节点的数目相同。在图1所示的示例中初始计数可取值为2。t1运行时阻塞在计数同步器L1,在L1变为0时继续执行。
redis桥还可针对集群A中的2个节点分别建立2个线程a1、a2。该2个线程包含对计数同步器L1的引用。redis桥分别建立到集群A的2个节点的连接,发起sync命令;
此时集群A的2个节点并行生成rdb快照发给redis桥。
在图2的步骤220中,redis桥从第一节点接收客户端在redis数据库快照的发送之后进行的写操作。
具体地,线程a1(或a2)接收rdb,并保存在本地文件***中。针对线程a1和a2(即,针对第一节点A1和A2)的文件名分别为a1.rdb、a2.rdb。按照rdb协议,结尾是FF+8字节的校验和。rdb接收完毕后,a1(或a2)将计数同步器L1递减1。
接下来,在图2的步骤230中,redis桥生成与第二节点集群的多个第二节点分别对应的附加文件,并按照所建立的key到第二节点集群的映射关系,将写操作分别记录在附加文件中。
在本发明的一些具体示例中,这可通过线程a1和a2来完成。在接收rdb之后,线程a1、a2继续接收发自集群A的写操作,并按照新建立的key到B集群节点的映射关系,将写操作以追加方式保存在对应的b1.aof、b2.aof、b3.aof文件。
然后,在图2的步骤240中,redis按照所建立的key到第二节点集群的映射关系,分析redis数据库快照并将redis数据库快照重新组合到与第二节点集群中的多个第二节点分别对应的数据库文件中。
在本发明的一些具体示例中,当L1减少到0时,表示集群A中所有节点的rdb快照(在本示例中数目为2)都被redis桥所接收到。此时线程t1继续运行,读取并解析两个rdb文件(例如,遍历key/value),按照新的key到B集群节点的映射关系,将key/value写入到3个新的rdb文件b1.rdb、b2.rdb、b3.rdb。与现有技术中直接调用redis的命令接口进行的遍历相比,此处可使用的遍历无需使用tcp(传输控制协议)协议栈来进行调用,而是直接对数据进行操作,速度更快,且效率更高。
在rdb快照重新组合之后,在图2的步骤250中,redis桥向第二节点分别发送与其对应的数据库文件和附加文件。
例如,在本发明的一些示例中,在线程t1写完3个rdb文件后,分别往q1、q2、q3发送文件完成信号,包含对应的rdb文件名。
线程b1、b2、b3收到来自q1、q2、q3的信号后,将对应的rdb文件以sendfile机制写入各自保持的与B集群节点的连接c1、c2、c3。
线程b1从文件头开始读取b1.aof,将所有的写操作依此发送到与B集群节点的连接c1,B集群对应节点据此执行写操作。直到线程b1读取到b1.aof的文件尾,记录当前的offset1。
线程b2、b3同上述操作所述地读取对应的b2.aof、b3.aof,将其发送到对应的B集群节点,并记录最后的offset2、offset3。
至此,在图2的步骤260中,由配置管理***将第二节点集群的集群节点拓扑(节点数目和编号等)发送到客户端,以使得客户端可根据第二节点集群的集群节点拓扑来进行读写操作。
具体地,在步骤250向第二节点集群中的集群节点(第二节点)分别发送与其对应的数据库文件和附加文件之后,redis桥可通过与配置管理***的通信链路(图1中未示出)通知配置管理***,以指示配置管理***进行上述集群节点拓扑发送。
根据本发明实施例的集群节点缩扩方法可在步骤260处结束。然而在一些情况下,在向集群B发送对应的数据库文件和附加文件期间,客户端可能执行了一些写操作,并根据本发明的实施例存储在相应.aof文件中的offset标记之后。因此,根据本发明的另一些实施例,提供了对这种情况的一些改进。
具体地,在配置管理***将B集群新的节点数量和编号(集群节点拓扑)发送到客户端时,可同时禁止客户端写。
然后线程b1从offset1开始读取b1.aof,直到文件尾,将所有的写操作依此发送到连接c1,B集群对应节点依此执行。线程b2、b3同理执行。
在线程b1、b2和b3的操作都结束之后,配置管理***可通知客户端按照B集群节点拓扑来进行读写操作,即,重新启动客户端的写操作。
由于各个.aof文件中在offset标记之后记录的写操作不会太多,因此上述附加操作不会带来延迟。这最小化了数据不一致的时间窗口,保证了数据最终一致性与业务写停顿影响的平衡
根据上述方法,可以在不修改redis存储结构和增加新的功能的前提下,利用一个实现redis的复制协议的中间件,通过复制过程中数据的拆分和重组,达到数据节点的增加(水平扩容)或减少(水平缩容)。
需要注意的是,虽然为了叙述的方便和易于读者理解在图2中使用不同的附图标记来标识各个步骤,但附图标记的大小并不表示执行相关步骤的严格顺序。例如,生成附加文件和记录写操作的步骤230可在分析redis数据库快照和重新组合redis数据库快照的步骤240之后执行,或与其同时执行。还例如,为第一节点集群和第二节点集群中的各个节点建立连接和线程的顺序可以按不同于本文所述的先后顺序进行等等。本发明不被这些顺序所限制。
在本发明的另一些实施例中,还提供了集群节点缩扩设备,例如图1中的redis桥。图3示出了该集群节点缩扩设备的简要结构框图。
如图3所示,该设备包括:接收单元310,用于从第一节点集群的多个第一节点接收该多个第一节点并行生成的redis数据库快照,以及从该多个第一节点接收客户端在redis数据库快照的发送之后进行的写操作;附加文件生成单元320,用于生成与第二节点集群的多个第二节点分别对应的附加文件,并按照所建立的key到该第二节点集群的映射关系,将接收单元310接收到的所述写操作分别记录在附加文件中;重组合单元330,用于按照所建立的key到第二节点集群的映射关系,分析接收单元310接收到的redis数据库快照并将redis数据库快照重新组合到与第二节点集群的该多个第二节点分别对应的数据库文件中;以及发送单元340,用于向该多个第二节点分别发送与其对应的数据库文件和附加文件,以及用于指示配置客户端的配置管理***将第二节点集群的集群节点拓扑发送到客户端,以使得客户端能够根据第二节点集群的集群节点拓扑来进行读写操作。
图3中的设备还可以包括写操作禁止单元350,用于在对客户端进行配置的配置管理***将第二节点集群的集群节点拓扑发送到客户端时,通过配置管理***禁止客户端进行写操作。此时,发送单元340还向多个第二节点分别发送附加文件中在向该多个第二节点分别发送与其对应的数据库文件和附加文件之后记录的客户端的写操作。
图3中的设备还可以包括:连接建立单元360,用于与第一节点集群的多个第一节点各自建立第一连接,且与第二节点集群的多个第二节点各自建立第二连接;以及线程建立单元370,用于为第一节点集群的多个第一节点各自建立第一线程,建立用于rdb转换的线程,以及为第二节点集群的多个第二节点各自建立第二线程。
在一些示例中,如上所述,用于rdb转换的线程可包括计数同步器。计数同步器的初始值等于第一节点集群中节点的数目,每次第一线程从第一节点集群中的节点接收到redis数据库快照,计数同步器递减一。当计数同步器等于零时,所述用于rdb转换的线程可分析redis数据库快照并将redis数据库快照重新组合到与第二节点集群的该多个第二节点分别对应的数据库文件中。
图3的设备还可以包括队列建立单元380,用于建立与多个第二节点相同数目的同步队列。在一些示例中,在用于rdb转换的线程完成重新组合之后,将其经由同步队列通知给第二线程。此时,发送单元340还利用所述第二线程向所述多个第二节点发送与其分别对应的数据库文件。
在一些示例中,如上所述,第一线程、第二线程和用于rdb转换的线程在未使用时进入阻塞状态。
需要注意的是,在图3中描述的集群节点缩扩设备仅是为了使本领域技术人员更清楚地理解本发明而作的图,其中省略了一些对理解本发明不必要的模块/组件,本发明的保护范围不应受这些附图的具体细节所限制。例如,实际的设备中可以包括更多的模块/组件,如显示器、操作维护接口、输入输出接口等等。再例如,上述单元320、330、350-380等可由实际计算机中的一个或多个处理器/模块来实现。该模块可以是软件、硬件、固件或本领域技术人员熟知的其他方式。本发明不对这些进行限制。
上面的描述仅用于实现本发明的实施方式,本领域的技术人员应该理解,在不脱离本发明的范围的任何修改或局部替换,均应该属于本发明的权利要求来限定的范围,因此,本发明的保护范围应该以权利要求书的保护范围为准。
Claims (13)
1.一种用于集群节点缩扩的方法,包括:
从第一节点集群的多个第一节点接收所述多个第一节点并行生成的redis数据库快照;
从所述多个第一节点接收客户端在所述redis数据库快照的发送之后进行的写操作;
生成与第二节点集群的多个第二节点分别对应的附加文件,并按照所建立的key到所述第二节点集群的映射关系,将所述写操作分别记录在所述附加文件中;
按照所述所建立的key到所述第二节点集群的映射关系,分析所述redis数据库快照并将所述redis数据库快照重新组合到与所述第二节点集群的所述多个第二节点分别对应的数据库文件中;
向所述多个第二节点分别发送与其对应的数据库文件和附加文件;以及
指示配置所述客户端的配置管理***将所述第二节点集群的集群节点拓扑发送到所述客户端,以使得所述客户端能够根据所述第二节点集群的集群节点拓扑来进行读写操作。
2.根据权利要求1所述的方法,在将所述第二节点集群的集群节点拓扑发送到所述客户端时,还包括:
通过对所述客户端进行配置的配置管理***禁止所述客户端进行写操作;以及
向所述多个第二节点分别发送所述附加文件中在向所述多个第二节点分别发送与其对应的数据库文件和附加文件之后记录的所述客户端的写操作。
3.根据权利要求1所述的方法,还包括:
与所述第二节点集群的所述多个第二节点各自建立第二连接;
为所述第二节点集群的所述多个第二节点各自建立第二线程;
建立用于rdb转换的线程;
为所述第一节点集群的所述多个第一节点各自建立第一线程;以及
与所述第一节点集群的所述多个第一节点各自建立第一连接。
4.根据权利要求3所述的方法,其中,所述用于rdb转换的线程包括计数同步器,所述计数同步器的初始值等于所述第一节点集群中节点的数目,所述方法还包括:
每次所述第一线程从所述第一节点集群中的节点接收到所述redis数据库快照,所述计数同步器递减一;以及
当所述计数同步器等于零时,所述用于rdb转换的线程分析所述redis数据库快照并将所述redis数据库快照重新组合到与所述第二节点集群的所述多个第二节点分别对应的数据库文件中。
5.根据权利要求4所述的方法,还包括:
建立与所述多个第二节点相同数目的同步队列;
在所述用于rdb转换的线程完成所述重新组合之后,将其经由所述同步队列通知给所述第二线程;以及
所述第二线程向所述多个第二节点发送与其分别对应的数据库文件。
6.根据权利要求4至6中任一项所述的方法,其中,所述第一线程、所述第二线程和所述用于rdb转换的线程在未使用时进入阻塞状态。
7.一种用于集群节点缩扩的设备,包括:
接收单元,用于从第一节点集群的多个第一节点接收所述多个第一节点并行生成的redis数据库快照,以及从所述多个第一节点接收客户端在所述redis数据库快照的发送之后进行的写操作;
附加文件生成单元,用于生成与第二节点集群的多个第二节点分别对应的附加文件,并按照所建立的key到所述第二节点集群的映射关系,将所述接收单元接收到的所述写操作分别记录在所述附加文件中;
重组合单元,用于按照所述所建立的key到所述第二节点集群的映射关系,分析所述接收单元接收到的所述redis数据库快照并将所述redis数据库快照重新组合到与所述第二节点集群的所述多个第二节点分别对应的数据库文件中;以及
发送单元,用于向所述多个第二节点分别发送与其对应的数据库文件和附加文件,以及用于指示配置所述客户端的配置管理***将所述第二节点集群的集群节点拓扑发送到所述客户端,以使得所述客户端能够根据所述第二节点集群的集群节点拓扑来进行读写操作。
8.根据权利要求7所述的设备,还包括:
写操作禁止单元,用于在对所述客户端进行配置的配置管理***将所述第二节点集群的集群节点拓扑发送到所述客户端时,通过所述配置管理***禁止所述客户端进行写操作;
其中,所述发送单元还向所述多个第二节点分别发送所述附加文件中在向所述多个第二节点分别发送与其对应的数据库文件和附加文件之后记录的所述客户端的写操作。
9.根据权利要求7所述的设备,还包括:
连接建立单元,用于与所述第一节点集群的所述多个第一节点各自建立第一连接,且与所述第二节点集群的所述多个第二节点各自建立第二连接;以及
线程建立单元,用于为所述第一节点集群的所述多个第一节点各自建立第一线程,建立用于rdb转换的线程,以及为所述第二节点集群的所述多个第二节点各自建立第二线程。
10.根据权利要求9所述的设备,其中,所述用于rdb转换的线程包括计数同步器,所述计数同步器的初始值等于所述第一节点集群中节点的数目,每次所述第一线程从所述第一节点集群中的节点接收到所述redis数据库快照,所述计数同步器递减一,当所述计数同步器等于零时,所述用于rdb转换的线程分析所述redis数据库快照并将所述redis数据库快照重新组合到与所述第二节点集群的所述多个第二节点分别对应的数据库文件中。
11.根据权利要求10所述的设备,还包括:
队列建立单元,用于建立与所述多个第二节点相同数目的同步队列,
其中,在所述用于rdb转换的线程完成所述重新组合之后,将其经由所述同步队列通知给所述第二线程;以及所述发送单元还利用所述第二线程向所述多个第二节点发送与其分别对应的数据库文件。
12.根据权利要求7至11中任一项所述的设备,其中,所述第一线程、所述第二线程和所述用于rdb转换的线程在未使用时进入阻塞状态。
13.一种用于集群节点缩扩的***,包括:
客户端;
包括多个第一节点的第一节点集群;
包括多个第二节点的第二节点集群;
根据权利要求7至11中任一项所述的设备;以及
用于配置所述客户端的配置管理***,所述配置管理***将所述第二节点集群的集群节点拓扑发送到所述客户端,以使得所述客户端能够根据所述第二节点集群的集群节点拓扑来进行读写操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510505399.3A CN105260376B (zh) | 2015-08-17 | 2015-08-17 | 用于集群节点缩扩的方法、设备和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510505399.3A CN105260376B (zh) | 2015-08-17 | 2015-08-17 | 用于集群节点缩扩的方法、设备和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105260376A true CN105260376A (zh) | 2016-01-20 |
CN105260376B CN105260376B (zh) | 2018-08-14 |
Family
ID=55100069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510505399.3A Active CN105260376B (zh) | 2015-08-17 | 2015-08-17 | 用于集群节点缩扩的方法、设备和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105260376B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105808643A (zh) * | 2016-02-25 | 2016-07-27 | 浪潮通信信息***有限公司 | 一种Redis内存数据库刷新的方法 |
CN106843755A (zh) * | 2017-01-04 | 2017-06-13 | 北京百度网讯科技有限公司 | 用于服务器集群的数据均衡方法与装置 |
CN107330035A (zh) * | 2017-06-26 | 2017-11-07 | 努比亚技术有限公司 | 一种数据库中操作日志同步方法、移动终端以及计算机可读存储介质 |
CN107463612A (zh) * | 2017-06-29 | 2017-12-12 | 北京北信源软件股份有限公司 | 高并发redis数据库操作方法及*** |
CN107741963A (zh) * | 2017-09-30 | 2018-02-27 | 北京奇虎科技有限公司 | 跨集群数据合并方法及装置、电子设备、计算机存储介质 |
CN107919977A (zh) * | 2016-10-11 | 2018-04-17 | 阿里巴巴集团控股有限公司 | 一种基于Paxos协议的分布式一致性***的在线扩容、在线缩容的方法和装置 |
CN107943589A (zh) * | 2017-11-29 | 2018-04-20 | 苏宁云商集团股份有限公司 | 一种数据缓存的管理方法及装置 |
CN108073414A (zh) * | 2016-11-15 | 2018-05-25 | 北京亿阳信通科技有限公司 | 一种基于Jedis的将多线程并发请求合并批量提交并分发结果的实现方法 |
WO2019033949A1 (zh) * | 2017-08-18 | 2019-02-21 | 阿里巴巴集团控股有限公司 | 一种数据的迁移方法、装置及设备 |
CN109818767A (zh) * | 2017-11-21 | 2019-05-28 | 网宿科技股份有限公司 | 一种Redis集群容量调整的方法、装置及存储介质 |
CN110333944A (zh) * | 2019-04-19 | 2019-10-15 | 中国联合网络通信集团有限公司 | 话单数据业务处理方法及设备 |
CN111309805A (zh) * | 2019-12-13 | 2020-06-19 | 华为技术有限公司 | 数据库的数据读写方法及装置 |
CN112632189A (zh) * | 2020-12-26 | 2021-04-09 | 中国农业银行股份有限公司 | 一种数据同步***及方法 |
WO2021168618A1 (zh) * | 2020-02-24 | 2021-09-02 | 深圳市欢太科技有限公司 | redis集群扩容方法、装置、电子设备以及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102148850A (zh) * | 2010-08-09 | 2011-08-10 | 华为软件技术有限公司 | 一种集群***的业务处理方法及集群*** |
CN102521297A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 无共享数据库集群中实现***动态扩展的方法 |
CN103034664A (zh) * | 2011-10-10 | 2013-04-10 | 上海盛霄云计算技术有限公司 | 控制数据库数据迁移的方法、***及装置 |
CN103078927A (zh) * | 2012-12-28 | 2013-05-01 | 合一网络技术(北京)有限公司 | 一种key-value数据分布式缓存***及其方法 |
CN103634375A (zh) * | 2013-11-07 | 2014-03-12 | 华为技术有限公司 | 扩容集群节点的方法、装置及设备 |
CN104407807A (zh) * | 2014-10-24 | 2015-03-11 | 华中科技大学 | 一种针对rs编码存储集群的存储扩容方法 |
CN104484469A (zh) * | 2014-12-31 | 2015-04-01 | 天津南大通用数据技术股份有限公司 | 一种支持多hash map数据库集群***不停机的扩容方法 |
-
2015
- 2015-08-17 CN CN201510505399.3A patent/CN105260376B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102148850A (zh) * | 2010-08-09 | 2011-08-10 | 华为软件技术有限公司 | 一种集群***的业务处理方法及集群*** |
CN103034664A (zh) * | 2011-10-10 | 2013-04-10 | 上海盛霄云计算技术有限公司 | 控制数据库数据迁移的方法、***及装置 |
CN102521297A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 无共享数据库集群中实现***动态扩展的方法 |
CN103078927A (zh) * | 2012-12-28 | 2013-05-01 | 合一网络技术(北京)有限公司 | 一种key-value数据分布式缓存***及其方法 |
CN103634375A (zh) * | 2013-11-07 | 2014-03-12 | 华为技术有限公司 | 扩容集群节点的方法、装置及设备 |
CN104407807A (zh) * | 2014-10-24 | 2015-03-11 | 华中科技大学 | 一种针对rs编码存储集群的存储扩容方法 |
CN104484469A (zh) * | 2014-12-31 | 2015-04-01 | 天津南大通用数据技术股份有限公司 | 一种支持多hash map数据库集群***不停机的扩容方法 |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105808643A (zh) * | 2016-02-25 | 2016-07-27 | 浪潮通信信息***有限公司 | 一种Redis内存数据库刷新的方法 |
US11271814B2 (en) | 2016-10-11 | 2022-03-08 | Alibaba Group Holding Limited | Online capacity-expanding and online capacity-reducing methods and apparatuses for distributed consensus system |
CN107919977A (zh) * | 2016-10-11 | 2018-04-17 | 阿里巴巴集团控股有限公司 | 一种基于Paxos协议的分布式一致性***的在线扩容、在线缩容的方法和装置 |
CN108073414A (zh) * | 2016-11-15 | 2018-05-25 | 北京亿阳信通科技有限公司 | 一种基于Jedis的将多线程并发请求合并批量提交并分发结果的实现方法 |
CN108073414B (zh) * | 2016-11-15 | 2020-07-28 | 北京亿阳信通科技有限公司 | 一种基于Jedis的将多线程并发请求合并批量提交并分发结果的实现方法 |
CN106843755A (zh) * | 2017-01-04 | 2017-06-13 | 北京百度网讯科技有限公司 | 用于服务器集群的数据均衡方法与装置 |
CN106843755B (zh) * | 2017-01-04 | 2019-10-11 | 北京百度网讯科技有限公司 | 用于服务器集群的数据均衡方法与装置 |
CN107330035B (zh) * | 2017-06-26 | 2020-08-07 | 宁波图灵奇点智能科技有限公司 | 一种数据库中操作日志同步方法、移动终端以及计算机可读存储介质 |
CN107330035A (zh) * | 2017-06-26 | 2017-11-07 | 努比亚技术有限公司 | 一种数据库中操作日志同步方法、移动终端以及计算机可读存储介质 |
CN107463612B (zh) * | 2017-06-29 | 2019-10-01 | 北京北信源软件股份有限公司 | 高并发redis数据库操作方法及*** |
CN107463612A (zh) * | 2017-06-29 | 2017-12-12 | 北京北信源软件股份有限公司 | 高并发redis数据库操作方法及*** |
WO2019033949A1 (zh) * | 2017-08-18 | 2019-02-21 | 阿里巴巴集团控股有限公司 | 一种数据的迁移方法、装置及设备 |
CN107741963A (zh) * | 2017-09-30 | 2018-02-27 | 北京奇虎科技有限公司 | 跨集群数据合并方法及装置、电子设备、计算机存储介质 |
CN109818767B (zh) * | 2017-11-21 | 2021-08-03 | 网宿科技股份有限公司 | 一种Redis集群容量调整的方法、装置及存储介质 |
CN109818767A (zh) * | 2017-11-21 | 2019-05-28 | 网宿科技股份有限公司 | 一种Redis集群容量调整的方法、装置及存储介质 |
CN107943589A (zh) * | 2017-11-29 | 2018-04-20 | 苏宁云商集团股份有限公司 | 一种数据缓存的管理方法及装置 |
CN110333944A (zh) * | 2019-04-19 | 2019-10-15 | 中国联合网络通信集团有限公司 | 话单数据业务处理方法及设备 |
CN111309805A (zh) * | 2019-12-13 | 2020-06-19 | 华为技术有限公司 | 数据库的数据读写方法及装置 |
CN111309805B (zh) * | 2019-12-13 | 2023-10-20 | 华为技术有限公司 | 数据库的数据读写方法及装置 |
US11868333B2 (en) | 2019-12-13 | 2024-01-09 | Huawei Technologies Co., Ltd. | Data read/write method and apparatus for database |
WO2021168618A1 (zh) * | 2020-02-24 | 2021-09-02 | 深圳市欢太科技有限公司 | redis集群扩容方法、装置、电子设备以及存储介质 |
CN112632189A (zh) * | 2020-12-26 | 2021-04-09 | 中国农业银行股份有限公司 | 一种数据同步***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105260376B (zh) | 2018-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105260376A (zh) | 用于集群节点缩扩的方法、设备和*** | |
US12013764B2 (en) | Past-state backup generator and interface for database systems | |
CN110362381A (zh) | Hdfs集群高可用部署方法、***、设备及存储介质 | |
US11269731B1 (en) | Continuous data protection | |
CN103905537A (zh) | 分布式环境下管理工业实时数据存储的*** | |
US11262918B1 (en) | Data storage system with uneven drive wear reduction | |
US9983823B1 (en) | Pre-forking replicas for efficient scaling of a distribued data storage system | |
US11720593B2 (en) | Managing identifiers for multinodal master systems of unknown or changing size | |
CN104468274A (zh) | 一种集群监控管理方法及*** | |
CN102983996A (zh) | 一种高可用集群资源管理的动态配置方法与*** | |
JP2021524104A (ja) | マスター・スタンドバイコンテナシステム切替 | |
CN102663017A (zh) | 增强MySQL数据库可用性的实现***及实现方法 | |
CN110442601A (zh) | 一种Openstack镜像数据并行加速的方法和装置 | |
CN112069152B (zh) | 一种数据库集群升级方法、装置、设备以及存储介质 | |
JP2017503422A (ja) | ネットワーク要素データアクセス方法および装置、およびネットワーク管理システム | |
CN110555064A (zh) | 用于保险业务的数据服务***及方法 | |
CN111352916B (zh) | 基于nas存储***的数据存储方法、***及存储介质 | |
KR101617550B1 (ko) | 멀티미디어 트랜스코딩 방법 및 이를 수행하는 클라우드 멀티미디어 트랜스코딩 시스템 | |
CN113987089A (zh) | 一种***级联方法、数据处理方法及装置 | |
CN112527760A (zh) | 数据存储方法、装置、服务器及介质 | |
CN105760431A (zh) | 一种文件块的迁移方法和装置 | |
CN112800029A (zh) | 一种ceph集群整体迁移的方法 | |
US20190220208A1 (en) | Method, device and computer program product for storing data | |
JP5033095B2 (ja) | ストレージ管理媒介サーバ及びその制御方法 | |
CN109947451A (zh) | 一种集群应用文件更新方法、***、介质及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |