CN113268472B - 一种分布式数据存储***及方法 - Google Patents

一种分布式数据存储***及方法 Download PDF

Info

Publication number
CN113268472B
CN113268472B CN202110803060.7A CN202110803060A CN113268472B CN 113268472 B CN113268472 B CN 113268472B CN 202110803060 A CN202110803060 A CN 202110803060A CN 113268472 B CN113268472 B CN 113268472B
Authority
CN
China
Prior art keywords
data
node
nodes
data node
leader
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
CN202110803060.7A
Other languages
English (en)
Other versions
CN113268472A (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.)
Beijing Huapin Borui Network Technology Co Ltd
Original Assignee
Beijing Huapin Borui Network 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 Beijing Huapin Borui Network Technology Co Ltd filed Critical Beijing Huapin Borui Network Technology Co Ltd
Priority to CN202110803060.7A priority Critical patent/CN113268472B/zh
Publication of CN113268472A publication Critical patent/CN113268472A/zh
Application granted granted Critical
Publication of CN113268472B publication Critical patent/CN113268472B/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/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • 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
    • 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/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware
    • 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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种分布式数据存储***,包括:主节点组,包括多个主节点,一个为领导节点,领导节点将数据节点的表分片分配至指定数据节点组的各个数据节点,将其节点数据同步至其他主节点;路由节点组,包括多个路由节点,路由节点根据写入请求确定待写入数据的关键字对应分片所在的目标数据节点,并将写入请求发送至目标数据节点;多个数据节点组,每个数据节点组包括多个数据节点,每个数据节点存储写入的数据以及数据对应的表分片,目标数据节点响应写入请求,并将待写入数据写入目标数据节点的表分片。本发明实施例还公开了一种分布式数据存储方法。本发明在高并发访问情况下,能够同时写入大体量数据,提升存储***的可用性。

Description

