CN113190619A - 分布式kv数据库的数据读写方法、系统、设备和介质 - Google Patents
分布式kv数据库的数据读写方法、系统、设备和介质 Download PDFInfo
- Publication number
- CN113190619A CN113190619A CN202110475497.2A CN202110475497A CN113190619A CN 113190619 A CN113190619 A CN 113190619A CN 202110475497 A CN202110475497 A CN 202110475497A CN 113190619 A CN113190619 A CN 113190619A
- Authority
- CN
- China
- Prior art keywords
- database
- data
- distributed file
- distributed
- slave
- 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
Images
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
-
- 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
Abstract
本发明涉及数据库技术领域,特别涉及分布式KV数据库的数据读写方法、系统、设备和介质。方法包括:接收用户的写入请求,通过主数据库,将相应数据写入远程的分布式文件系统;接收用户的读出请求,根据数据库服务压力情况,从主数据库和至少一个从数据库中选取一个数据库,当选取的数据库为主数据库时,从分布式文件系统读出相应数据,当选取的数据库为从数据库时,从分布式文件系统中,读取该数据的一个副本,同时查询该数据的其它所有副本的长度,如果该数据的预定数量的副本的长度一致,则将该数据判定为有效数据并读出,否则将该数据判定为异常数据而不读出。使得RocksDB数据库具有高可用性、高可靠性、性能的动态可扩性、容量的动态可扩性。
Description
技术领域
本发明涉及数据库技术领域,特别涉及分布式KV数据库的数据读写方法、系统、设备和介质。
背景技术
数据块,特别是RocksDB数据库单机实例KV(Key-Value,键-值)数据库,具备优越的性能,但是在容量扩展和服务故障方面并没有很好的解决方案。业内在解决RocksDB可靠性的方法是使用RocksDB内部的备份机制,然后使用Binlog追加方式进行实时备份,属于冷备模式。在解决RocksDB的扩容的问题时,通常加入新的节点,然后将旧节点上的数据迁移到新节点上。在解决RocksDB可用性上,只能在同一台节点机器启动主从节点,当节点机器出现故障,无法提供服务。
现有RocksDB数据库,在扩展性和可用性主要缺陷如下:1)已有开源的RocksDB数据库只支持单机模式,可用性差,单机发生故障后,服务大概率不可用。2)RocksDB的数据文件使用单备份的模式,磁盘故障后,数据丢失风险极大。提供的Binlog备份机制属于冷备模式,故障后需要人工介入恢复数据。3)RocksDB初始化后,总容量受限于RocksDB存放目录的磁盘大小,容量无法进行动态扩展,需要通过迁移旧数据方式进行数据迁移。
发明内容
本发明的目的在于提供分布式KV数据库的数据读写方法、系统、设备和介质,解决现有数据块,特别是RocksDB数据库在可用性、可靠性、性能的可扩性、容量的可扩性等方面的缺陷问题。
本发明的实施方式公开了一种分布式KV数据库的数据读写方法,包括:
接收用户的写入请求,通过主数据库,将相应数据写入远程的分布式文件系统;
接收用户的读出请求,根据数据库服务压力情况,从主数据库和至少一个从数据库中选取一个数据库,当选取的数据库为主数据库时,从分布式文件系统读出相应数据,当选取的数据库为从数据库时,从分布式文件系统中,读取该数据的一个副本,同时查询该数据的其它所有副本的长度,如果该数据的预定数量的副本的长度一致,则将该数据判定为有效数据并读出,否则将该数据判定为异常数据而不读出。
可选地,分布式文件系统包括:
多个数据块服务,每个数据块服务对应一个物理存储器,在数据块服务中,数据以数据块的形式存储,每个数据的多个副本分别存储于多个数据块服务;
元数据服务,用于存放多个数据块服务中的数据的元数据信息,该元数据信息包括数据的数据块信息;
客户端服务,客户端服务包括Crush(Controlled Replication Under ScalableHashing)算法和存储引擎,用于在数据库通过客户端服务进行数据读写时,从元数据服务获取数据块信息,以确定该数据块位于哪个数据块服务;
可选地,每个数据库启动时,都作为从数据库启动,当没有主数据库或主数据库故障时,根据从数据库的注册成为主数据库的请求,确定一个从数据库成为新的主数据库。
可选地,对从数据库的注册成为主数据库的请求的响应包括:
响应于该从数据库注册分布式协调系统的节点的请求,根据预定条件确定是否注册成功;
如果注册成功,响应于该从数据库获取分布式文件锁的请求,将分布式文件锁分配给该从数据库,该从数据库成为新的主数据库,其中,分布式文件锁只有一个;
如果注册不成功,该从数据库保持从数据库身份不变。
可选地,响应于从数据库获取分布式文件锁的请求,将分布式文件锁分配给从数据库包括:
响应于该从数据库获取分布式文件锁的请求,如果当时分布式文件锁为其他数据库所有,则从其他数据库处释放分布式文件锁,然后将释放出来的分布式文件锁分配给请求分布式文件锁的该从数据库。
可选地,还包括,当主数据库不能够进行追加写操作的情况下,从其他数据库处释放分布式文件锁,然后将释放出来的分布式文件锁分配给该主数据库;
当该主数据库失去分布式协调系统的节点时,从该主数据库处释放分布式文件锁,并且该主数据库转变为从数据库。
可选地,数据块包括正常状态和封闭状态,当处于正常状态时,数据块可以被写入和读取,当处于封闭状态时,数据块可以被读取而不能被写入。
可选地,释放分布式文件锁包括:
通过将分布式文件锁正在操作的数据块设置为封闭状态,使得拥有分布式文件锁的数据库因写入数据失败而失去分布式文件锁。
可选地,数据库为RocksDB。
可选地,数据库使用RDMA或TCP网络通信,使用SPDK或libio磁盘读写模式。
本发明的实施方式公开了一种分布式KV数据库的数据读写系统,包括数据库模块和远程分布式存储模块;
数据库模块接收用户的写入请求,通过主数据库,将相应数据写入远程分布式存储模块;
数据库模块接收用户的读出请求,根据数据库服务压力情况,从主数据库和至少一个从数据库中选取一个数据库,当选取的数据库为主数据库时,从远程分布式存储模块读出相应数据,当选取的数据库为从数据库时,从远程分布式存储模块中,读取该数据的一个副本,同时查询该数据的其它所有副本的长度,如果该数据的预定数量的副本的长度一致,则将该数据判定为有效数据并读出,否则将该数据判定为异常数据而不读出。
本发明的实施方式公开了一种分布式KV数据库的数据读写设备,该设备包括存储有计算机可执行指令的存储器和处理器,当该指令被该处理器执行时,使得该设备实施分布式KV数据库的数据读写方法。
本发明的实施方式公开了一种计算机存储介质,在该计算机存储介质上存储有指令,当该指令在计算机上运行时,使得该计算机执行分布式KV数据库的数据读写方法。
本发明实施方式与现有技术相比,主要区别及其效果在于:
在本发明中,文件存储在远程的分布式文件系统中,具有较高的可靠性和容量扩展性。计算(数据库)与存储(分布式文件系统)分离,能够对服务实例及其容量进行弹性的增加与删除,存储容量无需提前分配,降低成本。
在本发明中,通过一个主数据库进行数据的读写操作,以及通过至少一个从数据库进行数据的读操作,通过主从模式提高数据库的可用性,同时读写分离,从数据库可以按照业务需求进行实例扩展,实现性能的动态扩容。
在本发明中,从数据库读出数据时,读取该数据的一个副本,同时查询该数据的其它所有副本的长度,如果该数据的预定数量的副本的长度一致,则将该数据判定为有效数据并读出,否则将该数据判定为异常数据而不读出;保证从数据库读出的数据与主数据库写入的数据一致,即实现主从一致性,同时支持了从数据库的水平实例扩展,即在业务需要时可以增加从数据库实例,实现读性能的水平扩展。
在本发明中,分布式文件系统包括:多个数据块服务,每个数据块服务对应一个物理存储器,在数据块服务中,数据以数据块的形式存储,每个数据的多个副本分别存储于多个数据块服务;提高数据的可靠性。
在本发明中,分布式文件系统包括:客户端服务,客户端服务包括Crush算法和存储引擎;能够实现容量的动态扩容与数据冗余备份,提升数据存储的扩展性和可靠性。
在本发明中,每个数据库启动时,都作为从数据库启动,当没有主数据库或主数据库故障时,根据从数据库的注册成为主数据库的请求,确定一个从数据库成为新的主数据库;当主数据库发生故障时,从数据库能够通过抢主成为新的主数据库,提高整体服务的可用性。
在本发明中,响应于该从数据库注册分布式协调系统的节点的请求,根据预定条件确定是否注册成功;如果注册成功,响应于该从数据库获取分布式文件锁的请求,将分布式文件锁分配给该从数据库,该从数据库成为新的主数据库,其中,分布式文件锁只有一个;如果注册不成功,该从数据库保持从数据库身份不变。从数据库需要同时满足成功注册分布式协调系统的节点与取得分布式文件锁两个条件才能升为主数据库,保证主数据库的唯一性,防止数据库的数据混乱。
在本发明中,响应于该从数据库获取分布式文件锁的请求,如果当时分布式文件锁为其他数据库所有,则从其他数据库处释放分布式文件锁,然后将释放出来的分布式文件锁分配给请求分布式文件锁的该从数据库;通过分布式文件锁的唯一性保证主数据库的唯一性,防止数据库的数据混乱。
在本发明中,当主数据库不能够进行追加写操作的情况下,从其他数据库处释放分布式文件锁,然后将释放出来的分布式文件锁分配给该主数据库;当该主数据库失去分布式协调系统的节点时,从该主数据库处释放分布式文件锁,并且该主数据库转变为从数据库;只有在主数据库失去分布式协调系统上的注册节点时才会触发失主逻辑,降低分布式文件系统的抖动影响。
在本发明中,数据块包括正常状态和封闭状态,当处于正常状态时,数据块可以被写入和读取,当处于封闭状态时,数据块可以被读取而不能被写入;可以方便设计分布式文件锁。
在本发明中,释放分布式文件锁包括:通过将分布式文件锁正在操作的数据块设置为封闭状态,使得拥有分布式文件锁的数据库因写入数据失败而失去分布式文件锁;实现了分布式文件锁的管理。
在本发明中,数据库为RocksDB数据库;与本发明的其他技术特征相配合,使得RocksDB数据库具有高可用性、高可靠性、性能的动态可扩性、容量的动态可扩性。
在本发明中,数据库使用RDMA或TCP网络通信,使用SPDK或libio磁盘读写模式;系统提供配置项,能够灵活的选择集群通信模式和磁盘读写模式,实现IO提速,降低RocksDB与分布式文件系统中之间的网络延迟,实现与本地存储相当的性能。
附图说明
图1示出根据本发明的实施例的数据库和分布式文件系统的结构示意图。
图2示出根据本发明的实施例的分布式KV数据库的数据读写方法的流程图。
图3示出一个数据库从启动到作为主数据库提供服务的示例过程的流程图。
图4示出根据本发明的实施例的从数据库注册成为主数据库的流程图。
图5示出根据本发明的实施例的从数据库同步文件元数据的过程示意图。
图6示出根据本发明的实施例的从数据库同步实时日志文件的过程示意图。
图7示出根据本发明的实施例的分布式KV数据库的数据读写系统的框图。
具体实施方式
下面结合具体实施例和附图对本申请做进一步说明。可以理解的是,此处描述的具体实施例仅仅是为了解释本申请,而非对本申请的限定。此外,为了便于描述,附图中仅示出了与本申请相关的部分而非全部的结构或过程。应注意的是,在本说明书中,相似的标号和字母在下面的附图中表示类似项。
应当理解的是,虽然在本文中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了进行区分,而不能理解为指示或暗示相对重要性。举例来说,在不背离示例性实施例的范围的情况下,第一特征可以被称为第二特征,并且类似地第二特征可以被称为第一特征。
在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本实施例中的具体含义。
本申请的说明性实施例包括但不限于分布式KV数据库的数据读写方法、系统、设备和介质。
将使用本领域技术人员通常采用的术语来描述说明性实施例的各个方面,以将他们工作的实质传达给本领域其他技术人员。然而,对于本领域技术人员来说,使用部分所描述的特征来施行一些替代性实施例是显而易见的。出于解释的目的,阐述了具体的数字和配置,以便对说明性实施例进行更加透彻的理解。然而,对于本领域技术人员来说显而易见的是,可以在没有具体细节的情况下实施替代实施例。在一些其他情况下,本文省略或简化了一些众所周知的特征,以避免使本申请的说明性实施例模糊不清。
此外,各种操作将以最有助于理解说明性实施例的方式被描述为多个彼此分离的操作;然而,描述的顺序不应被解释为暗示这些操作必须依赖描述的顺序,其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序也可以被重新安排。当所描述的操作完成时,所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
说明书中对“一个实施例”、“实施例”、“说明性实施例”等的引用表示所描述的实施例可以包括特定特征、结构或性质,但是每个实施例也可能或不是必需包括特定的特征、结构或性质。而且,这些短语不一定是针对同一实施例。此外,当结合具体实施例描述特定特征,本领域技术人员的知识能够影响到这些特征与其他实施例的结合,无论这些实施例是否被明确描述。
除非上下文另有规定,否则术语“包含”、“具有”和“包括”是同义词。短语“A和/或B”表示“(A)、(B)或(A和B)”。
如本文所使用的,术语“模块”可以指代,作为其中的一部分,或者包括:用于运行一个或多个软件或固件程序的存储器(共享、专用或组)、专用集成电路(ASIC)、电子电路和/或处理器(共享、专用或组)、组合逻辑电路、和/或提供所述功能的其他合适组件。
在附图中,可能以特定布置和/或顺序示出了一些结构或方法特征。然而,应当理解的是,这样的特定布置和/或排序不是必需的。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来进行说明。另外,特定附图中所包含得结构或方法特征并不意味着所有实施例都需要包含这样的特征,在一些实施例中,可以不包含这些特征或者可以与将这些特征与其他特征进行组合。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
图1示出根据本发明的实施例的数据库和分布式文件系统的结构示意图。
如图1所示,数据库和分布式文件系统包括:
主数据库102、从数据库104……、分布式文件系统106,该分布式文件系统106包括数据块服务108、110、112……元数据服务114,该数据块服务108包括数据块108a……,数据块服务112包括数据块112a……。
图2示出根据本发明的实施例的分布式KV数据库的数据读写方法的流程图。
如图2所示,方法200包括:
步骤202,接收用户的读写请求;
步骤204,判断该数据读写请求是写入请求还是读出请求;
如果是写入请求,则在步骤206,通过主数据库,将相应数据写入远程的分布式文件系统;
如果是读出请求,则在步骤208,根据数据库服务压力情况,从主数据库和至少一个从数据库中选取一个数据库;
然后在步骤210,判断选取的数据库是主数据库还会从数据库;
当选取的数据库为主数据库时,在步骤212,从分布式文件系统读出相应数据;
当选取的数据库为从数据库时,在步骤214,从分布式文件系统中,读取该数据的一个副本,同时查询该数据的其它所有副本的长度;
然后在步骤216,判断是否有该数据的预定数量的副本的长度一致;
如果该数据的预定数量的副本的长度一致,则在步骤218,将该数据判定为有效数据并读出;
否则在步骤220,将该数据判定为异常数据而不读出。
另外,为了最大可能的增强数据同步的时效性,减少数据不一致的时间,在异常情况下也能够读出已经落地的数据
结合图1,例如,接收到用户的写入请求后,通过主数据库(例如,RocksDB数据库)102,经由分布式文件系统106的相应SKD(Software Development Kit,软件开发工具包),将相应数据的多个副本分别写入远程的分布式文件系统106的数据块服务108的数据块108a、数据块服务112的数据块112a以及其他数据块服务的数据块;
接收用户的读出请求后,根据数据库服务压力情况,从主数据库102和至少一个从数据库104等中选取一个数据库,当选取的数据库为主数据库102时,从分布式文件系统106读出相应数据,当选取的数据库为从数据库(例如,从数据库104)时,经由分布式文件系统106的TailRead(追加读)接口,从分布式文件系统106中,通过追加读,即,读取该数据的一个副本(例如,数据块108a中的副本),同时查询该数据的其它所有副本(例如,数据块112a中的副本等)的长度,如果该数据的预定数量的副本的长度一致,则将该数据判定为有效数据并读出,否则将该数据判定为异常数据而不读出。
在本发明中,文件存储在远程的分布式文件系统中,具有较高的可靠性和容量扩展性。计算(数据库)与存储(分布式文件系统)分离,能够对服务实例及其容量进行弹性的增加与删除,存储容量无需提前分配,降低成本。
在本发明中,通过一个主数据库进行数据的读写操作,以及通过至少一个从数据库进行数据的读操作,通过主从模式提高数据库的可用性,同时读写分离,从数据库可以按照业务需求进行实例扩展,实现性能的动态扩容。
在本发明中,从数据库读出数据时,读取该数据的一个副本,同时查询该数据的其它所有副本的长度,如果该数据的预定数量的副本的长度一致,则将该数据判定为有效数据并读出,否则将该数据判定为异常数据而不读出;保证从数据库读出的数据与主数据库写入的数据一致,即实现主从一致性,同时支持了从数据库的水平实例扩展,即在业务需要时可以增加从数据库实例,实现读性能的水平扩展。
根据本申请的一些实施例,分布式文件系统包括:
多个数据块服务,每个数据块服务对应一个物理存储器,在数据块服务中,数据以数据块的形式存储,每个数据的多个副本分别存储于多个数据块服务;
元数据服务,用于存放多个数据块服务中的数据的元数据信息,该元数据信息包括数据的数据块信息;
客户端服务,客户端服务包括Crush算法和存储引擎,用于在数据库通过客户端服务进行数据读写时,从元数据服务获取数据块信息,以确定该数据块位于哪个数据块服务;
其中,元数据信息还包括文件大小、文件基本信息等,同时,元数据服务还能够产生数据迁移和异常副本数据恢复工作的任务。数据块服务还需要完成数据恢复工作,维护数据块的状态。
结合图1,例如,数据的多个副本存储在数据块服务108的数据块108a、数据块服务112的数据块112a以及其他数据块服务的数据块中。主数据库102通过客户端服务(图中未示出)的文件POSIX操作接口的SDK对该数据进行读写时,客户端服务通过Crush算法和存储引擎一次性的从元数据服务114获取该数据相应的数据块信息信息,计算数据块位于哪个数据块服务,例如,确定该数据的一个副本位于数据块服务108的数据块108a。
在本发明中,分布式文件系统包括:多个数据块服务,每个数据块服务对应一个物理存储器,在数据块服务中,数据以数据块的形式存储,每个数据的多个副本分别存储于多个数据块服务;提高数据的可靠性。
在本发明中,分布式文件系统包括:客户端服务,客户端服务包括Crush算法和存储引擎,用于在数据库通过客户端服务进行数据读写时,从元数据服务获取数据块信息,以确定该数据块位于哪个数据块服务;降低元数据服务节点的压力,帮助实现容量的动态扩容与数据冗余备份,提升数据存储的扩展性和可靠性。
根据本申请的一些实施例,每个数据库启动时,都作为从数据库启动,当没有主数据库或主数据库故障时,根据从数据库的注册成为主数据库的请求,确定一个从数据库成为新的主数据库。
例如,图3示出了一个数据库从启动到作为主数据库提供服务的示例过程的流程图,如图3所示,在步骤302,该数据库作为从数据库启动,然后在步骤304,加载从数据库的配置文件,之后在步骤306,作为从数据库向外提供服务,在需要的时候(例如,在整个系统没有没有主数据库时、在原主数据库发生故障时或在其他合适的情形时),在步骤308,该从数据库申请注册成为主数据库,注册成功后成为主数据库,之后在步骤310,加载主数据库的配置文件,在步骤312,就作为主数据库向外提供服务。
其中,可以但不限于在没有主数据库或主数据库故障时,使得从数据库发起注册为主数据库的请求,根据预定条件,使一个从数据库成为主数据库,例如,在收到多个从数据库申请注册成为主数据库的请求后,选取最先请求的从数据库成为主数据库,并使原主数据库变成从数据库。
在本发明中,当主数据库发生故障时,从数据库能够通过抢主成为新的主数据库,提高整体服务的可用性。
根据本申请的一些实施例,对从数据库的注册成为主数据库的请求的响应包括:
响应于该从数据库注册分布式协调系统(Zookeeper)的节点的请求,根据预定条件确定是否注册成功;
如果注册成功,响应于该从数据库获取分布式文件锁的请求,将分布式文件锁分配给该从数据库,该从数据库成为新的主数据库,其中,分布式文件锁只有一个;
如果注册不成功,该从数据库保持从数据库身份不变。
在本发明中,从数据库需要同时满足成功注册分布式协调系统的节点与取得分布式文件锁两个条件才能升为主数据库,保证主数据库的唯一性,防止数据库的数据混乱。
根据本申请的一些实施例,响应于从数据库获取分布式文件锁的请求,将分布式文件锁分配给从数据库包括:
响应于该从数据库获取分布式文件锁的请求,如果当时分布式文件锁为其他数据库所有,则从其他数据库处释放分布式文件锁,然后将释放出来的分布式文件锁分配给请求分布式文件锁的该从数据库。
在本发明中,通过分布式文件锁的唯一性保证主数据库的唯一性,防止数据库的数据混乱。
根据本申请的一些实施例,当主数据库不能够进行追加写操作的情况下,从其他数据库处释放分布式文件锁,然后将释放出来的分布式文件锁分配给该主数据库;
当该主数据库失去分布式协调系统的节点时,从该主数据库处释放分布式文件锁,并且该主数据库转变为从数据库。
例如,主数据库实时地进行追加写操作,能够成功追加写操作,说明没有失去分布式文件锁,如果不能够进行追加写操作说明失去了分布式文件锁,此时就从其他数据库处释放分布式文件锁,然后将释放出来的分布式文件锁分配给该主数据库。在主数据库失去分布式协调系统的节点时(例如,分布式协调系统的节点被其他数据库注册了),从该主数据库处释放分布式文件锁,使得它的分布式文件锁可以被分配给新注册到分布式协调系统的节点的数据块,并且将该原主数据库转变为从数据库。
在本发明中,只有在主数据库失去分布式协调系统上的注册节点时才会触发失主逻辑,降低分布式文件系统的抖动影响。
根据本申请的一些实施例,数据块包括正常状态和封闭状态,当处于正常状态时,数据块可以被写入和读取,当处于封闭状态时,数据块可以被读取而不能被写入。
在本发明中,数据块的两种状态的设计可以方便设计分布式文件锁。
根据本申请的一些实施例,释放分布式文件锁包括:
通过将分布式文件锁正在操作的数据块设置为封闭状态,使得拥有分布式文件锁的数据库因写入数据失败而失去分布式文件锁。
例如,图4示出根据本发明的实施例的从数据库注册成为主数据库的流程图。
如图4所示,在步骤402,接收该从数据库注册分布式协调系统的节点的请求;
然后在步骤404,根据预定条件确定是否注册成功;
如果注册不成功,在步骤406,该从数据库保持从数据库身份不变。
如果注册成功,在步骤408,接收该从数据库获取分布式文件锁的请求,然后在步骤410,判断分布式文件锁是否为其他数据库所有,如果当时分布式文件锁为其他数据库所有,则在步骤412,通过将分布式文件锁正在操作的数据块设置为封闭状态,使得拥有分布式文件锁的数据库因写入数据失败而失去分布式文件锁,从而从其他数据库处释放分布式文件锁,然后在步骤414,将释放出来的分布式文件锁分配给请求分布式文件锁的该从数据库,否则,在步骤414,直接将分布式文件锁分配给该从数据库,在步骤416,使得该从数据库成为新的主数据库,
在本发明中,通过改变数据块的状态,方便地实现了分布式文件锁的管理,从数据库需要同时满足成功注册分布式协调系统的节点与取得分布式文件锁两个条件才能升为主数据库,其中,又通过分布式文件锁的唯一性保证主数据库的唯一性,防止数据库的数据混乱。
根据本申请的一些实施例,数据库为RocksDB。
通过修改RocksDB中的底层文件接口模块,可以适配分布式文件系统的SDK,将RocksDB中的SST文件、MAINFEST文件、WAL文件、CURRENT文件等写到远程分布式文件系统中。四种主要的文件的作用分别如下:SST文件记录了压缩的数据信息;MAINFEST文件记录SST文件元数据信息操作信息、如增加和删除SST文件;WAL文件记录当前追加的数据;CURRENT文件记录当前的MAINFEST文件信息,其中,从数据库通过TailRead同步的文件包括MAINFEST文件、WAL文件、CURRENT文件三种文件。
从数据库同步文件元数据的过程如图5所示,包括:
步骤502,主数据库将MAINFEST文件元信息写入CURRENT文件;
步骤504,从数据库读取CURRENT文件;
步骤506,从数据库打开MAINFEST文件;
步骤508,主数据库写入MAINFEST文件;
步骤510,从数据库使用TailRead追加读的方式同步读取MAINFEST文件;
步骤512,从数据库从MAINFEST文件中获取SST文件操作日志应用到内存中;
步骤514,判断主数据库是否切换MAINFEST文件,将新的MAINFEST文件写入CURRENT文件?如果是,重复步骤504-514,如果否,结束流程。
从数据库同步实时日志文件的过程如图6所示,包括:
步骤602,主数据库写入WAL文件;
步骤604,从数据库LIST请求获取当前最新的WAL文件;
步骤606,从数据库将WAL数据应用到自身的内存memtable中;
步骤608,判断主数据库是否产生新的WAL文件,删除旧的WAL文件,如果是,重复步骤602-608,如果否,结束流程。
在本发明中,数据库为RocksDB数据库,RocksDB数据库是具备优越的性能的单机实例KV数据库,但是在容量扩展和服务故障方面并没有很好的解决方案,在与本发明的其他技术特征相配合下,使得RocksDB数据库具有优越的性能的同时,具有高可用性、高可靠性、性能的动态可扩性、容量的动态可扩性。
根据本申请的一些实施例,数据库使用RDMA或TCP网络通信,使用SPDK或libio磁盘读写模式。
在本发明中,系统提供配置项,能够灵活的选择集群通信模式和磁盘读写模式,实现IO提速,降低RocksDB与分布式文件系统中之间的网络延迟,实现与本地存储相当的性能,降低从数据库同步数据的延迟,将延迟时间控制在毫秒级别。
图7示出根据本发明的实施例的分布式KV数据库的数据读写系统的框图。
如图7所示,系统700包括数据库模块702和远程分布式存储模块704;
数据库模块702接收用户的写入请求,通过主数据库,将相应数据写入远程分布式存储模块704;
数据库模块702接收用户的读出请求,根据数据库服务压力情况,从主数据库和至少一个从数据库中选取一个数据库,当选取的数据库为主数据库时,从远程分布式存储模块704读出相应数据,当选取的数据库为从数据库时,从远程分布式存储模块704中,读取该数据的一个副本,同时查询该数据的其它所有副本的长度,如果该数据的预定数量的副本的长度一致,则将该数据判定为有效数据并读出,否则将该数据判定为异常数据而不读出。
第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
本发明的实施方式公开了一种分布式KV数据库的数据读写设备,该设备包括存储有计算机可执行指令的存储器和处理器,当该指令被该处理器执行时,使得该设备实施分布式KV数据库的数据读写方法。
第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
本发明的实施方式公开了一种计算机存储介质,在该计算机存储介质上存储有指令,当该指令在计算机上运行时,使得该计算机执行分布式KV数据库的数据读写方法。
第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合形式来实现。所公开的实施例还可以以承载或储存在一个或多个瞬态或非瞬态的机器可读(例如,计算机可读)存储介质上的指令或程序形式实现,其可以由一个或多个处理器等读取和执行。当指令或程序被机器运行时,机器可以执行前述的各种方法。例如,指令可以通过网络或其他计算机可读介质分发。因此,机器可读介质可以包括但不限于,用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,例如,软盘,光盘,光盘只读存储器(CD-ROMs),磁光盘,只读存储器(ROM),随机存取存储器(RAM),可擦除可编程只读存储器(EPROM),电子式可清除程序化只读存储器(EEPROM),磁卡或光卡,或者用于通过电、光、声或其他形式信号(例如,载波、红外信号、数字信号等)传输网络信息的闪存或有形的机器可读存储器。因此,机器可读介质包括任何形式的适合于存储或传输电子指令或机器(例如,计算机)可读信息的机器可读介质。
上面结合附图对本申请的实施例做了详细说明,但本申请技术方案的使用不仅仅局限于本专利实施例中提及的各种应用,各种结构和变型都可以参考本申请技术方案轻易地实施,以达到本文中提及的各种有益效果。在本领域普通技术人员所具备的知识范围内,在不脱离本申请宗旨的前提下做出的各种变化,均应归属于本申请专利涵盖范围。
Claims (13)
1.一种分布式KV数据库的数据读写方法,其特征在于,包括:
接收用户的写入请求,通过主数据库,将相应数据写入远程的分布式文件系统;
接收用户的读出请求,根据数据库服务压力情况,从所述主数据库和至少一个从数据库中选取一个数据库,当选取的所述数据库为所述主数据库时,从所述分布式文件系统读出相应数据,当选取的所述数据库为所述从数据库时,从所述分布式文件系统中,读取所述数据的一个副本,同时查询所述数据的其它所有副本的长度,如果所述数据的预定数量的副本的长度一致,则将所述数据判定为有效数据并读出,否则将所述数据判定为异常数据而不读出。
2.根据权利要求1所述的方法,其特征在于,所述分布式文件系统包括:
多个数据块服务,每个所述数据块服务对应一个物理存储器,在所述数据块服务中,数据以数据块的形式存储,每个数据的多个副本分别存储于多个所述数据块服务;
元数据服务,用于存放所述多个数据块服务中的数据的元数据信息,所述元数据信息包括数据的数据块信息;
客户端服务,所述客户端服务包括Crush算法和存储引擎,用于在所述数据库通过所述客户端服务进行数据读写时,从所述元数据服务获取所述数据块信息,以确定所述数据块位于哪个所述数据块服务。
3.根据权利要求1所述的方法,其特征在于,每个所述数据库启动时,都作为所述从数据库启动,当没有所述主数据库或所述主数据库故障时,根据所述从数据库的注册成为所述主数据库的请求,确定一个所述从数据库成为新的所述主数据库。
4.根据权利要求3所述的方法,其特征在于,对所述从数据库的注册成为所述主数据库的请求的响应包括:
响应于所述从数据库注册分布式协调系统的节点的请求,根据预定条件确定是否注册成功;
如果注册成功,响应于所述从数据库获取分布式文件锁的请求,将所述分布式文件锁分配给所述从数据库,所述从数据库成为新的所述主数据库,其中,所述分布式文件锁只有一个;
如果注册不成功,所述从数据库保持从数据库身份不变。
5.根据权利要求4所述的方法,其特征在于,所述响应于所述从数据库获取分布式文件锁的请求,将所述分布式文件锁分配给所述从数据库包括:
响应于所述从数据库获取分布式文件锁的请求,如果当时所述分布式文件锁为其他所述数据库所有,则从所述其他数据库处释放所述分布式文件锁,然后将释放出来的所述分布式文件锁分配给请求所述分布式文件锁的所述从数据库。
6.根据权利要求4所述的方法,其特征在于,还包括,当所述主数据库不能够进行追加写操作的情况下,从其他数据库处释放所述分布式文件锁,然后将释放出来的所述分布式文件锁分配给所述主数据库;
当所述主数据库失去所述分布式协调系统的节点时,从所述主数据库处释放所述分布式文件锁,并且所述主数据库转变为所述从数据库。
7.根据权利要求5或6所述的方法,其特征在于,所述数据块包括正常状态和封闭状态,当处于所述正常状态时,所述数据块可以被写入和读取,当处于所述封闭状态时,所述数据块可以被读取而不能被写入。
8.根据权利要求7所述的方法,其特征在于,所述释放所述分布式文件锁包括:
通过将所述分布式文件锁正在操作的所述数据块设置为所述封闭状态,使得拥有所述分布式文件锁的所述数据库因写入数据失败而失去所述分布式文件锁。
9.根据权利要求1所述的方法,其特征在于,所述数据库为RocksDB。
10.根据权利要求9所述的方法,其特征在于,所述数据库使用RDMA或TCP网络通信,使用SPDK或libio磁盘读写模式。
11.一种分布式KV数据库的数据读写系统,其特征在于,所述系统包括数据库模块和远程分布式存储模块;
所述数据库模块接收用户的写入请求,通过主数据库,将相应数据写入远程分布式存储模块;
所述数据库模块接收用户的读出请求,根据数据库服务压力情况,从所述主数据库和至少一个从数据库中选取一个数据库,当选取的所述数据库为所述主数据库时,从所述远程分布式存储模块读出相应数据,当选取的所述数据库为所述从数据库时,从所述远程分布式存储模块中,读取所述数据的一个副本,同时查询所述数据的其它所有副本的长度,如果所述数据的预定数量的副本的长度一致,则将所述数据判定为有效数据并读出,否则将所述数据判定为异常数据而不读出。
12.一种分布式KV数据库的数据读写设备,其特征在于,所述设备包括存储有计算机可执行指令的存储器和处理器,当所述指令被所述处理器执行时,使得所述设备实施根据权利要求1-10中任一项所述的分布式KV数据库的数据读写方法。
13.一种计算机存储介质,其特征在于,在所述计算机存储介质上存储有指令,当所述指令在计算机上运行时,使得所述计算机执行根据权利要求1-10中任一项所述的分布式KV数据库的数据读写方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110475497.2A CN113190619B (zh) | 2021-04-29 | 2021-04-29 | 分布式kv数据库的数据读写方法、系统、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110475497.2A CN113190619B (zh) | 2021-04-29 | 2021-04-29 | 分布式kv数据库的数据读写方法、系统、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113190619A true CN113190619A (zh) | 2021-07-30 |
CN113190619B CN113190619B (zh) | 2022-12-27 |
Family
ID=76980748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110475497.2A Active CN113190619B (zh) | 2021-04-29 | 2021-04-29 | 分布式kv数据库的数据读写方法、系统、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113190619B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138200A (zh) * | 2021-12-01 | 2022-03-04 | 浪潮云信息技术股份公司 | 一种基于RocksDB的预写日志方法及系统 |
CN114780021A (zh) * | 2022-03-25 | 2022-07-22 | 北京百度网讯科技有限公司 | 副本修复方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150149635A1 (en) * | 2013-11-27 | 2015-05-28 | Avi Networks | Method and system for distributed load balancing |
WO2016026306A1 (zh) * | 2014-08-22 | 2016-02-25 | 中兴通讯股份有限公司 | 一种数据备份方法、系统、节点及计算机存储介质 |
CN110781214A (zh) * | 2019-09-26 | 2020-02-11 | 金蝶软件(中国)有限公司 | 数据库读写方法、装置、计算机设备和存储介质 |
CN111459677A (zh) * | 2020-04-01 | 2020-07-28 | 北京顺达同行科技有限公司 | 请求分配方法、装置、计算机设备和存储介质 |
-
2021
- 2021-04-29 CN CN202110475497.2A patent/CN113190619B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150149635A1 (en) * | 2013-11-27 | 2015-05-28 | Avi Networks | Method and system for distributed load balancing |
WO2016026306A1 (zh) * | 2014-08-22 | 2016-02-25 | 中兴通讯股份有限公司 | 一种数据备份方法、系统、节点及计算机存储介质 |
CN110781214A (zh) * | 2019-09-26 | 2020-02-11 | 金蝶软件(中国)有限公司 | 数据库读写方法、装置、计算机设备和存储介质 |
CN111459677A (zh) * | 2020-04-01 | 2020-07-28 | 北京顺达同行科技有限公司 | 请求分配方法、装置、计算机设备和存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138200A (zh) * | 2021-12-01 | 2022-03-04 | 浪潮云信息技术股份公司 | 一种基于RocksDB的预写日志方法及系统 |
CN114138200B (zh) * | 2021-12-01 | 2023-10-13 | 上海沄熹科技有限公司 | 一种基于RocksDB的预写日志方法及系统 |
CN114780021A (zh) * | 2022-03-25 | 2022-07-22 | 北京百度网讯科技有限公司 | 副本修复方法、装置、电子设备及存储介质 |
CN114780021B (zh) * | 2022-03-25 | 2022-11-29 | 北京百度网讯科技有限公司 | 副本修复方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113190619B (zh) | 2022-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542611B (zh) | 数据库即服务系统、数据库调度方法、设备及存储介质 | |
US10642694B2 (en) | Monitoring containers in a distributed computing system | |
CN113190619B (zh) | 分布式kv数据库的数据读写方法、系统、设备和介质 | |
CN110597910A (zh) | 一种异地数据同步方法、装置和系统 | |
CN108829720B (zh) | 数据处理方法及装置 | |
CN113268472B (zh) | 一种分布式数据存储系统及方法 | |
CN112632029B (zh) | 分布式存储系统的数据管理方法、装置及设备 | |
CN115599747B (zh) | 一种分布式存储系统的元数据同步方法、系统及设备 | |
EP3786802B1 (en) | Method and device for failover in hbase system | |
CN115277145B (zh) | 分布式存储访问授权管理方法、系统、设备和可读介质 | |
CN111444157B (zh) | 分布式文件系统及数据访问方法 | |
CN108777718B (zh) | 一种业务系统通过客户端访问读多写少系统的方法和装置 | |
CN111464603B (zh) | 一种服务器扩容方法及扩容系统 | |
CN114528255A (zh) | 元数据管理方法、电子设备及计算机程序产品 | |
CN116400855A (zh) | 一种数据处理方法和数据存储系统 | |
CN111291062A (zh) | 数据同步写入方法、装置、计算机设备及存储介质 | |
CN111651419B (zh) | 数据存储方法、装置及存储介质 | |
CN112532763A (zh) | 一种容器运行数据同步方法及装置 | |
CN116150160B (zh) | 数据库集群处理节点的调整方法、装置及存储介质 | |
CN110113217B (zh) | 微服务管理方法、装置、管理平台及存储介质 | |
CN107360245B (zh) | 一种基于租约锁机制的本地缓存方法及装置 | |
CN114443223A (zh) | 一种裸机磁盘管理方法、装置及介质 | |
CN113568749B (zh) | 基于Elasticsearch集群的shard分配方法 | |
CN115438021A (zh) | 一种数据库服务器的资源配置方法及装置 | |
CN114528260A (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 |