CN113742336A - 一种数据处理方法及设备、存储介质 - Google Patents
一种数据处理方法及设备、存储介质 Download PDFInfo
- Publication number
- CN113742336A CN113742336A CN202110178800.2A CN202110178800A CN113742336A CN 113742336 A CN113742336 A CN 113742336A CN 202110178800 A CN202110178800 A CN 202110178800A CN 113742336 A CN113742336 A CN 113742336A
- Authority
- CN
- China
- Prior art keywords
- node
- storage
- data
- leader
- processing
- 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.)
- Pending
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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/221—Column-oriented storage; Management thereof
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/25—Integrating or interfacing systems involving database management systems
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)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据处理方法,应用于数据存储系统,所述数据存储系统包括:至少两个存储节点,不同的所述存储节点存储的数据相同;领导节点接收客户端的第一处理请求;所述领导节点为所述至少两个存储节点中任一存储节点;所述领导节点创建所述第一处理请求对应的日志,并将所述日志发送至跟随节点,所述日志用于所述跟随节点对所述跟随节点中的数据进行所述第一处理请求对应的处理,所述跟随节点为所述至少两个存储节点中除所述领导节点之外的存储节点;所述领导节点使用第一存储引擎对所述领导节点中存储的数据进行所述第一处理请求对应的处理;所述第一存储引擎为所述领导节点中的存储引擎。本申请还公开了一种设备及存储介质。
Description
技术领域
本申请实施例涉及计算机技术领域,涉及但不限于一种数据处理方法及系统、存储介质。
背景技术
Hbase集群智能切换组件是用于Hbase主备集群自动切换和集群元信息的高速存取,该组件可多节点独立部署,提供表现层状态转化(Representational StateTransferrest,REST)应用程序接口(Application Programming Interface,API)接口,结合前端负载均衡,可为大规模Hbase集群提供智能快速切换服务。
相关技术中,Hbase集群智能切换组件采用的元数据存取方案包括:基于关系型数据库MySQL存取、基于中间件分布式应用程序协调服务(Zookeeper)存取和基于本地文件系统存取等,但上述方案存在难以维护、单点故障、性能瓶颈、数据一致性不能保证等问题。
发明内容
有鉴于此,本申请实施例为解决相关技术中存在的至少一个问题而提供一种数据处理方法及系统、存储介质,能够避免单点故障、易于维护的同时,保证数据的一致性。
本申请实施例的技术方案是这样实现的:
第一方面,本申请实施例提供一种数据处理方法,应用于数据存储系统,所述数据存储系统包括:至少两个存储节点,所述存储集群中各节点存储的数据相同,所述方法包括:
领导节点接收客户端的第一处理请求;所述领导节点为所述至少两个存储节点中任一存储节点;
所述领导节点创建所述第一处理请求对应的日志,并将所述日志发送至跟随节点,所述日志用于所述跟随节点对所述跟随节点中的数据进行所述第一处理请求对应的处理,所述跟随节点为所述至少两个存储节点中除所述领导节点之外的存储节点;
所述领导节点使用第一存储引擎对所述领导节点中存储的数据进行所述第一处理请求对应的处理;所述第一存储引擎为所述领导节点中的存储引擎。
第二方面,本申请实施例提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述数据处理方法中的步骤。
第三方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述数据处理方法中的步骤。
本申请实施例中,提供了一种数据处理方法及设备、存储介质,应用于数据存储系统,所述数据存储系统包括:至少两个存储节点,不同的所述存储节点存储的数据相同;领导节点接收客户端的第一处理请求;所述领导节点为所述至少两个存储节点中任一存储节点;所述领导节点创建所述第一处理请求对应的日志,并将所述日志发送至跟随节点,所述日志用于所述跟随节点对所述跟随节点中的数据进行所述第一处理请求对应的处理,所述跟随节点为所述至少两个存储节点中除所述领导节点之外的存储节点;所述领导节点使用第一存储引擎对所述领导节点中存储的数据进行所述第一处理请求对应的处理;所述第一存储引擎为所述领导节点中的存储引擎,在对客户端的第一处理请求处理的同时,保证数据存储系统的数据一致性,从而避免单点故障,提高数据存储系统的维护的便捷性。
附图说明
图1为本申请实施例数据处理系统的可选地架构示意图;
图2为本申请实施例数据处理系统的可选地架构示意图;
图3A为本申请实施例数据处理系统的可选地架构示意图;
图3B为本申请实施例数据处理系统的可选地架构示意图;
图4为本申请实施例提供的数据处理方法的可选地流程示意图;
图5为本申请实施例提供的存储节点的可选地状态转移示意图
图6为本申请实施例提供的数据处理方法的可选地流程示意图;
图7为本申请实施例提供的数据处理方法的可选地流程示意图;
图8为本申请实施例提供的维护页面的可选地页面示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对申请的具体技术方案做进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。
本申请实施例可提供为数据处理方法及系统和存储介质。实际应用中,数据处理方法可由数据处理系统实现,数据处理系统中的各功能实体可以由计算机设备(如终端设备或服务器)的硬件资源,如处理器等计算资源、通信资源(如用于支持实现光缆、蜂窝等各种方式通信)协同实现。
在对本申请实施例提供的数据处理方法进行说明之前,先对部分术语进行解释说明。
1)、数据,存储于数据存储系统中的数据,包括:用户数据、元数据、和存储特征等;其中,用户数据包括:Hbase用户数据、Hbase客户端上报数据;元数据,又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据包括:主集群名称、备集群名称、集群配置、zookeeper根节点、zookeeper地址等;存储特征,用于描述数据存储系统的存储状态,包括:集群健康数据、监控指标等。这里,数据存储系统中的存储节点构成集群。
2)、数据一致性,集群作为一个整体,能像单点系统一样为外界提供一份唯一的最新的数据视图,此时,数据副本之间强一致,客户端访问不同节点返回结果相同。
3)、线性一致读,更新操作完成后,任何后续时间点的请求都会获得最新的更新后的值。
4)、弹性扩展,在集群中的节点增加的情况下,仅对集群中各节点的配置文件进行修改即可完成集群的扩展。在一示例中,部署3个节点构成JRaftKV分布式存储集群,之后新增2个节点,则只需要修改3+2个节点的配置文件,并将新增节点地址和端口配置纳入集群通信地址,再重启5个节点即可完成集群的扩展。
5)、领导节点,状态为领导者(leader)的存储节点,通过共识算法从一个集群的多个存储节点中选举领导节点,在集群中未部署多个分片(组)的情况下,使用默认分片(组),此时集群中有且仅有一个领导节点。在集群中部署多个分片(组)的情况下,每个分片(组)中有且仅有一个节点作为该分片(组)的领导节点,其中,不同分片(组)的领导节点可相同,也可不同。
领导节点负责主动与分片(组)中的所有跟随节点通信,负责发送“提案”和接收多数派的跟随节点应答;领导节点需要向所有跟随节点主动发送心跳维持领导地位;领导节点负责处理客户端读写请求以及复制日志到所有跟随节点。
分片或者称为分片组及领导节点关系如下:
这里假设一个集群中有3个节点构成,自定义部署10个分片(组),使每个分片(组)横垮3个节点,每个分片(组)中各自通过共识算法选举一个节点作为领导节点,这样同一时刻集群中就会有10个领导节点,领导节点一般负载均衡到3个节点,当然也可以全部负载到指定节点。
6)跟随节点,状态为跟随者(follower)的存储节点,集群中领导节点之外的节点为跟随节点,或者,一个分片组中领导节点之外的分片所在的存储节点为跟随节点。跟随节点是被动的,它们不会主动发出消息,只是响应状态为leader或candidate的存储节点的消息,或者转发客户端的请求给领导节点。这里,将状态为follower的存储节点称为跟随节点或该分片组对应的跟随节点。
7)、候选者(candidate),是一种能够发起投票的临时的状态,当一个节点得到的投票满足条件,则转换为leader,当确定集群或一个分片组中已经包括leader,则转换为follower。
本申请实施例的数据处理方法可应用于图1所示的数据处理系统,包括:客户端10和数据存储系统20,其中,客户端能够基于输入设备与用户进行交互,其中,输入设备包括:显示器、鼠标、键盘等能够接收用户的输入信息的器件,数据存储系统20中包括至少两个存储节点201,各存储节点201中存储有数据,且各存储节点201存储的数据相同,各存储节点以键值对存储数据,其中,数据存储系统20中的所有存储节点构成第一存储集群。
其中,客户端10接收用户的输入操作,基于所述输入操作生成数据处理指令;客户端10调用数据存储系统20提供的所述数据处理指令对应的第一接口;客户端10通过调用的第一接口将所述数据处理指令发送至数据存储系统20;数据存储系统20接收所述数据处理指令。
在数据存储系统中,领导节点接收客户端的第一处理请求;所述领导节点为所述至少两个存储节点中任一存储节点;所述领导节点创建所述第一处理请求对应的日志,并将所述日志发送至跟随节点,所述日志用于所述跟随节点对所述跟随节点中的数据进行所述第一处理请求对应的处理,所述跟随节点为所述至少两个存储节点中除所述领导节点之外的存储节点;所述领导节点使用第一存储引擎对所述领导节点中存储的数据进行所述第一处理请求对应的处理;所述第一存储引擎为所述领导节点中的存储引擎。
本申请实施例中,数据存储系统以键值对(key-value)的方式存储数据,且以表的形式存储数据,表由行和列组成,每行都存在对应的行键(Row Key)即键key,用于检索数据。
在一示例中,数据存储系统为分布式存储系统,且节点中内嵌轻量级存储引擎。其中,轻量级存储引擎可为RocksDB。
在一示例中,如图2所示,数据处理系统还包括:至少两个第二存储集群30,至少两个第二存储集群30中包括有切换组件301,切换组件301能够对第二存储集群30进行主备切换,且能够从数据存储系统20中存取元数据。其中,第二存储集群30可为Hbase集群。
在一示例中,如图3A所示,数据存储系统20还包括:单点数据库40,其中,单点数据库40可为关系型数据库。单点数据库40可用于存储数据,且与数据存储系统中的数据保持同步更新。
在一示例中,如图3B所示,数据存储系统20还包括:控制节点50,其中,控制节点50作为数据存储系统20的中心总控节点,负责存储节点构成的第一存储集群的调度。控制节点50可执行以下处理:通过事件触发机制获取并上报第一存储集群的元数据和监控指标;周期检测领导节点状态,自动平衡领导节点数量,防止所有分片的领导节点堆积在个别存储节点上,均匀第一存储集群的集群压力。
本申请实施例中,当不需要自动平衡领导节点或切片自动切分等功能,可不启动控制节点。这里,控制节点可通过部署驱动(placement driver,PD)服务对第一存储集群进行调度。
在实际应用中,PD服务可设置有副本,且PD服务的副本与PD服务构成一个PD集群。
结合上述数据处理系统,本实施例提出一种数据处理方法,能够避免单点故障,且易于维护的同时,保证数据的一致性。
下面,结合图1、图2、图3A或图3B所示的数据处理系统,对本申请实施例提供的数据处理方法、系统和存储介质的各实施例进行说明。
本实施例提供一种数据处理方法,该方法应用于数据存储系统,数据存储系统可为计算机设备组成的分布式网络。该方法所实现的功能可以通过计算机设备中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该计算机设备至少包括处理器和存储介质。
图4为本申请实施例的一种数据处理方法的实现流程示意图,如图4所示,该方法可以包括如下步骤:
S401、领导节点接收客户端的第一处理请求。
所述领导节点为所述至少两个存储节点中任一存储节点。
所述客户端接收用户的输入操作,基于所述输入操作生成第一处理请求;
客户端通过对数据存储系统进行维护的维护应用程序或浏览器能够提供维护页面,且维护页面中设置有针对数据的操作区域;其中,针对数据的操作区域可设置有:过滤信息输入接口和数据处理类型接口。客户端基于过滤信息输入接口接收到的第一过滤信息和数据处理类型接口确定的数据处理类型,生成第一处理请求,并通过第一接口将第一处理请求发送至数据存储系统。其中,第一接口为客户端与第一处理请求之间的接口。第一接口可采用远程过程调用(Remote Procedure Call,RPC)协议。
其中,第一接口可为数据存储系统提供的原生接口,也可为用户根据实际需求扩展的接口。第一接口可包括:启动接口(start)、读取接口(get)、写入接口(put)、删除接口(delete)接口、扫描接口(scan)等。本申请实施例对数据存储系统提供的接口不进行任何限定。
本申请实施例中,维护页面中设置有针对不同操作选项的操作区域,其中,操作选项可包括:数据、节点、领导节点、同步等。
各操作区域中设置有针对该操作选项的处理类型接口。可选地,操作区域中还设置有接收过滤信息的接口。
针对数据,过滤信息可包括以下至少之一:时间、主键,处理类型可包括:写入、读取、扫描、删除等。针对节点,过滤信息可包括以下至少之一:切片信息和节点信息,处理类型可包括:获取节点关联的节点信息、增加节点、删除节点等。针对领导节点,过滤信息可包括以下至少之一:切片信息和节点信息,处理类型可包括:获取领导节点的信息、领导节点切换和平衡数据存储系统的领导节点的数量等。针对同步,处理类型可包括:启动、停止等。
针对节点,维护页面中还包括有切片数量输入接口,以接收切片数量,并对应的处理类型为:切片划分。
在实际应用中,本申请对客户端中维护页面所提供的操作选项不进行任何的限定。客户端提供的维护页面包括一个或多个页面。
当用户对客户端中的维护页面进行操作,客户端接收到用户针对维护页面的接口的输入操作,并根据接收到输入操作的接口和输入操作的内容生成业务请求指令。这里,业务请求可包括:针对数据的第一处理请求,针对节点的第二处理请求、针对领导节点的第三处理请求,以及针对同步的数据同步请求。
在一示例中,操作选项为数据,处理类型为获取,则生成指示获取数据的第一处理请求。
本申请实施例中,业务请求的格式满足第一接口的格式要求,本申请实施例对业务请求的格式不进行具体限定。
数据存储系统基于第一接口接收客户端发送的第一处理请求。
在一示例中,当数据存储系统中的跟随节点接收到客户端发送的第一处理请求,自身对第一处理请求不进行处理,而是将第一处理请求发送至领导节点。
在一示例中,数据存储系统中还包括控制节点,控制节点作为数据存储系统的中心总控节点,接收第一处理请求,并确定领导节点,将领导节点的标识发送至客户端,使得客户端将第一处理请求发送至领导节点。
在一些实施例中,数据存储系统中部署有分片组,此时,所述存储节点包括至少两个分片;不同所述存储节点中的分片的划分方式相同;不同存储节点中相同的分片构成一个分片组;其中,不同分片组的领导节点相互独立;所述数据存储系统还包括:控制节点;本申请实施例提供的数据处理方法,在S401之前,还包括:所述控制节点接收所述第一处理请求,确定所述第一处理请求所属的目标分片组;所述控制节点确定所述目标分片组的领导节点,将所述目标分片组的领导节点的节点表示发送至所述客户端,以向所述客户端指示所述第一处理请求对应的领导节点。所述控制节点将所述第一处理请求发送至所述目标分片组的领导节点。
在一示例中,数据存储系统中的节点包括:节点1、节点2和节点3,客户端发送的第一处理请求为数据写请求,客户端首先访问控制节点,控制节点根据存储的路由表获取数据写请求中的key所在的分片(region),并确定该region的领导节点为节点3,此时,数据存储系统中该region的领导节点节点3接收该数据写请求。
S402、所述领导节点创建所述第一处理请求对应的日志,并将所述日志发送至跟随节点。
所述日志用于所述跟随节点对所述跟随节点中的数据进行所述第一处理请求对应的处理,所述跟随节点为所述至少两个存储节点中除所述领导节点之外的存储节点。
领导节点接收到第一处理请求后,创建日志,将第一处理请求记录在创建的日志中。
本申请实施例中,日志中还包括以下附加信息:索引值(index)和任期编号(Term)。其中,索引值用来标识该日志的,是一个连续的、单调递增的整数号码。其中,一个日志对应一个索引值。任期编号为创建这条日志项的领导者的任期编号。
领导者创建日志后,将日志同步至数据存储系统中的跟随节点。
这里,领导者可复制创建的日志,得到日志副本,将日志副本发送至跟随节点。
在一示例中,数据存储系统中的存储节点包括:节点A、节点B、节点C、节点D、节点E和节点F,其中,节点E为领导节点,节点E创建接收的第一处理请求对应的日志,并将日志分别同步至节点A、节点B、节点C、节点D和节点F,使得节点F进行所述第一处理请求对应的处理。
S403、所述领导节点使用第一存储引擎对所述领导节点中存储的数据进行所述第一处理请求对应的处理。
数据存储系统中各存储节点使用存储引擎作为轻量级嵌入式存储库。领导节点中的存储引擎称为第一存储引擎,跟随节点中的存储引擎称为第二存储引擎。其中,存储节点中使用的存储引擎可为RocksDB。
本申请实施例中,数据存储系统中的存储节点以键值对的形式存储数据,针对不同的场景,主键不同。Rowkey包括:分片ID、业务标识、记录主键哈希。在一示例中,在读多写少的场景下,主键采用固定前缀,在读少些多的场景下,主键通过哈希(hash)反转的方式确定。
领导节点调用第一存储引擎根据第一处理请求对存储的数据进行处理。在一示例中,第一处理请求用于请求将key1对应的数据删除,则领导节点调用第一存储引擎将存储的数据中key1对应的数据删除。在一示例中,数据请求用于请求将key2的数据修改为value2,则领导节点调用第一存储引擎将存储的数据中key2对应的数据value1修改为value2。
在一些实施例中,S403的实施包括:
所述第一存储引擎确定所述第一处理请求对应的第一过滤信息和数据处理类型;所述第一存储引擎根据所述第一过滤信息确定第一目标数据;所述第一存储引擎对所述第一目标数据执行所述数据处理类型对应的处理。
领导节点接收到第一处理请求,调用第一存储引擎,由第一存储引擎对第一处理请求进行处理。第一存储引擎为嵌入式、持久化存储、KV型且非常适用于快读存取的存储引擎,比如:RocksDB。
第一存储引擎确定第一处理请求携带的第一过滤信息和数据处理类型,第一过滤信息表征需要处理的第一目标数据的过滤条件,其中,第一过滤信息可包括以下信息至少之一:起始日期、结束日期、起始主键、结束主键。数据处理类型包括:反序列化数据获取、序列化数据获取、数据写入、数据删除等。
当数据处理类型为反序列化数据获取,领导节点根据第一目标数据中的对象特征信息,通过反序列化重建对象;将所述重建对象发送至所述客户端。其中,对象特征信息包括:数据的状态及描述信息。
这里,反序列化为将为字节序列的数据还原出Java对象。在一示例中,为字节序列的数据可为protobuf对象,则通过反序列化,将protobuf对象转换为简单的Java对象(Plain Ordinary Java Objects,POJO对象)。
在实际应用中,在反序列化失败的情况下,领导节点将第一目标数据以字节序列的形式发送至客户端。
在一示例中,第一过滤信息包括起始日期和结束日期,数据处理类型为反序列化数据获取,则第一存储引擎根据各主键的日期确定起始日期和结束日期之间的时间段对应的目标主键,并基于目标主键查找第一目标数据,并对第一目标数据进行反序列化处理,得到序列化处理结果,将处理结果发送至客户端。
在一示例中,第一处理请求指示获取时间1至时间2这段时间内的序列化数据,则第一存储引擎获取时间1和时间2这段时间内的数据,并将时间1和时间2这段时间内的数据进行序列化,将序列化结果返回至客户端。
在一示例中,第一处理请求指示删除时间1至时间2这段时间内的数据,则第一存储引擎获取时间1和时间2这段时间内的数据,并将时间1和时间2这段时间内的数据删除。
在一示例中,第一处理请求指示增加数据,则第一存储引擎进行数据的写入。
本申请实施例中,数据存储系统在增加数据时,可先获取存储的数据,并将存储的数据返送至客户端,客户端将待增加的数据添加至数据存储系统返回的数据中,得到新的数据,并将新的数据写入数据存储系统。
本申请实施例中,S402与S401的执行顺序不分先后。
在一示例中,领导节点完成第一处理请求的处理后,将日志发送至跟随节点。
在一示例中,领导节点将日志发送至跟随节点后,对第一处理请求进行处理。
在领导节点将日志发送至跟随节点后,对第一处理请求进行处理的情况下,跟随节点接收到日志后,确定是否同意对第一处理请求进行处理,如果同意,则向领导节点返回日志接收成功响应,以指示领导节点同意对该第一处理请求的处理。当领导节点接收到跟随节点的日志接收成功响应,且接收的日志成功响应所对应的跟随节点的数量达到指定数量,则认为和跟随节点之间达成对该第一处理请求进行处理的共识,对该第一处理请求进行处理。
本申请实施例中,领导节点接收客户端的第一处理请求;所述领导节点创建所述第一处理请求对应的日志,并将所述日志发送至跟随节点,所述日志用于所述跟随节点对所述跟随节点中的数据进行所述第一处理请求对应的处理,所述跟随节点为所述至少两个存储节点中除所述领导节点之外的存储节点;所述领导节点使用第一存储引擎对所述领导节点中存储的数据进行所述第一处理请求对应的处理;所述第一存储引擎为所述领导节点中的存储引擎,在对客户端的第一处理请求处理的同时,保证数据存储系统的数据一致性,从而避免单点故障,提高数据存储系统的维护的便捷性。
在一些实施例中,跟随节点接收到日志后,对日志携带的第一处理请求进行处理,以保持和领导节点的数据同步。
跟随节点处理第一处理请求的实施包括:所述跟随节点接收所述日志,调用所述第二存储引擎;所述第二存储引擎为所述跟随节点中的存储引擎;所述第二存储引擎根据所述日志确定所述第一处理请求对应的第一过滤信息和数据处理类型;所述第二存储引擎根据所述第一过滤信息确定第二目标数据;所述第二存储引擎对所述第二目标数据执行所述数据处理类型对应的处理。
跟随节点接收到第一处理请求,调用第二存储引擎,由第二存储引擎对第一处理请求进行处理。第二存储引擎为嵌入式、持久化存储、KV型且非常适用于快读存取的存储引擎,比如:RocksDB。
第二存储引擎确定日志中携带的第一处理请求,确定第一处理请求携带的第一过滤信息和数据处理类型,第一过滤信息表征需要处理的第二目标数据的过滤条件,其中,第一过滤信息可包括以下信息至少之一:起始日期、结束日期、起始主键、结束主键。数据处理类型包括:反序列化数据获取、序列化数据获取、数据写入、数据删除等。
在一示例中,第一处理请求指示删除时间1至时间2这段时间内的数据,则第二存储引擎获取时间1和时间2这段时间内的数据,并将时间1和时间2这段时间内的数据删除。
在一示例中,第一处理请求指示增加数据,则第二存储引擎进行数据的写入。
在实际应用中,领导节点对第一处理请求进行处理后,向所述跟随节点发送处理确认通知;所述跟随节点接收到所述存储节点发送的针对所述第一处理请求的处理确认通知,基于所述日志,对所述跟随节点中的数据进行处理。其中,处理确认通知可为领导节点发送至跟随节点的心跳,也可为领导节点发送的携带下一条日志的消息。
在一些实施例中,如图3B所示,所述数据存储系统还包括:控制节点。
所述方法还包括:所述控制节点接收第二处理请求;所述控制节点根据所述第二处理请求确定第二过滤信息和节点处理类型;所述控制节点根据所述第二过滤信息确定目标存储节点;所述控制节点对所述目标存储节点执行所述节点处理类型对应的处理。
当客户端基于用户对维护页面中的节点的输入操作,生成第二处理请求,并通过与控制节点之间的接口将第二处理请求发送至控制节点。
控制节点接收到第二处理请求后,确定第二处理请求携带的过滤信息即第二过滤信息和节点处理类型,根据第二过滤信息确定目标存储节点。
在一示例中,第二过滤信息包括一个或多个切片信息,则将该切片信息对应的切片的对端节点、参与者节点、存活节点作为目标存储节点。其中,切片信息可包括切片标识。
在一示例中,第二过滤信息包括:一个或多个节点信息,在将该节点信息对应的节点作为目标存储节点。其中,节点信息可包括节点的IP地址、端口等地址信息。
控制节点根据对目标存储节点执行第二处理请求携带的处理类型即节点处理类型。其中,节点处理类型包括:获取节点关联的节点信息,增加节点、删除节点等。
当节点处理类型包括:获取节点关联的节点信息,则控制节点获取目标存储节点关联的节点的节点信息,其中,关联的节点可为对端节点、观察者节点、存活节点。
当节点处理类型包括:增加节点,则控制节点控制在数据存储系统中增加目标存储节点。
当节点处理类型包括:删除节点,则控制节点控制在数据存储系统中删除目标存储节点。
在一示例中,第二处理请求指示获取分片1关联的节点信息,控制节点获取分片1的对端节点、观察者节点(learner节点)和存储节点的节点信息,并将所获取的节点信息发送至客户端。
在一示例中,第二处理请求指示获取所有分片关联的节点信息,控制节点分别获取各分片的对端节点、观察者节点(learner节点)和存储节点的节点信息,并将所获取的节点信息发送至客户端。
在一示例中,第二处理请求指示删除所节点地址为A的节点,控制节点确定节点地址为A的存储节点,并将确定的存储节点删除。
在一些实施例中,所述节点处理类型包括:分片划分,所述方法还包括:所述控制节点根据所述第二处理请求确定目标分片数量;所述控制节点调度所述目标存储节点中的分片数量为所述目标分片数量;所述目标存储节点包括所述至少两个存储节点。
这里,本申请实施例中,当客户端输入操作的输入信息包括目标分片数量的情况下,可对目标存储节点的分片进行调整,将各目标存储节点的分片数量调整为目标分片数量。在一示例中,目标存储节点为数据存储系统中的全部存储节点。在一示例中,目标存储节点为数据存储系统中的部分存储节点。
在一些实施例中,在一些实施例中,如图3B所示,所述数据存储系统还包括:控制节点。所述方法还包括:所述控制节点接收第三处理请求;所述控制节点根据所述第三处理请求确定第三过滤信息和领导节点处理类型;所述控制节点根据所述第三过滤信息确定目标领导节点;所述控制节点对所述目标领导节点执行所述领导节点处理类型对应的处理。
当客户端基于用户对维护页面中的领导节点的输入操作,生成第三处理请求,并通过与控制节点之间的接口将第三处理请求发送至控制节点。
控制节点接收到第三处理请求后,确定第三处理请求携带的过滤信息即第三过滤信息和领导节点处理类型,根据第三过滤信息确定目标领导节点。
在一示例中,第二过滤信息包括一个或多个切片信息,则将该切片信息对应的切片的领导节点作为目标领导节点。其中,切片信息可包括切片标识。
在一示例中,第二过滤信息包括:一个或多个节点信息,在将该节点信息对应的节点作为目标领导节点。其中,节点信息可包括节点的IP地址、端口等地址信息。
控制节点根据对目标存领导节点执行第三处理请求携带的处理类型即领导节点处理类型。其中,领导节点处理类型包括:获取领导节点信息,领导节点切换、领导节点平衡等。
当领导节点处理类型包括:获取领导节点信息,则控制节点获取目标领导节点的节点信息。
当领导节点处理类型包括:领导节点切换,则控制节点控制将领导节点强制切换至目标领导节点。这里,可强制切换所有切片组的领导节点为目标领导节点。
当领导节点处理类型包括:领导节点平衡,则控制节点平衡所有分片的领导节点。
在一示例中,第三处理指令指示获取分片1关联的领导节点的节点信息,控制节点获取分片1的领导节点作为领导节点的分片,并将分片的数量发送至客户端。
在一示例中,第三处理指令为强制切换所有的分片的领导节点为指定节点,则控制节点将所有的分片的主节点切换为指定节点。
在一示例中,第三处理指令为平衡所有分片的节点,则控制节点获取数据存储系统中的分片数和节点数,计算节点分担的领导节点的数量,并平衡各节点承担的领导节点的数量,修改路由表中各分片的领导节点的信息,从而自动平衡领导节点数量,防止所有分片节点的领导节点堆积在个别节点上,均匀集群压力。
在一示例中,第三处理指令指示获取所有领导点的节点信息,控制节点统计当前各分片的领导节点的信息,并将各分片的领导节点的信息发送至客户端。
在一示例中,第三处理指令指示统计当前节点中作为领导节点的分片的数量,控制节点获取所有主领导节点的节点信息,统计当前各分片的主节点的信息,并将各分片的领导节点的信息发送至客户端。
在一些实施例中,如图2所示,所述数据存储系统还包括:单点数据库;所述方法还包括:
所述领导节点接收数据同步请求;
所述领导节点根据所述数据同步请求,控制与所述单点数据库的数据的同步。
本申请实施例中,数据同步请求可包括:开始同步请求和停止同步请求。
当领导节点接收到开始同步请求,则与单点数据库开始进行数据的同步;当领导节点接收到停止同步请求,则停止与单点数据库的数据的同步。
本申请实施例中,领导节点和单点数据库进行数据同步失败时,可再次触发双写请求。在领导节点和单点数据库进行数据同步成功时,可插入同步标记,避免重复执行不必要的同步。
本申请实施例中,维护页面中提供启动或停止双写的接口,用户可基于维护页面提供的接口触发双写请求即数据同步请求,在数据存储系统和单点数据库之间进行数据的同步,从而兼容单点数据库。
在一些实施例中,数据存储系统通过共识算法所包括的至少两个存储节点中进行领导节点的选举。其中,第一存储节点进入选举状态,并向第二存储节点发送投票请求;当所述第一存储节点接收到第二存储节点响应所述投票请求的投票确认的数量为第一数量,且确定所述第一数量大于第一数量阈值,则进入领导状态,其中,所述领导状态下的所述第一存储节点为领导节点,所述第二数量阈值与所述存储节点的数量相关。
本申请实施例中,数据存储系统中的存储节点构成一个数据存储集群即第一存储集群,第一存储集群通过共识算法从所包括的存储节点或一个分片组对应的存储节点中选出领导节点。
在一些实施例中,所述第一存储节点向所述第二存储节点广播选举完成消息;所述选举完成消息指示所述第一存储节点为所述领导节点;所述第二存储节点从所述选举状态切换至跟随状态,所述跟随状态下的所述第二存储节点为跟随节点。
本申请实施例中,领导节点的状态为leader,跟随节点的状态为follower。其中,以共识算法为Raft算法为例,存储节点的状态处于以下三种状态之一:leader、follower、candidate。正常状态下,中只有一个节点的状态为leader,其余节点的状态全部都为follower。当节点的状态为follower,该节点是被动的,它们不会主动发出消息,只是响应状态为leader或candidate的节点的消息,或者转发客户端的请求给状态为leader的节点。candidate是一种临时的状态。
在一示例中,第一集群中的节点包括10个节点:节点1、节点2…节点10,且通过共识算法选举出节点1的状态为leader,则节点1为主节点,其余节点为状态为follower的辅节点。
节点的状态转移图如图5所示,每个节点在加入集群的时候都会初始化为follower501,而当前集群没有状态为leader502的节点的时候,follower501会进行选举试图成为leader502,首先,状态为follower501的节点将自己的状态转变为candidate503,然后向集群内的其他成员发起投票请求,若该作为candidate503的节点收到了大多数人的赞成票,那么它的状态就会变成leader502,然后在集群内广播心跳消息,接到心跳消息的follower501或其他candidate503就会认识到此时已有处于leader502的主节点,会停止自己的竞选行为而重新变为follower501,稳定的集群状态就形成。
将节点中的数据进行分片的情况下,每个片由独立的分片组来进行管理,且每个分片组的主节点之间相互独立。比如:第一存储集群中包括:节点1、节点2和节点3,且节点中的数据切分为三个分片,则节点1中包括分片11、分片12、分片13,节点2中包括分片:分片21、分片22、分片23,节点3中包括分片:分片31、分片32、分片33,其中,分片11、分片21和分片31属于同一个分片组:分片组1,且分片组1的主节点为节点1,分片12、分片22和分片32属于同一个分片组:分片组2,且分片组2的主节点为节点3,分片13、分片23和分片33属于同一个分片组:分片组3,且分片组3的主节点为节点2。
在一些实施例中,所述控制节点根据存储的数据生成存储特征;所述控制节点将所述存储特征发送至所述客户端。
这里,客户端根据控制节点发送的所述存储特征,能够对所述数据存储系统进行监控。
本申请实施例中,数据存储系统根据存储的数据生成表征存储状态的存储特征,并上报至客户端,使得客户端能够对数据存储系统的存储情况进行监控,其中,存储特征包括:元数据、集群节点状态和性能数据等。
本申请实施例中,客户端接收到存储特征后,可对全部或部分存储特征进行监控,或将存储特征发送至监控后台,以对数据存储系统的状态进行分析。
本申请实施例提供的数据处理方法,以共识算法为核心,实现一套轻量级嵌入式分布式KV集群,且该轻量级嵌入式分布式KV集群具有一致性访问、便于操作、自动监控等特点。
下面,以共识算法为Raft算法为例,对本申请实施例提供的数据处理方法进行进一步说明。
相关技术中,HBase是一个分布式的、面向列的开源数据库,Hbase集群智能切换组件用于Hbase主备集群自动切换和集群元信息高速存取,该组件可多节点独立部署,提供表现层状态转化(Representational State Transferrest,REST)API接口,结合前端负载均衡,可为大规模Hbase集群提供智能快速切换服务。目前Hbase集群智能切换组件采用的元数据存取方案如下:
(1)、基于关系型数据库MySQL
使用传统关系型数据库MySQL单点提供Hbase集群智能切换组件元数据读写服务。
(2)基于中间件分布式应用程序协调服务(Zookeeper)
使用Zookeeper集群提供Hbase集群智能切换组件元数据一致性读写服务。
(3)基于本地文件系统
基于本地文件系统,通过直接读写本地文件的方式提供元数据读写服务。
元数据存取方案(1)存在技术问题:必须单独部署和维护MySQL数据库,Hbase集群智能切换组件属于轻量级应用场景,不考虑部署和维护MySQL集群,只部署单点MySQL,然而单点MySQL存在单点故障和性能瓶颈。
元数据存取方案(2)存在技术问题:必须单独部署和维护Zookeeper集群,另外,Zookeeper提供集群一致性协调服务,但是对于Hbase集群智能切换组件元数据强一致性读写的场景明显有点力不从心,并且存在节点数据大小限制和节点树臃肿和性能瓶颈问题。
元数据存取方案(3)存在技术问题:数据存储采用读写文件的方式,对于多维业务元数据难以组织和建立关联,需要逐行读取和解析,性能无法满足要求,且需要解决数据一致性问题,否则无法满足业务场景和需求。其中,以二维数据为例,使用二维表组织数据,但所有的数据不可能放入同一张表中,会造成结构混乱、扩展性差、空间浪费等问题,所以表设计需要满足范式并进行分表处理,而分表又会产生新的问题,表与表之间需要有联系,所以通过约束建立关联。通过读写文件的方式是很难解决这些问题,更别说更高维度的数据,如果将所有数据冗余存储,其成本和效能也无法满足需求。
本申请实施例提供的数据处理方法,用于解决上述方案存在的单点故障、性能瓶颈问题以及元数据分布式一致性访问的问题。
本申请实施例提供的数据处理方法,基于JRaft lib库开发,使用RocksDB作为轻量级嵌入式存储库,通过Raft算法节点选举算法和RPC通信框架实现一个轻量高效的分布式KV存储系统,支持元数据分布式一致性存取,支持多分片多节点部署,可弹性扩展,解决MySQL单点问题,并通过Raft选举算法解决数据一致性问题,同时支持JRaftKV集群监控指标上报和集群便捷操作。
本申请实施例提供的数据处理方法涉及以下几个方面:
1、JRaftKV节点生命周期管理,节点服务启停兼容原HBase集群智能切换组件服务。首先通过原HBase组件启停命令来启停JRaftKV集群节点,根据Raft特性,一般部署奇数个这样的节点构成集群服务。其中生命周期包括:启动节点服务和停止节点服务。其中,在HBase进程中启停JRaftKV节点的节点服务。
启动命令示范:hbase-daemon.sh start组件服务名
2、自定义存储驱动,通过对智能切换组件服务外部API接口进行兼容开发,不需要变更原有MySQL接口逻辑,底层存储主要是通过RocksDB的原生接口调用实现元数据快速存取。在一示例中,接口包括:读(get)、写(put)、扫描(scan)等。
3、自定义分片数,支持多分片部署,同时可根据不同场景采取不同存储策略,如读多写少场景中,Rowkey采用固定前缀,读少写多的场景中,Rowkey采用hash+反转。
在一示例中,Rowkey由以下信息组成:分片ID:业务标识:记录主键哈希。
4、通过扩展JRaft lib库串行外设接口(Serial Peripheral Interface,SPI)接口实现KV集群元数据自动上报,将集群元数据和集群健康指标上报到组件后台和监控系统,其中,监控系统可为Grafana系统。同时实现组件后台KV集群操作,包括支持手动触发KV集群和MySQL双写数据同步操作、KV集群数据操作、KV集群节点操作以及leader领导节点一键切换和手动平衡操作。
在一示例中,集群中包括三个节点:节点61、节点62和节点63,该集群的启动和数据一致性访问流程如图6所示,包括:
S601、集群中的节点建立连接;
其中,节点61向节点62发送连接请求,节点62向节点63发送连接请求,节点63向节点62发送连接响应,以建立连接,节点62向节点61发送连接响应,以建立连接,从而在节点61、节点62和节点63之间建立连接。
S602、集群中的节点初始化;
基于HBase组件发送启动命令指集群中的节点,各节点启动,并初始化为follower。
S603、集群中的节点进行leader的选举。
集群中的节点通过共识算法Raft从节点61、节点62和节点63中选举出leader。
节点的状态转换如图5所示,当节点基于超时机制发起选举时,将状态从follower转变为candidate,并向其他节点发起投票请求。当节点接收到其他节点的投票,且接收到多数节点的投票,则将状态从candidate转变为leader,然后在集群内广播心跳消息,接收到心跳消息的节点通过接收的心跳消息发现集群中已有leader,则停止自己的竞选行为,将状态从candidate转变为follower。
其中,follower长时间未收到来自leader的心跳消息,触发选举时停,转变为candidate,将Term加一,然后将新Term和自身的最新日志序号进行广播以期获取选票。
其他收到投票请求的节点先过滤掉Term小于自己的请求,然后进行以下判断:1、自己是否已投票;2、是否认为现在有leader;3、该投票请求的日志index是否大于自己。若所有判断全通过则投赞成票。
收到过半数节点的赞成票的candidate将转变成为leader,开始定时发送心跳消息抑制其他节点的选举行为。
投票条件被用来保证leader选举的正确性(唯一),随机的选举时停则被用来保证选举的效率,因为集群处于选举状态时是无法对外提供服务的,应当尽量缩短该状态的持续时间,尽量减小竞选失败发生的概率。
本申请实施例中,通过上述选举,选举出节点62为集群的leader。
S604、集群的leader接收数据写入请求,并执行数据写入操作。
集群的leader节点62接收集群的数据写入请求,并在节点62中执行写入操作,并生成日志数据。
S605、集群中的处于leader的节点和集群中处于follower的节点进行数据同步。
集群中的leader复制日志,并将复制的日志发送至其他的作为follower的节点,作为follower的节点根据复制的日志进行数据同步,使得作为follower的各节点和作为leader的节点的数据保持一致,从而实现集群的数据一致性。
在图6中,以3个节点构成JRaftKV存储集群为例对本申请实施例提供的数据处理方法进行描述,每个节点启动后相互建立通道进行通信,节点启动后的初始状态为Follower,通过超时机制发起选举,记录选举轮次term,其中,选举轮次term单调递增。通过Raft多数派选举算法选出leader,并由leader节点负责处理客户端请求以及复制日志到所有Followers。
本申请实施例提供的数据处理系统如图7所示,包括:
客户端71、PD集群72和存储集群73,其中,PD集群72包括:PD1、PD2、PD3,存储集群73中包括节点61、节点62和节点63。
客户端71向PD集群72发送指示刷新路由表的请求,PD集群72根据路由表获取key所在数据分片1(region1)。假设region1分组由raft选举算法选举出leader为节点63,节点61和节点62为follower,由节点63接受并执行指示数据写入的put请求,由raft算法实现数据强一致性,数据分别由leader成功同步到所有follower后才返回成功。
其中,节点中同一分片组中的领导节点中的分片对客户端的请求进行处理,并将请求结果通过日志复制的方式同步至分片组中的其他分片。
本申请实施例中,PD提供的PD服务主要提供以下功能:
作为全局的中心总控节点,负责整个集群的调度,无需自管理可不依赖,即不需要自动平衡和split自动切分等功能可不启动PD服务。
通过事件触发机制获取并上报集群元数据和监控指标;
周期检测leader节点状态,自动平衡leader节点数量,防止所有分片节点的leader堆积在个别服务器上,均匀集群压力。
其中,自动平衡的过程包括:获取集群分片数和节点数,计算节点分担leader数量。获取路由表中当前分片的元信息,修改元信息中的leader节点;重新刷新分片路由表,获取分片leader节点信息,如果为空(未切换成功)则切换失败;计算集群分片中存储Rowkey数量,达到阈值就对该分片(组)进行split切分操作。
图8为本申请实施例提供的维护页面的页面效果示意图,其中,页面800中包括区域801、区域802、区域803和区域804。其中,区域801的操作选项为数据存储系统,区域802的操作选项为数据,区域803的操作选项为节点,区域804的操作选项为领导节点。
区域801中提供的操作接口包括:Get、Start、Stop,其中,Start/Stop:用于触发同步作业,同步成功后插入同步标记,防止重复执行,对于失败作业可再次触发。Get:用于获取当前同步状态。
区域802中提供的操作接口包括:参数StartDate、EndDate、StartKey/Key、EndKey/Value的输入接口、Get Deserial、Get Serial、Add Serial/Key、Delete。
其中,
参数StartDate、EndDate:指示时间范围、通过数据存储rowkey包含时间戳支持日期过滤。
参数StartKey、EndKey:根据rowkey获取分区数据,默认支持fuzzy模糊匹配。
参数Key、Value:支持kv格式数据存储。
Get Deserial:获取反序列化数据,反序列化失败则返回序列化数据,支持日期过滤。
Get Serial:获取序列化数据,支持日期过滤。
Add Serial:kv数据存储,对应Get Serial序列化数据,同时支持String类型数据。防止数据误操作,建议先通过Get Serial获取并保存数据,可以回滚插入数据。
Delete:支持根据起始rowkey范围删除,效率较高但无法回滚,不建议操作;支持日期过滤删除;效率较低可以根据时间点和日志信息回滚,建议添加日期条件,日志将记录详细时间点删除的记录,从而支持回滚,无日期条件无法回滚删除记录。
区域803中提供的操作接口包括:参数RegionId、ServerAddress(ip:port[/learner])的输入接口、Get、Add、Remove。其中,
参数RegionId:分片ID,多个以逗号分隔
参数ServerAddress(ip:port[/learner]):节点地址,支持learner节点,以英文逗号分隔
Get:获取所有分片的对端节点、learnner节点、存活节点。
Add、Remove:增删节点。
区域804中提供的操作接口包括:参数RegionId、ServerAddress(ip:port)的输入接口、Get、Transfer、Rebalance。其中,
参数RegionId:分片ID,多个以逗号分隔
参数ServerAddress(ip:port):节点地址,以英文逗号分隔。
Get:获取当前节点的leader个数和所有分片的leader信息,支持条件过滤。
Transfer:强制切换(所有)分片leader到指定节点。
Rebalance:手动平衡所有分片leader节点。
本申请实施例中,HBase集群智能切换组件服务通过自定义存储驱动为双写(JRaftKV集群、单点MySQL)和自定义10个分片,Rowkey采用固定前缀,实现支持部署节点数弹性扩展和数据一致性访问,可解决原MySQL单点方案瓶颈,并支持集群监控上报和后台操作功能,包括数据同步操作、KV集群数据操作、KV集群节点操作以及leader领导节点一键切换和手动平衡操作等。
图1为本申请实施例的一种数据存储系统的实现结构示意图,如图1所示,包括:至少两个存储节点,不同的所述存储节点存储的数据相同,所述至少两个存储节点中包括领导节点;
所述领导节点,接收客户端的第一处理请求;所述领导节点为所述至少两个存储节点中任一存储节点;
所述领导节点,创建所述第一处理请求对应的日志,并将所述日志发送至跟随节点,所述日志用于所述跟随节点对所述跟随节点中的数据进行所述第一处理请求对应的处理,所述跟随节点为所述至少两个存储节点中除所述领导节点之外的存储节点;
所述领导节点,使用第一存储引擎对所述领导节点中存储的数据进行所述第一处理请求对应的处理;所述第一存储引擎为所述领导节点中的存储引擎。
在一些实施例中,所述存储节点包括至少两个分片;不同所述存储节点中的分片的划分方式相同;不同存储节点中相同的分片构成一个分片组;其中,不同分片组的领导节点相互独立;所述数据存储系统还包括:控制节点;
所述控制节点接收所述第一处理请求,确定所述第一处理请求所属的目标分片组;
所述控制节点确定所述目标分片组的领导节点,将所述目标分片组的领导节点的节点表示发送至所述客户端,以向所述客户端指示所述第一处理请求对应的领导节点。
在一些实施例中,所述第一存储引擎确定所述第一处理请求对应的第一过滤信息和数据处理类型;所述第一存储引擎根据所述第一过滤信息确定第一目标数据;所述第一存储引擎对所述第一目标数据执行所述数据处理类型对应的处理。
在一些实施例中,所述跟随节点接收所述日志,调用所述第二存储引擎;所述第二存储引擎为所述跟随节点中的存储引擎;
所述第二存储引擎根据所述日志确定所述第一处理请求对应的第一过滤信息和数据处理类型;
所述第二存储引擎根据所述第一过滤信息确定第二目标数据;
所述第二存储引擎对所述第二目标数据执行所述数据处理类型对应的处理。
在一些实施例中,所述数据存储系统还包括:控制节点;
所述控制节点接收第二处理请求;
所述控制节点根据所述第二处理请求确定第二过滤信息和节点处理类型;
所述控制节点根据所述第二过滤信息确定目标存储节点;
所述控制节点对所述目标存储节点执行所述节点处理类型对应的处理。
在一些实施例中,当所述节点处理类型包括:分片划分;
所述控制节点根据所述第二处理请求确定目标分片数量;
所述控制节点调度所述目标存储节点中的分片数量为所述目标分片数量;所述目标存储节点包括所述至少两个存储节点。
在一些实施例中,所述数据存储系统还包括:控制节点,所述方法还包括:
所述控制节点接收第三处理请求;
所述控制节点根据所述第三处理请求确定第三过滤信息和领导节点处理类型;
所述控制节点根据所述第三过滤信息确定目标领导节点;
所述控制节点对所述目标领导节点执行所述领导节点处理类型对应的处理。
在一些实施例中,所述数据存储系统还包括:单点数据库;
所述领导节点接收数据同步请求;
所述领导节点根据所述数据同步请求,控制与所述单点数据库的数据的同步。
在一些实施例中,第一存储节点进入选举状态,并向第二存储节点发送投票请求;
当所述第一存储节点接收到第二存储节点响应所述投票请求的投票确认的数量为第一数量,且确定所述第一数量大于第一数量阈值,则进入领导状态,其中,所述领导状态下的所述第一存储节点为领导节点,所述第二数量阈值与所述存储节点的数量相关。
在一些实施例中,所述第一存储节点向所述第二存储节点广播选举完成消息;所述选举完成消息指示所述第一存储节点为所述领导节点;
所述第二存储节点从所述选举状态切换至跟随状态,所述跟随状态下的所述第二存储节点为跟随节点。
需要说明的是,本申请实施例提供的数据处理系统包括所包括的各逻辑单元,可以通过电子设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU,Central Processing Unit)、微处理器(MPU,MicroProcessor Unit)、数字信号处理器(DSP,Digital Signal Processor)或现场可编程门阵列(FPGA,Field-Programmable Gate Array)等。
以上系统实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请系统实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的数据处理方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
本申请实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据处理方法中的步骤。
对应地,本申请实施例提供一种存储介质,也就是计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中提供的数据处理方法。
这里需要指出的是:以上存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一些实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种数据处理方法,其特征在于,应用于数据存储系统,所述数据存储系统包括:至少两个存储节点,不同的所述存储节点存储的数据相同,所述方法包括:
领导节点接收客户端的第一处理请求;所述领导节点为所述至少两个存储节点中任一存储节点;
所述领导节点创建所述第一处理请求对应的日志,并将所述日志发送至跟随节点,所述日志用于所述跟随节点对所述跟随节点中的数据进行所述第一处理请求对应的处理,所述跟随节点为所述至少两个存储节点中除所述领导节点之外的存储节点;
所述领导节点使用第一存储引擎对所述领导节点中存储的数据进行所述第一处理请求对应的处理;所述第一存储引擎为所述领导节点中的存储引擎。
2.根据权利要求1所述的方法,其特征在于,所述存储节点包括至少两个分片;不同所述存储节点中的分片的划分方式相同;不同存储节点中相同的分片构成一个分片组;其中,不同分片组的领导节点相互独立;所述数据存储系统还包括:控制节点;所述方法还包括:
所述控制节点接收所述第一处理请求,确定所述第一处理请求所属的目标分片组;
所述控制节点确定所述目标分片组的领导节点,将所述目标分片组的领导节点的节点表示发送至所述客户端,以向所述客户端指示所述第一处理请求对应的领导节点。
3.根据权利要求1所述的方法,其特征在于,所述领导节点使用第一存储引擎对所述领导节点中存储的数据进行所述第一处理请求对应的处理,包括:
所述第一存储引擎确定所述第一处理请求对应的第一过滤信息和数据处理类型;
所述第一存储引擎根据所述第一过滤信息确定第一目标数据;
所述第一存储引擎对所述第一目标数据执行所述数据处理类型对应的处理。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述跟随节点接收所述日志,调用所述第二存储引擎;所述第二存储引擎为所述跟随节点中的存储引擎;
所述第二存储引擎根据所述日志确定所述第一处理请求对应的第一过滤信息和数据处理类型;
所述第二存储引擎根据所述第一过滤信息确定第二目标数据;
所述第二存储引擎对所述第二目标数据执行所述数据处理类型对应的处理。
5.根据权利要求1所述的方法,其特征在于,所述数据存储系统还包括:控制节点,所述方法还包括:
所述控制节点接收第二处理请求;
所述控制节点根据所述第二处理请求确定第二过滤信息和节点处理类型;
所述控制节点根据所述第二过滤信息确定目标存储节点;
所述控制节点对所述目标存储节点执行所述节点处理类型对应的处理。
6.根据权利要求5所述的方法,其特征在于,当所述节点处理类型包括:分片划分,所述方法还包括:
所述控制节点根据所述第二处理请求确定目标分片数量;
所述控制节点调度所述目标存储节点中的分片数量为所述目标分片数量;所述目标存储节点包括所述至少两个存储节点。
7.根据权利要求1所述的方法,其特征在于,所述数据存储系统还包括:控制节点,所述方法还包括:
所述控制节点接收第三处理请求;
所述控制节点根据所述第三处理请求确定第三过滤信息和领导节点处理类型;
所述控制节点根据所述第三过滤信息确定目标领导节点;
所述控制节点对所述目标领导节点执行所述领导节点处理类型对应的处理。
8.根据权利要求1所述的方法,其特征在于,所述数据存储系统还包括:单点数据库;所述方法还包括:
所述领导节点接收数据同步请求;
所述领导节点根据所述数据同步请求,控制与所述单点数据库的数据的同步。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
第一存储节点进入选举状态,并向第二存储节点发送投票请求;
当所述第一存储节点接收到第二存储节点响应所述投票请求的投票确认的数量为第一数量,且确定所述第一数量大于第一数量阈值,则进入领导状态,其中,所述领导状态下的所述第一存储节点为领导节点,所述第二数量阈值与所述存储节点的数量相关。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述第一存储节点向所述第二存储节点广播选举完成消息;所述选举完成消息指示所述第一存储节点为所述领导节点;
所述第二存储节点从所述选举状态切换至跟随状态,所述跟随状态下的所述第二存储节点为跟随节点。
11.一种计算机设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至10任一项所述数据处理方法中的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现权利要求1至10任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110178800.2A CN113742336A (zh) | 2021-02-09 | 2021-02-09 | 一种数据处理方法及设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110178800.2A CN113742336A (zh) | 2021-02-09 | 2021-02-09 | 一种数据处理方法及设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113742336A true CN113742336A (zh) | 2021-12-03 |
Family
ID=78728169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110178800.2A Pending CN113742336A (zh) | 2021-02-09 | 2021-02-09 | 一种数据处理方法及设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113742336A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114448900A (zh) * | 2022-04-02 | 2022-05-06 | 南京邮电大学 | 基于扩展raft算法的SDN控制器交互方法及系统 |
-
2021
- 2021-02-09 CN CN202110178800.2A patent/CN113742336A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114448900A (zh) * | 2022-04-02 | 2022-05-06 | 南京邮电大学 | 基于扩展raft算法的SDN控制器交互方法及系统 |
CN114448900B (zh) * | 2022-04-02 | 2022-08-02 | 南京邮电大学 | 基于扩展raft算法的SDN控制器交互方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11360854B2 (en) | Storage cluster configuration change method, storage cluster, and computer system | |
CN111723160B (zh) | 一种多源异构增量数据同步方法及系统 | |
US10078682B2 (en) | Differentiated secondary index maintenance in log structured NoSQL data stores | |
US10496669B2 (en) | System and method for augmenting consensus election in a distributed database | |
ES2881606T3 (es) | Sistema de ficheros geográficamente distribuido que usa replicación de espacio de nombres coordinada | |
US7653668B1 (en) | Fault tolerant multi-stage data replication with relaxed coherency guarantees | |
US10248682B2 (en) | Object storage system capable of performing snapshots, branches and locking | |
US7440977B2 (en) | Recovery method using extendible hashing-based cluster logs in shared-nothing spatial database cluster | |
CN105814544B (zh) | 用于支持分布式数据网格中的持久化分区恢复的系统和方法 | |
CN107832138B (zh) | 一种扁平化的高可用namenode模型的实现方法 | |
US20070061379A1 (en) | Method and apparatus for sequencing transactions globally in a distributed database cluster | |
CN103207867A (zh) | 处理数据块的方法、发起恢复操作的方法和节点 | |
CN108829720B (zh) | 数据处理方法及装置 | |
US20220207036A1 (en) | Data access method and apparatus, and data storage method and apparatus | |
US20120278429A1 (en) | Cluster system, synchronization controlling method, server, and synchronization controlling program | |
US20160246834A1 (en) | Locking and i/o improvements of systems built with distributed consistent database implementations within an object store | |
CN105493474A (zh) | 用于支持用于同步分布式数据网格中的数据的分区级别日志的系统及方法 | |
CN113010496B (zh) | 一种数据迁移方法、装置、设备和存储介质 | |
CN109639773A (zh) | 一种动态构建的分布式数据集群控制系统及其方法 | |
US20230110826A1 (en) | Log execution method and apparatus, computer device and storage medium | |
CN113010549A (zh) | 基于异地多活系统的数据处理方法、相关设备及存储介质 | |
CN113742336A (zh) | 一种数据处理方法及设备、存储介质 | |
CN105323271B (zh) | 一种云计算系统以及云计算系统的处理方法和装置 | |
CN116303789A (zh) | 多分片多副本数据库并行同步方法、装置及可读介质 | |
CN111752892A (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 |