一种分布式数据存储***及方法
技术领域
本发明涉及计算机技术技术领域,具体而言,涉及一种分布式数据存储***及方法。
背景技术
现有技术中的数据存储***,在高并发访问需要导入大体量数据时,响应时间较为缓慢,或是存在宕机的情况,无法支持高并发访问,影响了数据存储***的可用性。
发明内容
为解决上述问题,本发明的目的在于提供一种分布式数据存储***,可以在高并发访问情况下,能够同时写入大体量数据,提升存储***的可用性。
本发明实施例提供了一种分布式数据存储***,其特征在于,所述***包括:
主节点组,包括多个主节点,其中一个主节点作为领导节点,所述领导节点将数据节点的表分片分配至指定数据节点组的各个数据节点上,所述领导节点将其节点数据同步至其他主节点;
路由节点组,包括多个路由节点,路由节点获取写入请求,确定所述写入请求对应的待写入数据的关键字对应分片所在的目标数据节点,并确定所述目标数据节点的状态是否正常,在所述目标数据节点的状态正常时,将所述写入请求发送至所述目标数据节点,以使所述目标数据节点根据所述写入请求写入所述待写入数据,在所述目标数据节点的状态异常时,将所述待写入数据写入消息队列;
多个数据节点组,每个数据节点组包括多个数据节点,每个数据节点存储写入的数据以及数据对应的表分片,所述目标数据节点响应来自所述路由节点的写入请求,并根据所述写入请求将所述待写入数据写入所述目标数据节点的表分片;
其中,通过所述路由节点访问命名空间,所述命名空间包括在线命名空间和离线命名空间;在所述路由节点接收到在线数据写入请求时,所述路由节点将写入请求发送至所述目标数据节点,以使所述目标数据节点写入所述待写入数据;在所述路由节点接收到离线数据写入请求时,从所述领导节点中获取表的离线命名空间并清空历史版本数据,所述路由节点将写入请求发送至所述目标数据节点,在所述目标数据节点写入完成后,调用所述领导节点将表的离线命名空间切换至表的在线命名空间。
作为本发明进一步的改进,在所述目标数据节点状态正常后,所述目标数据节点从所述消息队列中解析消息,并将所述消息的关键字的版本值与数据库中的版本值进行比较,在所述数据库中不存在所述消息的关键字的版本值时,将所述消息对应的数据写入所述目标数据节点。
作为本发明进一步的改进,每个数据节点上存储的表分片包括主分片和副本分片,
所述数据节点定期向所述领导节点发送心跳信号,以使所述领导节点根据所述数据节点的心跳信号,确定所述数据节点的状态,
在其中一个数据节点宕机时,所述领导节点将该宕机数据节点上的主分片对应的副本分片升级为主分片,并将所述宕机数据节点上的副本分片分配至其他数据节点。
作为本发明进一步的改进,每个数据节点上存储的表分片包括主分片和副本分片,
所述目标数据节点将所述待写入数据写入其主分片,在所述目标数据节点写入完成后,所述目标数据节点所在的数据节点组中的其他数据节点从所述目标数据节点的主分片上同步数据,并在所述其他数据节点的副本分片同步数据结束后,各个数据节点将心跳信号发送至所述领导节点。
作为本发明进一步的改进,每个主节点上存储有表分片的元数据,以根据所述表分片的元数据确定对应的数据节点组,
数据节点组中的各个数据节点在存储数据时,每个数据节点的副本分片的元数据通过心跳信号反馈至所述领导节点,
每个路由节点从所述领导节点中获取表分片的元数据进行元数据更新,所述路由节点同时写入数据节点组中的多个数据节点的副本分片的元数据,当所述多个数据节点的副本分片数量不足时,所述路由节点更新元数据失败,并在所述多个数据节点的副本分片同步数据结束后,所述路由节点继续写入所述多个数据节点的副本分片的元数据。
作为本发明进一步的改进,所述主节点组包括至少三个主节点,以使所述领导节点在宕机后所述主节点组的节点数不少于两个,
在所述领导节点宕机时,从所述主节点组中重新选择一个主节点作为新的领导节点,所述新的领导节点将其节点数据同步至其他主节点。
作为本发明进一步的改进,在所述领导节点确定有新数据节点时,所述领导节点根据表参数确定所述新数据节点对应的目标数据节点组,并重新分配所述目标数据节点组中各个数据节点对应的表分片,
所述新数据节点新增副本分片,并从所述目标数据节点组中的各个数据节点的副本分片同步数据。
作为本发明进一步的改进,所述***中存储Key Value类型的数据和Hash类型的数据;
所述Key Value类型的数据的数据结构包括关键字、版本值和存储值;
所述Hash类型的元数据的数据结构包括关键字、版本值和字段数据,所述Hash类型的普通数据的数据结构包括关键字大小、关键字、字段、版本值和存储值。
作为本发明进一步的改进,所述Key Value类型的数据的数据结构还包括过期时间;
所述Hash类型的元数据的数据结构还包括过期时间,所述Hash类型的普通数据的数据结构还包括过期时间。
本发明实施例还提供了一种分布式数据存储方法,所述方法包括:
领导节点将数据节点的表分片分配至指定数据节点组的各个数据节点上;
在路由节点接收到写入请求时,确定所述写入请求对应的待写入数据的关键字对应分片所在的目标数据节点,并确定所述目标数据节点的状态是否正常,在所述目标数据节点的状态正常时,将所述写入请求发送至所述目标数据节点,以使所述目标数据节点根据所述写入请求写入所述待写入数据,在所述目标数据节点的状态异常时,将所述待写入数据写入消息队列;
数据节点组中的目标数据节点响应来自所述路由节点的写入请求,并根据所述写入请求将所述待写入数据写入所述目标数据节点的表分片;
其中,通过所述路由节点访问命名空间,所述命名空间包括在线命名空间和离线命名空间;在所述路由节点接收到在线数据写入请求时,所述路由节点将写入请求发送至所述目标数据节点,以使所述目标数据节点写入所述待写入数据;在所述路由节点接收到离线数据写入请求时,从所述领导节点中获取表的离线命名空间并清空历史版本数据,所述路由节点将写入请求发送至所述目标数据节点,在所述目标数据节点写入完成后,调用所述领导节点将表的离线命名空间切换至表的在线命名空间。
作为本发明进一步的改进,在所述目标数据节点状态正常后,所述方法还包括:
所述目标数据节点从所述消息队列中解析消息,并将所述消息的关键字的版本值与数据库中的版本值进行比较,在所述数据库中不存在所述消息的关键字的版本值时,将所述消息对应的数据写入所述目标数据节点。
作为本发明进一步的改进,每个数据节点上存储的表分片包括主分片和副本分片,所述方法还包括:
所述数据节点定期向所述领导节点发送心跳信号,以使所述领导节点根据所述数据节点的心跳信号,确定所述数据节点的状态,
在其中一个数据节点宕机时,所述领导节点将该宕机数据节点上的主分片对应的副本分片升级为主分片,并将所述宕机数据节点上的副本分片分配至其他数据节点。
作为本发明进一步的改进,每个数据节点上存储的表分片包括主分片和副本分片,所述方法还包括:
所述目标数据节点将所述待写入数据写入其主分片,在所述目标数据节点写入完成后,所述目标数据节点所在的数据节点组中的其他数据节点从所述目标数据节点的主分片上同步数据,并在所述其他数据节点的副本分片同步数据结束后,各个数据节点将心跳信号发送至所述领导节点。
作为本发明进一步的改进,每个主节点上存储有表分片的元数据,以根据所述表分片的元数据确定对应的数据节点组,所述方法还包括:
数据节点组中的各个数据节点在存储数据时,每个数据节点的副本分片的元数据通过心跳信号反馈至所述领导节点,
每个路由节点从所述领导节点中获取表分片的元数据进行元数据更新,所述路由节点同时写入数据节点组中的多个数据节点的副本分片的元数据,当所述多个数据节点的副本分片数量不足时,所述路由节点更新元数据失败,并在所述多个数据节点的副本分片同步数据结束后,所述路由节点继续写入所述多个数据节点的副本分片的元数据。
作为本发明进一步的改进,主节点组包括至少三个主节点,以使所述领导节点在宕机后所述主节点组的节点数不少于两个,所述方法还包括:
在所述领导节点宕机时,从所述主节点组中重新选择一个主节点作为新的领导节点,所述新的领导节点将其节点数据同步至其他主节点。
作为本发明进一步的改进,在所述领导节点确定有新数据节点时,所述方法还包括:
所述领导节点根据表参数确定所述新数据节点对应的目标数据节点组,并重新分配所述目标数据节点组中各个数据节点对应的表分片,
所述新数据节点新增副本分片,并从所述目标数据节点组中的各个数据节点的副本分片同步数据。
本发明实施例还提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被处理器执行以实现所述的方法。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现所述的方法。
本发明的有益效果为:
通过数据分片的方式解决大体量的数据存储,在高并发访问情况下,多个数据节点组中的数据节点能够同时写入大体量数据。能够在在线和离线的情况下写入数据,确保在线和离线数据的一致,并能在数据节点存在异常的情况下保持数据一致性。***集群中主节点和数据节点采用高可用的架构,有效解决服务单点故障。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一示例性实施例所述的一种分布式数据存储***的结构示意图;
图2为本发明一示例性实施例所述的数据节点的分片分布示意图;
图3为本发明一示例性实施例所述的Key Value类型数据的数据结构的示意图,其中(a)示出了不设置过期时间的数据结构,(b)示出了设置过期时间的数据结构;
图4为本发明一示例性实施例所述的Hash类型元数据的数据结构的示意图,其中(a)示出了不设置过期时间的数据结构,(b)示出了设置过期时间的数据结构;
图5为本发明一示例性实施例所述的Hash类型普通数据的数据结构的示意图,其中(a)示出了不设置过期时间的数据结构,(b)示出了设置过期时间的数据结构。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,若本发明实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,在本发明的描述中,所用术语仅用于说明目的,并非旨在限制本发明的范围。术语“包括”和/或“包含”用于指定所述元件、步骤、操作和/或组件的存在,但并不排除存在或添加一个或多个其他元件、步骤、操作和/或组件的情况。术语“第一”、“第二”等可能用于描述各种元件,不代表顺序,且不对这些元件起限定作用。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个及两个以上。这些术语仅用于区分一个元素和另一个元素。结合以下附图,这些和/或其他方面变得显而易见,并且,本领域普通技术人员更容易理解关于本发明所述实施例的说明。附图仅出于说明的目的用来描绘本发明所述实施例。本领域技术人员将很容易地从以下说明中认识到,在不背离本发明所述原理的情况下,可以采用本发明所示结构和方法的替代实施例。
本发明实施例所述的一种分布式数据存储***,所述***包括:
主节点组,包括多个主节点,其中一个主节点作为领导节点,所述领导节点将数据节点的表分片分配至指定数据节点组的各个数据节点上,所述领导节点将其节点数据同步至其他主节点;
路由节点组,包括多个路由节点,路由节点获取写入请求,确定所述写入请求对应的待写入数据的关键字对应分片所在的目标数据节点,并确定所述目标数据节点的状态是否正常,在所述目标数据节点的状态正常时,将所述写入请求发送至所述目标数据节点,以使所述目标数据节点根据所述写入请求写入所述待写入数据,在所述目标数据节点的状态异常时,将所述待写入数据写入消息队列;
多个数据节点组,每个数据节点组包括多个数据节点,每个数据节点存储写入的数据以及数据对应的表分片,所述目标数据节点响应来自所述路由节点的写入请求,并根据所述写入请求将所述待写入数据写入所述目标数据节点的表分片;
其中,通过所述路由节点访问命名空间,所述命名空间包括在线命名空间和离线命名空间;在所述路由节点接收到在线数据写入请求时,所述路由节点将写入请求发送至所述目标数据节点,以使所述目标数据节点写入所述待写入数据;在所述路由节点接收到离线数据写入请求时,从所述领导节点中获取表的离线命名空间并清空历史版本数据,所述路由节点将写入请求发送至所述目标数据节点,在所述目标数据节点写入完成后,调用所述领导节点将表的离线命名空间切换至表的在线命名空间。
本发明所述***具有三种角色:主节点、路由节点和数据节点,所述***可以允许在任何时刻写入新的数据,通过数据分片的方式存储数据,在高并发访问情况下,能够写入大量数据,解决大体量数据的存储问题,通过路由节点调用数据节点组中的各个数据节点,能够支持在线和离线写入数据,并确保在线和离线数据的一致更新。
主节点负责选举领导节点、维护当前结构的最新信息、分配集群资源、协调恢复、元数据存储和主节点之间的同步。如图1所示,主节点可设置选举模块、事件订阅通知模块、分片分配与管理模块、数据节点集群管理模块、元数据管理模块、元数据同步模块、PRC接口,其中,选举模块用于执行选举算法选举出领导节点;PRC接口是一种远程调用接口,实现路由节点从领导节点的元数据索取以及数据节点向领导点的心跳信号发送;分片分配与管理模块用于实现领导节点对数据节点组的数据节点的表分片的分配和管理;事件订阅通知模块用于实现各项任务执行后的通知;数据节点集群管理模块用于实现领导节点对数据节点组的数据节点的管理;元数据同步模块用于将数据节点同步数据的元数据进行同步;元数据管理模块用于实现主节点元数据的管理。
数据节点负责存储用户写入的数据以及存储数据的管理。如图1所示,数据节点可设置接口服务模块、心跳维护模块、数据回放模块、存储模块和数据同步模块,其中,接口服务模块用于支持路由节点向数据节点发送的写入请求,还可用于数据节点向领导节点发送心跳信号,例如可以是支持PRC接口的模块;心跳维护模块用于维护数据节点发送至主节点的心跳信号数据;数据回放模块用于将数据节点在异常状态时,消息队列中的数据进行回放;存储模块用于存储数据节点写入的数据以及数据对应的表分片。
路由节点充当存储***对外部提供的访问接口以及请求路由的分发。应用程序或者服务只向路由器节点提交请求即可。路由节点负责数据节点连接管理、查询分发以及写异常处理等。如图1所示,路由节点可设置接口服务模块、元数据管理模块、数据版本控制模块、别名映射模块、数据节点黑名单管理模块、数据节点连接管理模块、数据节点自动摘除或恢复模块,其中,接口服务模块用于实现路由节点向数据节点的调用,以及路由节点向主节点索取元数据,例如可以是支持PRC接口的模块;元数据管理模块用于管理从主节点获取的元数据;数据版本控制模块用于对消息队列中的数据的版本值进行比较,以确定是否写入消息队列中的数据;别名映射模块用于实现表的别名映射,使路由节点能够根据表的别名访问在表的线命名空间或表的离线命名空间;数据节点黑名单管理模块用于管理不需要的数据节点;数据节点连接模块用于实现路由节点与数据节点之间的连接,以将写入请求发送至对应的数据节点组;数据节点自动摘除或恢复用于在数据节点出现异常状态时将其该数据节点自动摘除,或者在数据节点恢复正常状态时将该数据节点自动恢复。
还可以理解的时,所述***还可以设置一个管理员,用于对所述***的集群进行监控、对表的别名进行管理、对各个节点的令牌(Token)进行管理、对表的命名空间(包括离线命名空间和在线命名空间)进行管理、对表的分片进行统计、数据库的数据查询以及数据节点组的分组管理。管理员可通过PRC接口从主节点获取数据,还可以通过REST接口从路由节点和数据节点获取数据。
本发明所述***使用集群,所述***可以同时写入多条数据。例如可以是在一个数据节点组中的多个数据节点同时写入数据,可以是在多个数据节点组中的多个数据节点同时写入数据。其中一个数据节点属于一个数据节点组,在***启动时每个数据节点会注册至领导节点。在需要写入数据时,该写入数据会被指定存储在某一数据节点组的某一数据节点上。领导节点将表分片分配至指定的数据节点组。可以根据不同的待写入数据来决定表分片存储在那个数据节点组,通过分组的方式可以将多表数据隔离,互不影响,可提高***的性能。将数据以分片的方式存储在多个数据节点组的多个数据节点中,可以解决大体量的数据存储问题,以提升所述***的读写性能。
客户端在调用一个路由节点的接口发送写入请求时,该路由节点会从领导节点中获取表分片所分布的数据节点组以及该数据节点组中的目标数据节点,再将该写入请求发送至对应的目标数据节点,以使该数据节点组中的目标数据节点写入数据。上述为一个路由节点发送写入请求的示意流程,所述***中多个路由节点可同时执行上述流程。还可以理解的是,所述***中写入数据的操作可以和查询数据的操作各自独立进行,以支持读写分离功能及高并发的访问。即在目标数据节点写入数据时,路由节点还可以向其他数据节点发送查询请求,以使其他数据节点完成查询请求。
本发明所述***包括路由节点组、主节点组和数据节点组。其中,路由节点组例如可以包括n个节点:路由节点1、路由节点2、路由节点3、……、路由节点n。主节点组例如可以包括n个节点:主节点1、主节点2、……、主节点n。数据节点组,例如可以包括n个节点组:数据节点组1、数据节点组2、……、数据节点组n,其中,数据节点组1例如可以包括n个节点:数据节点1、数据节点2、数据节点3、数据节点4、……、数据节点n,数据节点组2例如可以包括n个节点:数据节点1、数据节点2、数据节点3、数据节点4、……、数据节点n,……,数据节点组n(bussiness_group_n)例如可以包括n个节点:数据节点1、数据节点2、数据节点3、数据节点4、……、数据节点n。上述路由节点组中的节点数量n、主节点组中的节点数量n、数据节点组的数量n、每个数据节点组中的节点数量n均为示意性举例,需要指出的是各个n可以是不同的数,本发明所述***对路由节点组中的节点数量n、主节点组中的节点数量n、数据节点组的数量n、每个数据节点组中的节点数量n的取值不做具体限定。
例如,主节点 1作为领导节点,确定客户端发送的写入请求所对应的表分片在数据节点组1上,路由节点 1将客户端的写入请求发送至数据节点组1,数据节点组1中的数据节点 1执行数据写入。
需要指出的是,客户端的访问权限不应超过其职能所需要的权限,路由节点组、数据节点组和主节点组的访问权限同样不应超过其职能所需要的权限。其中一个客户端运行所述***出现问题时,不影响其他客户端的运行。
还需要指出的是,一个路由节点可以连接至一个数据节点组中的多个数据节点,也可以连接至多个数据节点组中的多个数据节点,可以同时处理多个写入请求,以提高***的写入效率,提高响应时间。领导节点对每个数据节点进行表分片分配,将数据进行均载,避免某一数据节点承载数据量过大。还可以理解的是,每个数据节点能存储的数据可根据需求进行动态配置。
本发明所述***中的主要组织单元是命名空间,命名空间表示特定的数据集,这里的命名空间包括在线命名空间和离线命名空间。命名空间包括几个组成部分:数据节点组、表名称(即业务表名称)、最小节点数、分片数、副本分片数、是否支持从读、是否支持反亲和部署等信息。表名称是用于对外业务访问时使用,表对外采用别名机制,别名在底层映射是两个命名空间:在线命名空间和离线命名空间,客户端可以通过别名访问底层的两个命名空间。别名可以充当连接多个物理命名空间的管道。即客户端通过路由节点,路由节点通过别名访问底层的命名空间。所述***在接收到离线数据写入时,停止实时更新,从主节点获取表的离线命名空间,并清空老版本数据,再调用路由节点将该写入请求路由至对应的目标数据节点上进行数据写入,此时不影响数据节点的在线查询(即读性能),当数据写入完成后,再调用主节点将离线命名空间切换至在线命名空间,再继续在线数据写入。所述***通过表的别名和双命名空间切换的方式,在离线数据导入时不影响在线读性能。同时,通过离线命名空间和在线命名空间的切换,可以实现离线数据和在线数据的一致更新。
本发明所述系中数据组织单元是表,表是特定的数据集,每张表按照体量以分片的方式存储底层数据,即每个数据节点存储一个或多个分片。数据节点的分片分布如图2所示,例如,数据节点1存储表1(Table1)中的P0、P1、P2分片,数据节点2存储表1(Table1)中的P3、P4、P5分片,数据节点3存储表1(Table1)中的P6、P7、P8分片。上述为示意性举例说明,本发明对每个数据节点存储的分片不做具体限定。但需要注意的是,应尽量保证每个数据节点的分片均匀,以达到数据的均载。
一种可选的实施方式,在所述目标数据节点状态正常后,所述目标数据节点从所述消息队列中解析消息,并将所述消息的关键字的版本值与数据库中的版本值进行比较,在所述数据库中不存在所述消息的关键字的版本值时,将所述消息对应的数据写入所述目标数据节点。
本发明路由节点对数据的删除操作直接写入消息队列(MQ),由数据节点来消费MQ,并根据版本操作数据库,对写入请求(包括更新请求)直接调用数据节点的接口,如果请求失败则直接写入MQ。具体的,路由节点在接收到写入请求时,获取数据的关键字(Key)对应的分片所在的数据节点的地址;检查该数据节点的状态是否正常,如果状态异常则直接写入MQ,否则直接调用数据节点的接口写入数据;在数据节点启动后会先消费MQ做恢复操作,完全恢复后该数据节点提供对外读/写服务;在数据节点正常提供服务后接收到MQ消息时,需要比较数据库中关键字对应的版本值,只保留最新的操作。本发明所述***通过消息队列的方式,可以解决异常情况下数据一致性的问题。
一种可选的实施方式,每个数据节点上存储的表分片包括主分片和副本分片,
所述数据节点定期向所述领导节点发送心跳信号,以使所述领导节点根据所述数据节点的心跳信号,确定所述数据节点的状态,
在其中一个数据节点宕机时,所述领导节点将该宕机数据节点上的主分片对应的副本分片升级为主分片,并将所述宕机数据节点上的副本分片分配至其他数据节点。
本发明中数据节点用于存储数据,数据节点定期向领导节点发送心跳信号和状态报告,以向领导节点示意其健康状况。数据节点和主节点之间通过心跳维护来判断数据节点是否活跃,主节点也可以通过心跳信号来防止出现同一个分片出现多个主分片的情况。当有某一数据节点宕机后,其节点上的副本分片缺失,领导节点检查到副本分片不足后,该宕机数据节点上的主分片对应的副本分片会升级成主分片,该宕机数据节点上的副本分片会在其他活跃的数据节点上进行重新分配,以确保在数据节点宕机时的数据不丢失,确保数据的一致性和可靠性。
一种可选的实施方式,每个数据节点上存储的表分片包括主分片和副本分片,
所述目标数据节点将所述待写入数据写入其主分片,在所述目标数据节点写入完成后,所述目标数据节点所在的数据节点组中的其他数据节点从所述目标数据节点的主分片上同步数据,并在所述其他数据节点的副本分片同步数据结束后,各个数据节点将心跳信号发送至所述领导节点。
需要指出的是,当所述目标数据节点在完成数据写入后,该目标数据节点所在的数据节点组中的其他数据节点会从该目标数据节点的主分片上同步数据,当数据同步完成后通知领导节点,以使数据节点组中各个数据节点之间数据具备一致性。
一种可选的实施方式,每个主节点上存储有表分片的元数据,以根据所述表分片的元数据确定对应的数据节点组,
数据节点组中的各个数据节点在存储数据时,每个数据节点的副本分片的元数据通过心跳信号反馈至所述领导节点,
每个路由节点从所述领导节点中获取表分片的元数据进行元数据更新,所述路由节点同时写入数据节点组中的多个数据节点的副本分片的元数据,当所述多个数据节点的副本分片数量不足时,所述路由节点更新元数据失败,并在所述多个数据节点的副本分片同步数据结束后,所述路由节点继续写入所述多个数据节点的副本分片的元数据。
路由节点是响应外部应用提交的写入请求,路由节点是同时写入数据节点组中的多个数据节点的多个副本分片,当数据节点组中某一或某几个数据节点的副本分片不足时,路由节点直接返回失败,直到数据节点组中所有数据节点的副本分片数据同步完成,全部数据节点恢复完副本分片后,路由节点继续写入该数据节点组中的多个副本分片,以实现数据节点组中所有副本分片的一致性写入,确保路由节点数据的一致性。
一种可选的实施方式,所述主节点组包括至少三个主节点,以使所述领导节点在宕机后所述主节点组的节点数不少于两个,
在所述领导节点宕机时,从所述主节点组中重新选择一个主节点作为新的领导节点,所述新的领导节点将其节点数据同步至其他主节点。
主节点负责选举领导节点、维护当前结构的最新信息、分配集群资源、协调恢复、元数据存储和主节点之间的同步。其中一个主节点被选为领导节点,所述***中所有数据节点总是将请求指向领导节点,领导节点立即将其内部数据结构(元数据)的修改同步到其他主节点,并通过监控来自数据节点的心跳信号和请求,领导节点可以跟踪***中所有数据节点的运行情况。领导节点维护了表元数据以及表分片和数据节点之间的映射关系。所述***通过主节点和数据节点的高可用架构,可以有效解决服务单点故障的问题。
一种可选的实施方式,在所述领导节点确定有新数据节点时,所述领导节点根据表参数确定所述新数据节点对应的目标数据节点组,并重新分配所述目标数据节点组中各个数据节点对应的表分片,
所述新数据节点新增副本分片,并从所述目标数据节点组中的各个数据节点的副本分片同步数据。
所述***的主节点发现有新数据节点加入集群时,会对表分片重新分配,需要尽量保证每个数据节点的分片均匀,且分片移动操作较少,防止大量数据同步影响读写操作;需要根据表参数约束,判断分片是否满足条件(例如,是否需要保证主/副本分片的反亲和策略);新数据节点加入一个数据节点组后,该数据节点组副本同步采用主分片生产快照,其他数据节点从主分片节点同步Binlog,构建本地数据集;新数据节点同步分片采用新增副本的方式,待全部同步完且上线后,主节点通知原来的数据节点下线已迁移完的副本分片。
一种可选的实施方式中,所述***中存储Key Value类型的数据和Hash类型的数据;
所述Key Value类型的数据的数据结构包括关键字、版本值和存储值;
所述Hash类型的元数据的数据结构包括关键字、版本值和字段数据,所述Hash类型的普通数据的数据结构包括关键字大小、关键字、字段、版本值和存储值。
一种可选的实施方式中,所述Key Value类型的数据的数据结构还包括过期时间;
所述Hash类型的元数据的数据结构还包括过期时间,所述Hash类型的普通数据的数据结构还包括过期时间。
本发明所述***可以存储两种数据结构的数据,Key Value类型的数据和Hash类型的数据。其中,Key Value类型的数据结构例如图3(a)和图3(b)所示。第一种为不设置过期时间的数据结构,如图3(a),包括Key(关键字)、版本值(Version)和存储值(Value),第二种为设置过期时间的数据结构,如图3(b),包括Key(关键字)、ExpireTimeStamp(过期时间)、版本值(Version)和存储值(Value)。Hash类型的数据包括元数据和普通数据。其中,元数据的数据结构例如图4(a)和图4(b)所示。第一种为不设置过期时间的数据结构,如图4(a),包括Key(关键字)、版本值(Version)和FieldMetadate(字段数据),第二种为设置过期时间的数据结构,如图4(b),包括Key(关键字)、ExpireTimeStamp(过期时间)、版本值(Version)和FieldMetadate(字段数据)。普通数据的数据结构例如图5(a)和图5(b)所示。第一种为不设置过期时间的数据结构,如图5(a),包括Key Size(关键字大小)、Key(关键字)、Field(字段)、版本值(Version)和存储值(Value),第二种为设置过期时间的数据结构,如图5(b),包括Key Size(关键字大小)、Key(关键字)、Field(字段)、ExpireTimeStamp(过期时间)、版本值(Version)和存储值(Value)
本发明实施例所述的一种分布式数据存储方法,所述方法包括:
领导节点将数据节点的表分片分配至指定数据节点组的各个数据节点上;
在路由节点接收到写入请求时,确定所述写入请求对应的待写入数据的关键字对应分片所在的目标数据节点,并确定所述目标数据节点的状态是否正常,在所述目标数据节点的状态正常时,将所述写入请求发送至所述目标数据节点,以使所述目标数据节点根据所述写入请求写入所述待写入数据,在所述目标数据节点的状态异常时,将所述待写入数据写入消息队列;
数据节点组中的目标数据节点响应来自所述路由节点的写入请求,并根据所述写入请求将所述待写入数据写入所述目标数据节点的表分片;
其中,通过所述路由节点访问命名空间,所述命名空间包括在线命名空间和离线命名空间;在所述路由节点接收到在线数据写入请求时,所述路由节点将写入请求发送至所述目标数据节点,以使所述目标数据节点写入所述待写入数据;在所述路由节点接收到离线数据写入请求时,从所述领导节点中获取表的离线命名空间并清空历史版本数据,所述路由节点将写入请求发送至所述目标数据节点,在所述目标数据节点写入完成后,调用所述领导节点将表的离线命名空间切换至表的在线命名空间。
一种可选的实施方式,在所述目标数据节点状态正常后,所述方法还包括:
所述目标数据节点从所述消息队列中解析消息,并将所述消息的关键字的版本值与数据库中的版本值进行比较,在所述数据库中不存在所述消息的关键字的版本值时,将所述消息对应的数据写入所述目标数据节点。
一种可选的实施方式,每个数据节点上存储的表分片包括主分片和副本分片,所述方法还包括:
所述数据节点定期向所述领导节点发送心跳信号,以使所述领导节点根据所述数据节点的心跳信号,确定所述数据节点的状态,
在其中一个数据节点宕机时,所述领导节点将该宕机数据节点上的主分片对应的副本分片升级为主分片,并将所述宕机数据节点上的副本分片分配至其他数据节点。
一种可选的实施方式,每个数据节点上存储的表分片包括主分片和副本分片,所述方法还包括:
所述目标数据节点将所述待写入数据写入其主分片,在所述目标数据节点写入完成后,所述目标数据节点所在的数据节点组中的其他数据节点从所述目标数据节点的主分片上同步数据,并在所述其他数据节点的副本分片同步数据结束后,各个数据节点将心跳信号发送至所述领导节点。
一种可选的实施方式,每个主节点上存储有表分片的元数据,以根据所述表分片的元数据确定对应的数据节点组,所述方法还包括:
数据节点组中的各个数据节点在存储数据时,每个数据节点的副本分片的元数据通过心跳信号反馈至所述领导节点,
每个路由节点从所述领导节点中获取表分片的元数据进行元数据更新,所述路由节点同时写入数据节点组中的多个数据节点的副本分片的元数据,当所述多个数据节点的副本分片数量不足时,所述路由节点更新元数据失败,并在所述多个数据节点的副本分片同步数据结束后,所述路由节点继续写入所述多个数据节点的副本分片的元数据。
一种可选的实施方式,主节点组包括至少三个主节点,以使所述领导节点在宕机后所述主节点组的节点数不少于两个,所述方法还包括:
在所述领导节点宕机时,从所述主节点组中重新选择一个主节点作为新的领导节点,所述新的领导节点将其节点数据同步至其他主节点。
一种可选的实施方式,在所述领导节点确定有新数据节点时,所述方法还包括:
所述领导节点根据表参数确定所述新数据节点对应的目标数据节点组,并重新分配所述目标数据节点组中各个数据节点对应的表分片,
所述新数据节点新增副本分片,并从所述目标数据节点组中的各个数据节点的副本分片同步数据。
本公开还涉及一种电子设备,包括服务器、终端等。该电子设备包括:至少一个处理器;与至少一个处理器通信连接的存储器;以及与存储介质通信连接的通信组件,所述通信组件在处理器的控制下接收和发送数据;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行以实现上述实施例中的方法。
在一种可选的实施方式中,存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器中,当被一个或者多个处理器执行时,执行上述任意方法实施例中的方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本公开还涉及一种计算机可读存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
此外,本领域普通技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本领域技术人员应理解,尽管已经参考示例性实施例描述了本发明,但是在不脱离本发明的范围的情况下,可进行各种改变并可用等同物替换其元件。另外,在不脱离本发明的实质范围的情况下,可进行许多修改以使特定情况或材料适应本发明的教导。因此,本发明不限于所公开的特定实施例,而是本发明将包括落入所附权利要求范围内的所有实施例。

