CN113157808B - 基于内存和轻量级数据库的配置文件同步***及方法 - Google Patents
基于内存和轻量级数据库的配置文件同步***及方法 Download PDFInfo
- Publication number
- CN113157808B CN113157808B CN202110460354.4A CN202110460354A CN113157808B CN 113157808 B CN113157808 B CN 113157808B CN 202110460354 A CN202110460354 A CN 202110460354A CN 113157808 B CN113157808 B CN 113157808B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- directory
- file
- cluster
- 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
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于内存和轻量级数据库的配置文件同步***及方法,涉及数据存储技术领域。本发明为多节点集群或分布式集群提供一种轻量、快速的配置文件同步***及方法,其通过对内存数据库、后端数据库和管理模块的合理设计,能够规避管理服务单节点故障、提升***管理性能和可靠性;简化节点加入步骤、降低节点加入难度。
Description
技术领域
本发明涉及数据存储技术领域,具体涉及一种基于内存和轻量级 数据库的配置文件同步***及方法。
背景技术
在基于本地存储的集群管理中,对集群所有节点的管控,一般通 过单个节点进行中心化的统一管理,集群的配置数据集中存储于管理 节点上,这种方式下管理节点的意外失效会导致整个集群管理失效。 在基于分布式存储的集群管理中,配置文件可以存储至分布式*** 内,但对于未初始化的分布式存储***而言,配置文件将无法在集群 内存储或共享,再者,基于分布式***进行配置文件存储,存储后端 量级过重、配置复杂,对于即将加入集群的新节点,必须预先安装完 整的分布式存储***,且经过分布式存储***的访问授权后,才能加 入集群,这显著延长了节点的加入时间,增加了节点的加入难度。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何解决基于本地存储中心化管理 出现的单节点故障,降低基于分布式存储进行配置同步所带来的节点 加入难度。
(二)技术方案
为了解决上述技术问题,本发明提供了一种基于内存和轻量级数 据库的配置文件同步***,该***布置在每个集群节点上,包含内存 数据库、后端数据库和管理模块;其中,所述内存数据库作为前端数 据临时存储位置,用于提供应用程序的数据响应;后端数据库用于提 供持久化数据存储能力;管理模块用于提供数据读写功能、节点通信 功能,以实现对后端数据库的读取和写入,以及在内存数据库中形成 一份完整的数据拷贝,以及保证集群目录数据状态的一致。
优选地,后端数据库以一个文件作为数据库,使用数据表作为文 件的逻辑存储体,数据表中的每一行作为一个文件或目录记录,且包 含如下字段:id字段表示数据项的ID,使用ID标识的数据具有唯一 性,该字段作为主键具有自增属性;inode字段表示文件的inode号, 对于每个文件或目录,管理模块都会为其分配一个inode号,用于标 识文件或目录;name字段表示文件或者文件夹的名称,由应用程序 指定、管理模块写入;type字段表示文件类型,该值的取值为0,1 或2,取值为0时,表示该文件或目录的数据结构刚初始化,未存储 数据,取值为1时,表示该项记录的内容为目录,取值为2时,表示 该项记录的内容为文件;parent字段表示该项记录的父目录,parent 的值存储父目录的inode号,若该项记录位于根目录,则parent字段 值为0;ctime字段表示该项记录下文件或目录的创建时间;mtime 字段表示该项记录下文件或目录的修改时间;version字段用于表示 该项记录下文件或目录的最新版本号,用于区分当前数据是否为最新 数据;data字段表示该项记录下的数据实体,若该项记录为文件,则 存储文件内容,若该项记录为目录,则字段存储内容为空;
后端数据库中,默认包含一个集群全局版本号文件,该集群全局 版本号文件作为第一个条目存储至后端数据库中,该集群全局版本号 文件的version字段用于标识集群当前的版本号,每过固定的时间间 隔,或者集群目录有数据的写入、修改操作,该文件的version字段 值加1。
优选地,管理模块对后端数据库读取后,在内存数据库中形成的 数据拷贝的结构中,文件和目录组织为树状结构,在树状结构的根目 录处,即文件***的挂载位置,可存储文件或目录;子目录内可存储 该目录的子目录或文件;在根目录数据结构内,包含一个全局哈希映 射表,该全局哈希映射表存储后端数据库的所有文件或目录的哈希映 射,该哈希映射表能检索当前后端数据库内是否包含当前检索的项 目,以确定是继续查找和定位该检索项还是立即返回上层调用;除根 目录外的所有子目录内都包含一个局部哈希映射表,该局部哈希映射 表保存当前目录下所有子目录和文件的哈希映射,每次创建或删除条目后,哈希映射同步修改。
优选地,集群内节点的角色有主节点和从节点之分,主节点是由 集群选举产生的状态一致性控制节点,从节点为一般功能性节点;管 理模块实现集群内主、从节点间的通信时,在主、从节点的数据写入 流程中,当主节点发起数据写请求后,请求消息自主节点发往各从节 点,从节点接收到主节点的消息后,发起数据写入操作,写完后返回, 从而使从节点与主节点的数据状态保持一致;当从节点发起数据写请 求后,数据不会马上写入集群目录,而是产生一个请求消息发往主节 点,主节点收到该消息后,将消息发往除数据写入节点外的其他各从 节点,同时发送确认消息给当前从节点,此时该当前从节点执行数据写入操作,待主节点写请求返回后,该当前从节点完成数据写操作, 从而使各从节点与主节点数据状态保持一致
本发明还提供了一种利用所述***实现的基于内存和轻量级数 据库的配置文件同步方法,包括以下步骤:
步骤1、集群状态初始化
集群刚建立时,管理模块检查本节点的后端数据库,若当前节点 存在后端数据库,则读取后端数据库中的记录至内存数据库;若当前 节点上没有后端数据库,则创建新的后端数据库;
在节点没有后端数据库的情况下,管理模块自动创建新的后端数 据库,并打开后端数据库,往后端数据库中写入集群全局版本号文件, 该文件的inode字段设置为0,parent字段设置为0;
在节点存在后端数据库的情况下,后端数据库中存储的目录或文 件通过数据表内的各字段信息重组为内存数据库中的树状存储结构; 管理模块按顺序从后端数据库逐行读取记录,并在根目录结构中创建 全局哈希映射表;
步骤2、在集群状态初始化后执行如下步骤:
数据写入:
节点向集群目录写入数据时,先检测当前节点的运行模式,若节 点处于单节点模式,则直接写入;若处于集群模式,则进一步检测集 群状态,若集群处于正常工作状态,则正常写入,若集群处于异常工 作状态,则只能读取,禁止写入;
向正常工作状态下的集群目录写入数据的流程如下:
(1)若写入数据为目录,则生成目录数据结构,在全局哈希映 射表中添加目录信息、在该目录的父目录局部哈希映射表中添加目录 信息,填充目录的parent信息、inode信息、name信息、ctime信息、 mtime信息、version信息,初始化该目录下的局部哈希映射表;
(2)若写入数据为文件,则生成文件数据结构,在全局哈希映 射表中添加文件信息、在该文件的父目录局部哈希映射表中添加目录 信息,填充文件的parent信息、inode信息、name信息、ctime信息、 mtime信息、version信息,将文件的数据实体拷贝至data变量中;
(3)若写入的目录或文件已存在,则修改对应条目的mtime 信息、version信息或data数据;
(4)更新集群全局版本号文件的version值,version值为当前 值加1;
(5)若当前节点为主节点,则将写入信息发送至各从节点;若 当前节点为从节点,则将写入信息发送至主节点;
(6)将写入数据下刷至后端数据库。
优选地,步骤2、在集群状态初始化后还执行如下步骤:
数据读取:节点向集群目录读取数据时,不论当前节点的运行模 式处于单节点模式还是集群模式,都可直接读取,应用程序读取数据 时,管理模块直接将指定的数据由内存数据库返回至上层应用程序。
优选地,步骤2、在集群状态初始化后还执行如下步骤:更新滞 后数据:
集群内的节点离线一段时间后,该节点的后端数据库或内存数据 库处于滞后状态,重新进入集群后,需要执行同步操作。因为该节点 由异常工作状态进入正常工作状态,所以该节点的角色为从节点,更 新滞后数据的流程如下:
(1)从节点向主节点发送心跳信息,并发送数据同步请求;
(2)主节点收到数据同步请求后,向该从节点发送主节点的全 局哈希映射表;
(3)在从节点内,将主节点全局哈希映射表与本节点全局哈希 映射表的记录逐条比较,比较内容为同一inode号对应的version字 段的版本号信息;若版本号信息一致,则进行下一条信息的比较;若 当前inode号对应的版本号信息不一致或本节点全局哈希表无对应 inode号记录,则记录当前inode号;
(4)在从节点内,将本节点全局哈希映射表的剩余条目与主节 点全局哈希映射表的记录逐条比较,若主节点全局哈希映射表不包含 本节点全局哈希映射表的条目,则删除该文件或目录(及目录结构下 的文件);
(5)从节点向主节点发送状态滞后的inode号列表;
(6)主节点包装数据后,向从节点发送inode号列表及对应的 数据实体作为更新数据;
(7)从节点接收更新数据,同步至内存数据库中,同时写入后 端数据库。
优选地,所述管理模块按顺序从后端数据库逐行读取记录,并在 根目录结构中创建全局哈希映射表的具体方式如下:
(1)若当前行的条目parent字段值为0,type字段值为2,说 明该条目为根目录下的文件,将该文件信息加入全局哈希映射表;
(2)若当前行的条目parent字段值为0,type字段值为1,说 明该条目为根目录下的目录,将该目录的信息加入全局哈希映射表, 并在该目录的数据结构下新建空的局部哈希映射表;
(3)若当前行的条目parent字段值为非0,type字段值为2, 说明该条目为某一子目录下的文件,将该文件的信息加入全局哈希映 射表;此时检查该文件的父目录是否存在,若存在,将该文件的信息 加入父目录的局部哈希映射表,若不存在,则在全局哈希映射表内添 加该父目录的信息,初始化父目录的局部哈希映射表,同时将该文件 的信息加入父目录的局部哈希映射表;
(4)若当前行的条目parent字段值为非0,type字段值为1, 说明该条目为某一子目录,将该目录的信息加入全局哈希映射表;此 时检查该目录的父目录是否存在,若存在,将该目录的信息加入父目 录的局部哈希映射表,并创建本目录的局部哈希映射表,若不存在, 则在全局哈希表中添加该父目录的信息,初始化父目录的局部哈希映 射表,同时将该目录的信息加入父目录的局部哈希映射表,初始化本 目录的局部哈希映射表;
(5)若当前目录在全局哈希表中已经存在,则更新当前条目, 更新内容包括inode编号、parent编号、name、ctime、mtime、version, version值为集群全局版本号文件的version值加1。
优选地,该方法中,集群节点可运行为单节点模式,或运行为集 群模式;当节点未加入集群时,节点处于单节点模式,在该单节点模 式下节点使用后端数据库提供持久化数据存储能力,后端数据库内的 数据拷贝至节点的内存数据库,提供数据存取服务,当节点加入集群 后,节点处于集群模式,在该集群模式下,所有节点的后端数据库存 储的数据状态一致,内存数据库中数据拷贝的状态一致,存储至集群 目录内的配置文件处于同步状态;
优选地,该方法中,当应用程序写入配置文件时,触发用户态文 件***的写入操作,请求通过管理模块发送至内存数据库完成临时存 储,同时发送至后端数据库完成永久存储,在集群模式下,写入的数 据请求在发送至本节点的同时,还会同步发送至其他节点,形成一致 的数据存储状态,同步后,每个节点都有一份完整的数据副本。
(三)有益效果
本发明为多节点集群或分布式集群提供一种轻量、快速的配置文 件同步***及方法,其通过对内存数据库、后端数据库和管理模块的 合理设计,能够规避管理服务单节点故障、提升***管理性能和可靠 性;简化节点加入步骤、降低节点加入难度。
附图说明
图1为本发明的基于轻量级数据库的配置同步设计框图;
图2为本发明中后端数据库的字段设计原理图;
图3为本发明中前端数据库的结构设计原理图;
图4为本发明中集群主从节点通信流程图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实 施例,对本发明的具体实施方式作进一步详细描述。
为解决基于本地存储中心化管理出现的单节点故障,降低基于分 布式存储进行配置同步所带来的节点加入难度,本发明提出了一种基 于内存和轻量级数据库的配置文件同步***及方法,以规避管理服务 单节点故障、提升***管理性能和可靠性;简化节点加入步骤、降低 节点加入难度。
本发明设计了一种基于内存和轻量级数据库的配置同步***及 方法。该设计旨在为多节点集群或分布式集群提供一种轻量、快速的 配置文件同步***及方法,为集群管理提供一种高效的文件共享方 式。该***布置在每个集群节点上,包含以下几个部分,如图1所示, 内存数据库、后端数据库和管理模块;其中,所述内存数据库作为前 端数据临时存储位置,用于提供应用程序(集群管理软件)的快速数 据响应;后端数据库用于提供持久化数据存储能力;管理模块用于提 供数据读写功能、节点通信功能,以实现对后端数据库的读取和写入, 以及在内存数据库中形成一份完整的数据拷贝,以及保证集群目录数 据状态的一致。
1.后端数据库的存储结构设计
本发明中,后端数据库的存储使用轻量级数据库作为存储引擎, 以一个文件来作为数据库,使用数据表作为文件的逻辑存储体,数据 表中的每一行作为一个文件或目录记录,如图2所示。
其中,id字段表示数据项的ID,使用ID标识的数据具有唯一性, 该字段作为主键具有自增属性;inode字段表示文件的inode号,对 于每个文件或目录,管理模块都会为其分配一个inode号,用于标识 文件或目录;name字段表示文件或者文件夹的名称,由应用程序指 定、管理模块写入;type字段表示文件类型,该值的取值为0,1或 2,取值为0时,表示该文件或目录的数据结构刚初始化,未存储数 据,取值为1时,表示该项记录的内容为目录,取值为2时,表示该 项记录的内容为文件;parent字段表示该项记录的父目录,parent的 值存储父目录的inode号,若该项记录位于根目录,则parent字段值 为0;ctime字段表示该项记录下文件或目录的创建时间;mtime字段 表示该项记录下文件或目录的修改时间;version字段用于表示该项 记录下文件或目录的最新版本号,用于区分当前数据是否为最新数 据;data字段表示该项记录下的数据实体,若该项记录为文件,则存 储文件内容,若该项记录为目录,则字段存储内容为空。
后端数据库中,默认包含一个集群全局版本号文件,该文件作为 第一个条目存储至后端数据库中,该文件的version字段用于标识集 群当前的版本号,每过固定的时间间隔,或者集群目录有数据的写入、 修改操作,该文件的version字段值加1。
2.内存数据库的存储结构设计
本发明中,管理模块对后端数据库读取后,会在内存数据库中形 成一份完整的数据拷贝,文件和目录组织为树状结构,如图3所示。
在树状结构的根目录处,即文件***的挂载位置,可存储文件或 目录;子目录内可存储该目录的子目录或文件;在根目录数据结构内, 包含了一个全局哈希映射表,该全局哈希映射表存储了后端数据库的 所有文件或目录的哈希映射,该哈希映射表能快速检索当前后端数据 库内是否包含当前检索的项目,以确定是继续查找和定位该检索项还 是立即返回上层调用;除根目录外的所有子目录内都包含一个局部哈 希映射表,该局部哈希映射表保存了当前目录下所有子目录和文件的 哈希映射,每次创建或删除条目后,哈希映射同步修改。
3.管理模块实现的主从节点的通信设计
集群内节点的角色有主节点和从节点之分,主节点是由集群选举 产生的状态一致性控制节点,从节点为一般功能性节点;集群内,主、 从节点的数据写入流程如图4所示,当主节点发起数据写请求后,请 求消息自主节点发往各从节点,从节点接收到主节点的消息后,发起 数据写入操作,写完后返回,从而使从节点与主节点的数据状态保持 一致(见图4的实线部分);当从节点发起数据写请求后,数据不会 马上写入集群目录,而是产生一个请求消息发往主节点(见图4的虚 线部分①),主节点收到该消息后,将消息发往除数据写入节点外的 其他各从节点(见图4的虚线部分②),同时发送确认消息给当前从 节点(见图4的虚线部分③),此时该当前从节点执行数据写入操作, 待主节点写请求返回后,该当前从节点完成数据写操作,从而使各从 节点与主节点数据状态保持一致。
本发明中,应用程序是从用户态文件***访问到配置文件的,使 用用户态文件***为集群管理软件提供数据访问接口,使用后端数据 库提供持久化数据存储能力,使用内存数据库提供快速高效的数据访 问能力,使用管理模块提供高可用的数据访问能力。
本发明中,集群节点可以运行为单节点模式,也可运行为集群模 式;当节点未加入集群时,节点处于单节点模式,在该单节点模式下 节点使用后端数据库提供持久化数据存储能力,后端数据库内的数据 拷贝至节点的内存数据库,提供快速高效的数据存取服务。当节点加 入集群后,节点处于集群模式,在该集群模式下,所有节点的后端数 据库存储的数据状态一致,内存数据库中数据拷贝的状态一致,存储 至集群目录内的配置文件处于同步状态。
当应用程序写入配置文件时,触发用户态文件***的写入操作, 请求通过管理模块发送至内存数据库完成快速临时存储,同时发送至 后端数据库完成永久存储。在集群模式下,写入的数据请求在发送至 本节点的同时,还会同步发送至其他节点,形成一致的数据存储状态, 同步后,每个节点都有一份完整的数据副本。
基于上述一种基于内存和轻量级数据库的配置文件同步***实 现的配置文件同步方法包括以下步骤:
步骤1、集群状态初始化
集群刚建立时,管理模块检查本节点的后端数据库,若当前节点 存在后端数据库,则读取后端数据库中的记录至内存数据库;若当前 节点上没有后端数据库,则创建新的后端数据库。
在节点没有后端数据库的情况下,管理模块自动创建新的后端数 据库,并打开后端数据库,往后端数据库中写入集群全局版本号文件, 该文件的inode字段设置为0,parent字段设置为0。
在节点存在后端数据库的情况下,后端数据库中存储的目录或文 件通过数据表内的各字段信息重组为内存数据库中的树状存储结构; 管理模块按顺序从后端数据库逐行读取记录,并在根目录结构中创建 全局哈希映射表,具体方式如下:
(1)若当前行的条目parent字段值为0,type字段值为2,说 明该条目为根目录下的文件,将该文件信息加入全局哈希映射表;
(2)若当前行的条目parent字段值为0,type字段值为1,说 明该条目为根目录下的目录,将该目录的信息加入全局哈希映射表, 并在该目录的数据结构下新建空的局部哈希映射表;
(3)若当前行的条目parent字段值为非0,type字段值为2, 说明该条目为某一子目录下的文件,将该文件的信息加入全局哈希映 射表;此时检查该文件的父目录是否存在,若存在,将该文件的信息 加入父目录的局部哈希映射表,若不存在,则在全局哈希映射表内添 加该父目录的信息,初始化父目录的局部哈希映射表,同时将该文件 的信息加入父目录的局部哈希映射表;
(4)若当前行的条目parent字段值为非0,type字段值为1, 说明该条目为某一子目录,将该目录的信息加入全局哈希映射表;此 时检查该目录的父目录是否存在,若存在,将该目录的信息加入父目 录的局部哈希映射表,并创建本目录的局部哈希映射表,若不存在, 则在全局哈希表中添加该父目录的信息,初始化父目录的局部哈希映 射表,同时将该目录的信息加入父目录的局部哈希映射表,初始化本 目录的局部哈希映射表;
(5)若当前目录在全局哈希表中已经存在,则更新当前条目, 更新内容包括inode编号、parent编号、name、ctime、mtime、version, version值为集群全局版本号文件的version值加1。
步骤2、在集群状态初始化后执行如下步骤(以下步骤无先后顺 序,也可并行执行):
数据写入:
节点向集群目录写入数据时,先检测当前节点的运行模式,若节 点处于单节点模式,则直接写入;若处于集群模式,则进一步检测集 群状态,若集群处于正常工作状态,则正常写入,若集群处于异常工 作状态,则只能读取,禁止写入;
向正常工作状态下的集群目录写入数据的流程如下:
(7)若写入数据为目录,则生成目录数据结构,在全局哈希映 射表中添加目录信息、在该目录的父目录局部哈希映射表中添加目录 信息,填充目录的parent信息、inode信息(inode值为集群全局版本 号文件的version值加1)、name信息、ctime信息、mtime信息、version 信息(version值等于inode),初始化该目录下的局部哈希映射表;
(8)若写入数据为文件,则生成文件数据结构,在全局哈希映 射表中添加文件信息、在该文件的父目录局部哈希映射表中添加目录 信息,填充文件的parent信息、inode信息(inode值为集群全局版本 号文件的version值加1)、name信息、ctime信息、mtime信息、version 信息(version值等于inode),将文件的数据实体拷贝至data变量中;
(9)若写入的目录或文件已存在,则修改对应条目的mtime 信息、version信息(version值为集群全局版本号文件的version值加 1)或data数据;
(10)更新集群全局版本号文件的version值,version值为当前 值加1;;
(11)若当前节点为主节点,则将写入信息发送至各从节点; 若当前节点为从节点,则将写入信息发送至主节点;
(12)将写入数据下刷至后端数据库。
数据读取:
节点向集群目录读取数据时,不论当前节点的运行模式处于单节 点模式还是集群模式,都可直接读取。为提升数据的访问速率,应用 程序读取数据时,管理模块直接将指定的数据由内存数据库返回至上 层应用程序。
更新滞后数据:
集群内的节点离线一段时间后,该节点的后端数据库或内存数据 库处于滞后状态,重新进入集群后,需要执行同步操作。因为该节点 由异常工作状态(离线状态)进入正常工作状态,所以该节点的角色 为从节点,更新滞后数据的流程如下:
(8)从节点向主节点发送心跳信息,并发送数据同步请求;
(9)主节点收到数据同步请求后,向该从节点发送主节点的全 局哈希映射表;
(10)在从节点内,将主节点全局哈希映射表与本节点全局哈 希映射表的记录逐条比较,比较内容为同一inode号对应的version 字段的版本号信息;若版本号信息一致,则进行下一条信息的比较; 若当前inode号对应的版本号信息不一致或本节点全局哈希表无对应 inode号记录,则记录当前inode号;
(11)在从节点内,将本节点全局哈希映射表的剩余条目与主 节点全局哈希映射表的记录逐条比较,若主节点全局哈希映射表不包 含本节点全局哈希映射表的条目,则删除该文件或目录(及目录结构 下的文件);
(12)从节点向主节点发送状态滞后的inode号列表;
(13)主节点包装数据后,向从节点发送inode号列表及对应 的数据实体作为更新数据;
(14)从节点接收更新数据,同步至内存数据库中,同时写入 后端数据库。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领 域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以 做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (9)
1.一种基于内存和轻量级数据库的配置文件同步***,其特征在于,该***布置在每个集群节点上,包含内存数据库、后端数据库和管理模块;其中,所述内存数据库作为前端数据临时存储位置,用于提供应用程序的数据响应;后端数据库用于提供持久化数据存储能力;管理模块用于提供数据读写功能、节点通信功能,以实现对后端数据库的读取和写入,以及在内存数据库中形成一份完整的数据拷贝,以及保证集群目录数据状态的一致;
后端数据库以一个文件作为数据库,使用数据表作为文件的逻辑存储体,数据表中的每一行作为一个文件或目录记录,且包含如下字段:id字段表示数据项的ID,使用ID标识的数据具有唯一性,该字段作为主键具有自增属性;inode字段表示文件的inode号,对于每个文件或目录,管理模块都会为其分配一个inode号,用于标识文件或目录;name字段表示文件或者文件夹的名称,由应用程序指定、管理模块写入;type字段表示文件类型,该type字段的取值为0,1或2,取值为0时,表示该文件或目录的数据结构刚初始化,未存储数据,取值为1时,表示该项记录的内容为目录,取值为2时,表示该项记录的内容为文件;parent字段表示该项记录的父目录,parent的值存储父目录的inode号,若该项记录位于根目录,则parent字段值为0;ctime字段表示该项记录下文件或目录的创建时间;mtime字段表示该项记录下文件或目录的修改时间;version字段用于表示该项记录下文件或目录的最新版本号,用于区分当前数据是否为最新数据;data字段表示该项记录下的数据实体,若该项记录为文件,则存储文件内容,若该项记录为目录,则字段存储内容为空;
后端数据库中,默认包含一个集群全局版本号文件,该集群全局版本号文件作为第一个条目存储至后端数据库中,该集群全局版本号文件的version字段用于标识集群当前的版本号,每过固定的时间间隔,或者集群目录有数据的写入、修改操作,该文件的version字段值加1。
2.如权利要求1所述的***,其特征在于,管理模块对后端数据库读取后,在内存数据库中形成的数据拷贝的结构中,文件和目录组织为树状结构,在树状结构的根目录处,即文件***的挂载位置,可存储文件或目录;子目录内可存储该目录的子目录或文件;在根目录数据结构内,包含一个全局哈希映射表,该全局哈希映射表存储后端数据库的所有文件或目录的哈希映射,该哈希映射表能检索当前后端数据库内是否包含当前检索的项目,以确定是继续查找和定位该检索项还是立即返回上层调用;除根目录外的所有子目录内都包含一个局部哈希映射表,该局部哈希映射表保存当前目录下所有子目录和文件的哈希映射,每次创建或删除条目后,哈希映射同步修改。
3.如权利要求2所述的***,其特征在于,集群内节点的角色有主节点和从节点之分,主节点是由集群选举产生的状态一致性控制节点,从节点为一般功能性节点;管理模块实现集群内主、从节点间的通信时,在主、从节点的数据写入流程中,当主节点发起数据写请求后,请求消息自主节点发往各从节点,从节点接收到主节点的消息后,发起数据写入操作,写完后返回,从而使从节点与主节点的数据状态保持一致;当从节点发起数据写请求后,数据不会马上写入集群目录,而是产生一个请求消息发往主节点,主节点收到该消息后,将消息发往除数据写入节点外的其他各从节点,同时发送确认消息给当前从节点,此时该当前从节点执行数据写入操作,待主节点写请求返回后,该当前从节点完成数据写操作,从而使各从节点与主节点数据状态保持一致。
4.一种利用权利要求2或3所述***实现的基于内存和轻量级数据库的配置文件同步方法,其特征在于,包括以下步骤:
步骤1、集群状态初始化
集群刚建立时,管理模块检查本节点的后端数据库,若当前节点存在后端数据库,则读取后端数据库中的记录至内存数据库;若当前节点上没有后端数据库,则创建新的后端数据库;
在节点没有后端数据库的情况下,管理模块自动创建新的后端数据库,并打开后端数据库,往后端数据库中写入集群全局版本号文件,该文件的inode字段设置为0,parent字段设置为0;
在节点存在后端数据库的情况下,后端数据库中存储的目录或文件通过数据表内的各字段信息重组为内存数据库中的树状存储结构;管理模块按顺序从后端数据库逐行读取记录,并在根目录结构中创建全局哈希映射表;
步骤2、在集群状态初始化后执行如下步骤:
数据写入:
节点向集群目录写入数据时,先检测当前节点的运行模式,若节点处于单节点模式,则直接写入;若处于集群模式,则进一步检测集群状态,若集群处于正常工作状态,则正常写入,若集群处于异常工作状态,则只能读取,禁止写入;
向正常工作状态下的集群目录写入数据的流程如下:
(1)若写入数据为目录,则生成目录数据结构,在全局哈希映射表中添加目录信息、在该目录的父目录局部哈希映射表中添加目录信息,填充目录的parent信息、inode信息、name信息、ctime信息、mtime信息、version信息,初始化该目录下的局部哈希映射表;
(2)若写入数据为文件,则生成文件数据结构,在全局哈希映射表中添加文件信息、在该文件的父目录局部哈希映射表中添加目录信息,填充文件的parent信息、inode信息、name信息、ctime信息、mtime信息、version信息,将文件的数据实体拷贝至data变量中;
(3)若写入的目录或文件已存在,则修改对应条目的mtime信息、version信息或data数据;
(4)更新集群全局版本号文件的version值,version值为当前值加1;
(5)若当前节点为主节点,则将写入信息发送至各从节点;若当前节点为从节点,则将写入信息发送至主节点;
(6)将写入数据下刷至后端数据库。
5.如权利要求4所述的方法,其特征在于,步骤2、在集群状态初始化后还执行如下步骤:
数据读取:节点向集群目录读取数据时,不论当前节点的运行模式处于单节点模式还是集群模式,都可直接读取,应用程序读取数据时,管理模块直接将指定的数据由内存数据库返回至上层应用程序。
6.如权利要求4所述的方法,其特征在于,步骤2、在集群状态初始化后还执行如下步骤:更新滞后数据:
集群内的节点离线一段时间后,该节点的后端数据库或内存数据库处于滞后状态,重新进入集群后,需要执行同步操作,因为该节点由异常工作状态进入正常工作状态,所以该节点的角色为从节点,更新滞后数据的流程如下:
(1)从节点向主节点发送心跳信息,并发送数据同步请求;
(2)主节点收到数据同步请求后,向该从节点发送主节点的全局哈希映射表;
(3)在从节点内,将主节点全局哈希映射表与本节点全局哈希映射表的记录逐条比较,比较内容为同一inode号对应的version字段的版本号信息;若版本号信息一致,则进行下一条信息的比较;若当前inode号对应的版本号信息不一致或本节点全局哈希表无对应inode号记录,则记录当前inode号;
(4)在从节点内,将本节点全局哈希映射表的剩余条目与主节点全局哈希映射表的记录逐条比较,若主节点全局哈希映射表不包含本节点全局哈希映射表的条目,则删除该文件或目录;
(5)从节点向主节点发送状态滞后的inode号列表;
(6)主节点包装数据后,向从节点发送inode号列表及对应的数据实体作为更新数据;
(7)从节点接收更新数据,同步至内存数据库中,同时写入后端数据库。
7.如权利要求4所述的方法,其特征在于,所述管理模块按顺序从后端数据库逐行读取记录,并在根目录结构中创建全局哈希映射表的具体方式如下:
(1)若当前行的条目parent字段值为0,type字段值为2,说明该条目为根目录下的文件,将该文件信息加入全局哈希映射表;
(2)若当前行的条目parent字段值为0,type字段值为1,说明该条目为根目录下的目录,将该目录的信息加入全局哈希映射表,并在该目录的数据结构下新建空的局部哈希映射表;
(3)若当前行的条目parent字段值为非0,type字段值为2,说明该条目为某一子目录下的文件,将该文件的信息加入全局哈希映射表;此时检查该文件的父目录是否存在,若存在,将该文件的信息加入父目录的局部哈希映射表,若不存在,则在全局哈希映射表内添加该父目录的信息,初始化父目录的局部哈希映射表,同时将该文件的信息加入父目录的局部哈希映射表;
(4)若当前行的条目parent字段值为非0,type字段值为1,说明该条目为某一子目录,将该目录的信息加入全局哈希映射表;此时检查该目录的父目录是否存在,若存在,将该目录的信息加入父目录的局部哈希映射表,并创建本目录的局部哈希映射表,若不存在,则在全局哈希表中添加该父目录的信息,初始化父目录的局部哈希映射表,同时将该目录的信息加入父目录的局部哈希映射表,初始化本目录的局部哈希映射表;
(5)若当前目录在全局哈希表中已经存在,则更新当前条目,更新内容包括inode编号、parent编号、name、ctime、mtime、version,version值为集群全局版本号文件的version值加1。
8.如权利要求4所述的方法,其特征在于,该方法中,集群节点可运行为单节点模式,或运行为集群模式;当节点未加入集群时,节点处于单节点模式,在该单节点模式下节点使用后端数据库提供持久化数据存储能力,后端数据库内的数据拷贝至节点的内存数据库,提供数据存取服务,当节点加入集群后,节点处于集群模式,在该集群模式下,所有节点的后端数据库存储的数据状态一致,内存数据库中数据拷贝的状态一致,存储至集群目录内的配置文件处于同步状态。
9.如权利要求4所述的方法,其特征在于,该方法中,当应用程序写入配置文件时,触发用户态文件***的写入操作,请求通过管理模块发送至内存数据库完成临时存储,同时发送至后端数据库完成永久存储,在集群模式下,写入的数据请求在发送至本节点的同时,还会同步发送至其他节点,形成一致的数据存储状态,同步后,每个节点都有一份完整的数据副本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110460354.4A CN113157808B (zh) | 2021-04-27 | 2021-04-27 | 基于内存和轻量级数据库的配置文件同步***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110460354.4A CN113157808B (zh) | 2021-04-27 | 2021-04-27 | 基于内存和轻量级数据库的配置文件同步***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113157808A CN113157808A (zh) | 2021-07-23 |
CN113157808B true CN113157808B (zh) | 2023-02-03 |
Family
ID=76871526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110460354.4A Active CN113157808B (zh) | 2021-04-27 | 2021-04-27 | 基于内存和轻量级数据库的配置文件同步***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113157808B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113938381A (zh) * | 2021-10-15 | 2022-01-14 | 牙木科技股份有限公司 | 一种通用简单的网管和网元配置同步的方法和*** |
CN114048178B (zh) * | 2021-11-29 | 2022-07-26 | 众和空间(北京)科技有限责任公司 | 一种数据的双模式存储及同步方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508881A (zh) * | 2011-10-18 | 2012-06-20 | 国网电力科学研究院 | 一种电力信息***内存数据库的多节点集群方法 |
CN111752488A (zh) * | 2020-06-30 | 2020-10-09 | 重庆紫光华山智安科技有限公司 | 存储集群的管理方法、装置、管理节点及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8229945B2 (en) * | 2008-03-20 | 2012-07-24 | Schooner Information Technology, Inc. | Scalable database management software on a cluster of nodes using a shared-distributed flash memory |
-
2021
- 2021-04-27 CN CN202110460354.4A patent/CN113157808B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508881A (zh) * | 2011-10-18 | 2012-06-20 | 国网电力科学研究院 | 一种电力信息***内存数据库的多节点集群方法 |
CN111752488A (zh) * | 2020-06-30 | 2020-10-09 | 重庆紫光华山智安科技有限公司 | 存储集群的管理方法、装置、管理节点及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113157808A (zh) | 2021-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11704290B2 (en) | Methods, devices and systems for maintaining consistency of metadata and data across data centers | |
US8250033B1 (en) | Replication of a data set using differential snapshots | |
CN101329685B (zh) | 一种家庭网关上内存数据库的实现方法 | |
US9149054B2 (en) | Prefix-based leaf node storage for database system | |
CA2139693C (en) | Summary catalogs | |
CN113157808B (zh) | 基于内存和轻量级数据库的配置文件同步***及方法 | |
EP4111324A1 (en) | File systems constructed of block objects | |
CN109684282B (zh) | 一种构建元数据缓存的方法及装置 | |
US9547706B2 (en) | Using colocation hints to facilitate accessing a distributed data storage system | |
US20160283501A1 (en) | Posix-compatible file system, method of creating a file list and storage device | |
CN103595797B (zh) | 一种分布式存储***中的缓存方法 | |
CN110209528B (zh) | 数据备份方法、装置、服务器以及存储介质 | |
CN104657459A (zh) | 一种基于文件粒度的海量数据存储方法 | |
CN104965850A (zh) | 一种基于开源技术的数据库高可用实现方法 | |
CN114281762B (zh) | 一种日志存储加速方法、装置、设备及介质 | |
CN114048185B (zh) | 一种分布式文件***中海量小文件透明打包存储与访问的方法 | |
CN113377292B (zh) | 一种单机存储引擎 | |
CN111831475A (zh) | 数据备份方法、装置、节点设备及可读存储介质 | |
US10055139B1 (en) | Optimized layout in a two tier storage | |
CN107346209B (zh) | 一种多磁盘聚合式数据存储***及其实现方法与应用方法 | |
CN114610680A (zh) | 分布式文件***元数据管理方法、装置、设备及存储介质 | |
US10387384B1 (en) | Method and system for semantic metadata compression in a two-tier storage system using copy-on-write | |
CN115168367A (zh) | 一种大数据的数据配置方法和*** | |
JP5103786B2 (ja) | 制御プログラム、制御装置、制御方法 | |
CN111831423A (zh) | 一种在非易失性内存上实现Redis内存数据库的方法和*** |
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 |