Claims (16)

1.一种分布式数据存储***,其特征在于,所述***包括:
主节点组,包括多个主节点,其中一个主节点作为领导节点,所述领导节点将数据节点的表分片分配至指定数据节点组的各个数据节点上,所述领导节点将其节点数据同步至其他主节点;
路由节点组,包括多个路由节点,路由节点获取写入请求,确定所述写入请求对应的待写入数据的关键字对应分片所在的目标数据节点,并确定所述目标数据节点的状态是否正常,在所述目标数据节点的状态正常时,将所述写入请求发送至所述目标数据节点,以使所述目标数据节点根据所述写入请求写入所述待写入数据,在所述目标数据节点的状态异常时,将所述待写入数据写入消息队列,并在所述目标数据节点状态正常后,所述目标数据节点从所述消息队列中解析消息,并将所述消息的关键字的版本值与数据库中的版本值进行比较,在所述数据库中不存在所述消息的关键字的版本值时,将所述消息对应的数据写入所述目标数据节点;
多个数据节点组,每个数据节点组包括多个数据节点,每个数据节点存储写入的数据以及数据对应的表分片,所述目标数据节点响应来自所述路由节点的写入请求,并根据所述写入请求将所述待写入数据写入所述目标数据节点的表分片;
其中,通过所述路由节点访问命名空间,所述命名空间包括在线命名空间和离线命名空间;在所述路由节点接收到在线数据写入请求时,所述路由节点将写入请求发送至所述目标数据节点,以使所述目标数据节点写入所述待写入数据;在所述路由节点接收到离线数据写入请求时,从所述领导节点中获取表的离线命名空间并清空历史版本数据,所述路由节点将写入请求发送至所述目标数据节点,在所述目标数据节点写入完成后,调用所述领导节点将表的离线命名空间切换至表的在线命名空间。
2.如权利要求1所述的***,其中,每个数据节点上存储的表分片包括主分片和副本分片,
所述数据节点定期向所述领导节点发送心跳信号,以使所述领导节点根据所述数据节点的心跳信号,确定所述数据节点的状态,
在其中一个数据节点宕机时,所述领导节点将该宕机数据节点上的主分片对应的副本分片升级为主分片,并将所述宕机数据节点上的副本分片分配至其他数据节点。
3.如权利要求1所述的***,其中,每个数据节点上存储的表分片包括主分片和副本分片,
所述目标数据节点将所述待写入数据写入其主分片,在所述目标数据节点写入完成后,所述目标数据节点所在的数据节点组中的其他数据节点从所述目标数据节点的主分片上同步数据,并在所述其他数据节点的副本分片同步数据结束后,各个数据节点将心跳信号发送至所述领导节点。
4.如权利要求1所述的***,其中,每个主节点上存储有表分片的元数据,以根据所述表分片的元数据确定对应的数据节点组,
数据节点组中的各个数据节点在存储数据时,每个数据节点的副本分片的元数据通过心跳信号反馈至所述领导节点,
每个路由节点从所述领导节点中获取表分片的元数据进行元数据更新,所述路由节点同时写入数据节点组中的多个数据节点的副本分片的元数据,当所述多个数据节点的副本分片数量不足时,所述路由节点更新元数据失败,并在所述多个数据节点的副本分片同步数据结束后,所述路由节点继续写入所述多个数据节点的副本分片的元数据。
5.如权利要求1所述的***,其中,所述主节点组包括至少三个主节点,以使所述领导节点在宕机后所述主节点组的节点数不少于两个,
在所述领导节点宕机时,从所述主节点组中重新选择一个主节点作为新的领导节点,所述新的领导节点将其节点数据同步至其他主节点。
6.如权利要求1所述的***,其中,在所述领导节点确定有新数据节点时,所述领导节点根据表参数确定所述新数据节点对应的目标数据节点组,并重新分配所述目标数据节点组中各个数据节点对应的表分片,
所述新数据节点新增副本分片,并从所述目标数据节点组中的各个数据节点的副本分片同步数据。
7.如权利要求1-6中任意一项所述的***,其中,所述***中存储Key Value类型的数据和Hash类型的数据;
所述Key Value类型的数据的数据结构包括关键字、版本值和存储值;
所述Hash类型的元数据的数据结构包括关键字、版本值和字段数据,所述Hash类型的普通数据的数据结构包括关键字大小、关键字、字段、版本值和存储值。
8.如权利要求7所述的***,其中,所述Key Value类型的数据的数据结构还包括过期时间;
所述Hash类型的元数据的数据结构还包括过期时间,所述Hash类型的普通数据的数据结构还包括过期时间。
9.一种分布式数据存储方法,其特征在于,所述方法包括:
领导节点将数据节点的表分片分配至指定数据节点组的各个数据节点上;
在路由节点接收到写入请求时,确定所述写入请求对应的待写入数据的关键字对应分片所在的目标数据节点,并确定所述目标数据节点的状态是否正常,在所述目标数据节点的状态正常时,将所述写入请求发送至所述目标数据节点,以使所述目标数据节点根据所述写入请求写入所述待写入数据,在所述目标数据节点的状态异常时,将所述待写入数据写入消息队列;
数据节点组中的目标数据节点响应来自所述路由节点的写入请求,并根据所述写入请求将所述待写入数据写入所述目标数据节点的表分片;
其中,通过所述路由节点访问命名空间,所述命名空间包括在线命名空间和离线命名空间;在所述路由节点接收到在线数据写入请求时,所述路由节点将写入请求发送至所述目标数据节点,以使所述目标数据节点写入所述待写入数据;在所述路由节点接收到离线数据写入请求时,从所述领导节点中获取表的离线命名空间并清空历史版本数据,所述路由节点将写入请求发送至所述目标数据节点,在所述目标数据节点写入完成后,调用所述领导节点将表的离线命名空间切换至表的在线命名空间;
在所述目标数据节点状态正常后,所述方法还包括:
所述目标数据节点从所述消息队列中解析消息,并将所述消息的关键字的版本值与数据库中的版本值进行比较,在所述数据库中不存在所述消息的关键字的版本值时,将所述消息对应的数据写入所述目标数据节点。
10.如权利要求9所述的方法,其中,每个数据节点上存储的表分片包括主分片和副本分片,所述方法还包括:
所述数据节点定期向所述领导节点发送心跳信号,以使所述领导节点根据所述数据节点的心跳信号,确定所述数据节点的状态,
在其中一个数据节点宕机时,所述领导节点将该宕机数据节点上的主分片对应的副本分片升级为主分片,并将所述宕机数据节点上的副本分片分配至其他数据节点。
11.如权利要求9所述的方法,其中,每个数据节点上存储的表分片包括主分片和副本分片,所述方法还包括:
所述目标数据节点将所述待写入数据写入其主分片,在所述目标数据节点写入完成后,所述目标数据节点所在的数据节点组中的其他数据节点从所述目标数据节点的主分片上同步数据,并在所述其他数据节点的副本分片同步数据结束后,各个数据节点将心跳信号发送至所述领导节点。
12.如权利要求9所述的方法,其中,每个主节点上存储有表分片的元数据,以根据所述表分片的元数据确定对应的数据节点组,所述方法还包括:
数据节点组中的各个数据节点在存储数据时,每个数据节点的副本分片的元数据通过心跳信号反馈至所述领导节点,
每个路由节点从所述领导节点中获取表分片的元数据进行元数据更新,所述路由节点同时写入数据节点组中的多个数据节点的副本分片的元数据,当所述多个数据节点的副本分片数量不足时,所述路由节点更新元数据失败,并在所述多个数据节点的副本分片同步数据结束后,所述路由节点继续写入所述多个数据节点的副本分片的元数据。
13.如权利要求9所述的方法,其中,主节点组包括至少三个主节点,以使所述领导节点在宕机后所述主节点组的节点数不少于两个,所述方法还包括:
在所述领导节点宕机时,从所述主节点组中重新选择一个主节点作为新的领导节点,所述新的领导节点将其节点数据同步至其他主节点。
14.如权利要求9所述的方法,其中,在所述领导节点确定有新数据节点时,所述方法还包括:
所述领导节点根据表参数确定所述新数据节点对应的目标数据节点组,并重新分配所述目标数据节点组中各个数据节点对应的表分片,
所述新数据节点新增副本分片,并从所述目标数据节点组中的各个数据节点的副本分片同步数据。
15.一种电子设备,包括存储器和处理器,其特征在于,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被处理器执行以实现如权利要求9-14中任一项所述的方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行以实现如权利要求9-14中任一项所述的方法。
CN202110803060.7A 2021-07-15 2021-07-15 一种分布式数据存储***及方法 Active CN113268472B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110803060.7A CN113268472B (zh) 2021-07-15 2021-07-15 一种分布式数据存储***及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110803060.7A CN113268472B (zh) 2021-07-15 2021-07-15 一种分布式数据存储***及方法

Publications (2)

Publication Number Publication Date
CN113268472A CN113268472A (zh) 2021-08-17
CN113268472B true CN113268472B (zh) 2021-10-12

Family

ID=77236581

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110803060.7A Active CN113268472B (zh) 2021-07-15 2021-07-15 一种分布式数据存储***及方法

Country Status (1)

Country Link
CN (1) CN113268472B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114237497B (zh) * 2021-11-30 2024-03-12 北京达佳互联信息技术有限公司 一种分布式存储方法及装置
CN114416723B (zh) * 2021-12-15 2023-01-20 北京达佳互联信息技术有限公司 一种数据的处理方法、装置、设备及存储介质
CN116301670B (zh) * 2023-05-25 2023-09-05 极限数据(北京)科技有限公司 一种数据分区方法及数据处理方法
CN117389747B (zh) * 2023-12-11 2024-02-09 北京镜舟科技有限公司 分布式数据库的数据共享方法、电子设备和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106936899A (zh) * 2017-02-25 2017-07-07 九次方大数据信息集团有限公司 分布式统计分析***的配置方法及分布式统计分析***

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10614098B2 (en) * 2010-12-23 2020-04-07 Mongodb, Inc. System and method for determining consensus within a distributed database
CN103078927B (zh) * 2012-12-28 2015-07-22 合一网络技术(北京)有限公司 一种key-value数据分布式缓存***及其方法
CN105760556B (zh) * 2016-04-19 2019-05-24 江苏物联网研究发展中心 低延时高吞吐量的多副本文件读写优化方法
CN106302702B (zh) * 2016-08-10 2020-03-20 华为技术有限公司 数据的分片存储方法、装置及***
CN109327539A (zh) * 2018-11-15 2019-02-12 上海天玑数据技术有限公司 一种分布式块存储***及其数据路由方法
CN112965945A (zh) * 2019-12-13 2021-06-15 阿里巴巴集团控股有限公司 数据存储方法、装置、电子设备及计算机可读介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106936899A (zh) * 2017-02-25 2017-07-07 九次方大数据信息集团有限公司 分布式统计分析***的配置方法及分布式统计分析***

Also Published As

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

Similar Documents

Publication Publication Date Title
CN113268472B (zh) 一种分布式数据存储***及方法
US10831720B2 (en) Cloud storage distributed file system
EP3127018B1 (en) Geographically-distributed file system using coordinated namespace replication
EP3803618B1 (en) Distributed transactions in cloud storage with hierarchical namespace
US20190370362A1 (en) Multi-protocol cloud storage for big data and analytics
EP3811596B1 (en) Hierarchical namespace with strong consistency and horizontal scalability
EP2498476B1 (en) Massively scalable object storage system
EP2521336B1 (en) Massively scalable object storage system
US11647075B2 (en) Commissioning and decommissioning metadata nodes in a running distributed data storage system
CN105814544B (zh) 用于支持分布式数据网格中的持久化分区恢复的***和方法
EP2996308A1 (en) Massively scalable object storage system
US9201747B2 (en) Real time database system
CN105493474B (zh) 用于支持用于同步分布式数据网格中的数据的分区级别日志的***及方法
JP5686034B2 (ja) クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム
US10936224B1 (en) Cluster controller selection for shared storage clusters
CN102117287A (zh) 分布式文件***访问方法、元数据服务器及客户端
CN115599747B (zh) 一种分布式存储***的元数据同步方法、***及设备
CN104750757B (zh) 一种基于HBase的数据存储方法和设备
CN111049928A (zh) 数据同步方法、***、电子设备及计算机可读存储介质
CN114385561A (zh) 文件管理方法和装置及hdfs***
CN116400855A (zh) 一种数据处理方法和数据存储***
US11537619B1 (en) Replica group modification in a distributed database
US11194501B2 (en) Standby copies withstand cascading fails
CN115087966A (zh) 一种数据恢复方法、装置、设备、介质及程序产品
US11216204B2 (en) Degraded redundant metadata, DRuM, technique

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