一种分布式容错键值存储的方法及装置与流程

文档序号:19128765发布日期:2019-11-13 02:23阅读:166来源:国知局
本发明涉及大数据数据存储
技术领域
:。本发明进一步涉及一种分布式容错键值存储的方法及装置。
背景技术
::分布式系统中的数据存储器通常可以包括跨分布式系统的多个存储结构实施键值存储,其中键可以表示索引并且值可以表示存储和/或检索的对象。通过分布式系统的协调节点可以对指定的键值存储结构进行访问。nosql的结构通常提供弱一致性的保证,如最终一致性,或仅限于单个的数据项。这些特性意味着nosql数据库、key-value键值存储给予最终更多的自由度去选择更高性能、高可用以及更好扩展性的数据存储方法及方案。在对数据库中的数据进行crud增删改查操作时,基于cassandra构架建立拓扑结构,cassandra使用了分布式的hash-table环,这个环实现了key->servernode键-服务节点的映射,映射到这个环的键被关联到了特定的服务器节点。分配、映射键使用了某种特定的算法,如hash、基于键范围选值或者某种更复杂的方法。在环中的所有服务器节点中有一个协调节点,通过类似于paxos的一致性算法选出。然而,基于键值存储的关系型数据库在执行规模小而读写频繁、者大批量极少写访问的事务时,表现出来的性能通常不够理想,一致性不足、容错能力较差并且节点资源负载不均衡。因此,需要提供一种在基于键值存储的关系型数据库执行大批量、小型读写任务时提高一致性、增强容错能力并均衡节点负载的解决方案。技术实现要素:一方面,本发明基于上述目的提出了一种分布式容错键值存储的方法,包括以下步骤:基于cassandra构架建立键值存储的环形拓扑;设置环形拓扑中各节点的协调服务架构;响应于接收到多个增删改查任务,从基于协调服务架构的节点中选择至少两个节点作为协调节点;在协调节点处理增删改查任务。根据本发明的分布式容错键值存储的方法的实施例,其中协调服务架构包括私有成员协议、虚拟环拓扑和增删改查功能组件。根据本发明的分布式容错键值存储的方法的实施例,其中私有成员协议由传输层协议和故障检测协议组成,传输层协议配置为以组播的方式通知各节点环形拓扑的拓扑信息;故障检测协议配置为通过节点对于节点恢复请求的响应判断节点的故障情况。根据本发明的分布式容错键值存储的方法的实施例,其中还包括:基于拓扑信息通过哈希算法计算得出虚拟环拓扑。根据本发明的分布式容错键值存储的方法的实施例,其中在协调节点处理增删改查任务进一步包括:将多个增删改查任务分配至至少两个协调节点;至少两个协调节点并行地根据所分配到的增删改查任务基于增删改查功能组件生成执行指令;将执行指令发送至相应的服务节点,使服务节点按照写时复制机制和/或读时同步机制执行增删改查任务。根据本发明的分布式容错键值存储的方法的实施例,其中写时复制机制包括在执行写操作时,通过键-服务节点机制将数据映射写入到三个服务节点上形成同一数据的三个副本。根据本发明的分布式容错键值存储的方法的实施例,其中读时同步机制包括在执行读操作时,读取三个副本的数据并进行比较,若相同则反馈该数据;若不相同则反馈时间戳最新的副本的数据,并以该时间戳最新的副本同步三个副本的数据。根据本发明的分布式容错键值存储的方法的实施例,其中该方法适用于低于百万级数据存储的小型分布式键值存储。另一方面,本发明还提出了一种分布式容错键值存储的装置,包括:至少一个处理器;和存储器,存储有处理器可运行的程序代码,该程序代码在被处理器执行时实现以下步骤:基于cassandra构架建立键值存储的环形拓扑;设置环形拓扑中各节点的协调服务架构;响应于接收到多个增删改查任务,从基于协调服务架构的节点中选择至少两个节点作为协调节点;在协调节点处理增删改查任务。根据本发明的分布式容错键值存储的装置的实施例,其中在协调节点处理增删改查任务进一步包括:将多个增删改查任务分配至至少两个协调节点;至少两个协调节点并行地根据所分配到的增删改查任务基于增删改查功能组件生成执行指令;将执行指令发送至相应的服务节点,使服务节点按照写时复制机制和/或读时同步机制执行增删改查任务。采用上述技术方案,本发明至少具有如下有益效果:本发明的技术方案成功的实现了一个最小化的key-value键值数据存储,可以提供多点写入、多点读取,实现了成员间的内部私有协议,并提供快速复制及高一致性功能。在基于键值存储的关系型数据库执行大批量、小型读写任务时,根据本发明的方法创建的数据存储结构基于执行crud增删改查任务时的写时复制机制和读时同步机制能够提高数据一致性、增强容错能力。同时由于本发明的拓扑环中的所有节点均具备作为协调节点的能力,并且在发起了多个crud增删改查任务时,从所有节点中选取多个节点作为协调节点,进而在多个协调节点上并行处理所发起的curd任务,解决了节点负载的均衡以及任务延时的问题。本发明提供了实施例的各方面,不应当用于限制本发明的保护范围。根据在此描述的技术可设想到其它实施方式,这对于本领域普通技术人员来说在研究以下附图和具体实施方式后将是显而易见的,并且这些实施方式意图被包含在本申请的范围内。下面参考附图更详细地解释和描述了本发明的实施例,但它们不应理解为对于本发明的限制。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对现有技术和实施例描述中所需要使用的附图作简单地介绍,附图中的部件不一定按比例绘制,并且可以省略相关的元件,或者在一些情况下比例可能已经被放大,以便强调和清楚地示出本文描述的新颖特征。另外,如本领域中已知的,结构部件可以被不同地布置。在图中:图1示出了根据本发明的分布式容错键值存储的方法的实施例的示意性框图;图2示出了根据本发明的用于分布式容错键值存储的节点的协调服务架构的实施例的示意图。具体实施方式虽然本发明可以以各种形式实施,但是在附图中示出并且在下文中将描述一些示例性和非限制性实施例,但应该理解的是,本公开将被认为是本发明的示例并不意图将本发明限制于所说明的具体实施例。图1示出了根据本发明的分布式容错键值存储的方法的实施例的示意性框图。如图1所示,该方法的实施例包括以下步骤:s1:基于cassandra构架建立键值存储的环形拓扑;s2:设置环形拓扑中各节点的协调服务架构;s3:响应于接收到多个增删改查任务,从基于协调服务架构的节点中选择至少两个节点作为协调节点;s4:在协调节点处理增删改查任务。具体地说,在步骤s1中,基于cassandra构架建立key-value键值存储的环形拓扑。在此,根据cassandra构架中的key->servernode键-服务节点的映射机制,通过哈希算法将数据的键值映射到服务节点环中,关联到特定的节点,完成环形拓扑。为了均衡节点负载,在步骤s2中对环形拓扑的各节点设置协调服务架构,以使各节点具备作为协调节点的能力。优选地,环形拓扑中的所有节点均设置协调服务架构,从而所有的节点均具有作为协调节点的可能性。随后步骤s3开始响应于接收到发起的多个crud增删改查任务,从基于协调服务架构的节点中选择至少两个节点作为协调节点。也就是说,在发生大批量crud任务的时候,从所有具备协调服务架构即具有协调功能的节点中按照合适的算法选择出至少两个作为协调节点。更具需求,可以选择更多个节点作为协调节点。计算协调节点的算法可以包括但不限于paxos算法、hash哈希算法等,在本发明中优选基于hash哈希算法选择协调节点。在步骤s3选出了至少两个协调节点之后,在步骤s4以所选出的至少两个协调节点处理所接收到的crud任务。在本发明的分布式容错键值存储的方法的一些实施例中,步骤s2为各节点所设置的协调服务架构包括私有成员协议、虚拟环拓扑和增删改查功能组件。图2示出了根据本发明的用于分布式容错键值存储的节点的协调服务架构100的实施例的示意图。如图2所示,该协调服务架构100主要分为以下几个虚拟层:私有成员协议10、虚拟环拓扑20和增删改查功能组件30。下面具体说明上述几个虚拟层的具体实施例。首先,在环中的各节点需要一直知晓彼此的状态,为此专门定义了私有成员协议10。在每个节点,key-value存储与私有成员协议10交互,可以用来周期性的更新环的状态视图。私有成员协议层10是其它虚拟层建立的基础。在本发明的分布式容错键值存储的方法的一些实施例中,私有成员协议10由传输层协议和故障检测协议组成。其中,传输层协议配置为以组播的方式通知各节点(即私有成员协议的成员)环形拓扑的拓扑信息。传输层协议规定每个新成员与一个介绍成员通信从而加入组,然后介绍成员将会广播新成员消息,从而其余的成员能够知晓新成员的加入。此外,私有成员协议满足健壮性要求,在新成员加入以及成员故障时,仍能快速的完成通信。同时消息传输非常精确,没有时延以及丢失。为此,故障检测协议配置为通过节点对于节点恢复请求的响应判断节点的故障情况。故障检测规定各节点通过一个peer-to-peer的周期性、随机的请求协议所监控,当某个节点恢复请求协议的响应时间超时,且超过一定的次数即会被判定为故障。请求协议的响应超时时间以及每个成员的承受故障检测负载压力不会随着server-node服务节点环的增大而增长。同时为了减少故障的误判,故障检测层允许server-node服务节点环在认为某个servernode服务节点故障前,发起一个简单的读操作来确认。其次,基于私有成员层协议10,节点间可以实时的通信,知晓节点状态。依赖于成员列表,每个节点都可以通过一定的算法计算出虚拟环状拓扑20。在本发明的方法的一些实施例中,方法还包括:基于拓扑信息通过哈希算法计算得出虚拟环拓扑20。由此,每一个配备了虚拟环拓扑20的节点都可以得到一致的拓扑信息。最后,为了使得各节点都能具备crud处理能力,协调服务架构100还包括增删改查功能组件30。支持增删改查操作,该增删改查功能组件30进一步地至少需要三个组件:存储、复制/一致性以及稳定组件。基于以上三个组建,每个集群中的节点需要同时支持client用户curd操作和server服务crud操作。clientcrud的过程是控制客户端请求并将操作传递到所有的副本,结果返回后,将结果返回给客户端。当作为协调节点时,节点需要这个功能。servercrud被每个键的副本(即服务节点)所使用,当协调节点发送crud请求到键副本时,这个模块实现了实际的存储操作。下面具体解释增删改查功能组件30中的存储、复制/一致性以及稳定组件:a)存储组件:存储模块主要处理当往一个节点写入时序列化的操作,在节点的本地存储触发一个变更操作。相对于性能问题最主要的优化了故障恢复功能。系统顺序的处理提交操作时,每个节点的恢复功能可以确保在某个节点出现故障时数据可以被持久化到存储中而不出现数据丢失。为了实现故障恢复功能,在数据提交到数据库过程之前,采用了内存结构作为中间步骤。此故障恢复主要是为了避免例如当执行数据commit确认操作时,对应的节点出现故障,此时数据不能被保存到节点的持久化存储中,从而导致数据的丢失。为了解决这个问题主要采用了内存缓存技术,现先将数据缓存到协调节点的内存中,直到commit确认操作在对应节点完成时,缓存才会被清除。若commit过程中,节点出现故障,会重新执行key-node映射,将数据写入新计算出的节点。b)复制/一致性组件:系统中实现的一致性为最终一致性。最终一致性意味着如果所有的写操作结束后,每个键的所有副本将最终有相同的值。这将由后台当两个值读不匹配时的读修复操作以及稳定性协议完成。写操作是被每个键的协调主机管理,从而保证了针对每个键的写操作是顺序的。协调节点将使用key-node映射发送查询请求到所有属于此key的副本节点。当法定副本返回响应,协调节点将返回确认到客户端。法定副本是存储数据的三个节点(副本节点)经过数据比对,存储数据的时间戳为最新的节点中的任一节点(副本节点)。读操作与写操作类似,协调节点从法定副本中返回的值中返回时间戳最新的值。如果有任何两个副本有不同的值,系统更新较老的值。在服务器端,请求将被servercrud模块控制,此模块将包含相当数量的功能来完成故障恢复、优化性能以及完成部分分布式系统功能。c)稳定性组件:最后涉及稳定性算法,当一个节点故障,key->node映射会丢失一些key。但故障发生时,将会有n-1个节点存在并接收key的分配,意味着很多key将会分布到不同与之前的节点集合上。在这种状况下,稳定性算法将会恢复、复制那些副本故障的key。稳定性算法的实现是遍历每个节点的所有键值,首先检测键值是否仍属于此节点,如果仍然属于,执行维护、更新操作,告知所有节点。如果不属于,在将此键值确认保存到对应的正确节点后从本地存储中删除此键值。从而保持了key-node映射的稳定性及数据的一致性。在本发明的分布式容错键值存储的方法的一些实施例中,步骤s4在协调节点处理增删改查任务进一步包括:s41:将多个增删改查任务分配至至少两个协调节点;s42:至少两个协调节点并行地根据所分配到的增删改查任务基于增删改查功能组件生成执行指令;s43:将执行指令发送至相应的服务节点,使服务节点按照写时复制机制和/或读时同步机制执行增删改查任务。基于步骤s41和步骤s42将任务分配给不同的协调节点以处理,避免了大批量crud任务集中在一个协调节点,导致该节点负载过大、任务延时过长等一系列可能出现的问题,从而均衡了拓扑中的节点的负载情况。所选择的协调节点越多,节点负载的均衡效果越明显。同时,多个协调节点并行处理大批量crud也会显著缩短任务的延时情况。利用步骤s43中的写时复制机制和/或读时同步机制,也同时提高了键值存储的一致性,加强了容错能力,保证了系统的稳定性。在本发明的分布式容错键值存储的方法的若干实施例中,写时复制机制包括在执行写操作时,通过键-服务节点机制将数据映射写入到三个服务节点上形成同一数据的三个副本。具体地说,当对数据库执行写操作(create/update/delete)时,通过key->servernode键-服务节点机制,数据会被映射、写入到三个servernode服务节点上,一份数据会同时保存三份,即建立三个副本。在本发明的分布式容错键值存储的方法的一些实施例中,读时同步机制包括在执行读操作时,读取三个副本的数据反馈时间戳最新的副本的数据,并对三个副本进行比较,若不相同则以该时间戳最新的副本同步三个副本的数据。即,当执行读取数据操作(select)时,请求会依次的发送给保存三个副本的服务节点,并返回时间戳为最新的数据副本。同时执行读操作时,会自动比对三份数据的差异,如果不同,则以最新的数据为标准,同步其他副本数据。在本发明的分布式容错键值存储的方法的实施例中,该方法适用于低于百万级数据存储的小型分布式键值存储。本发明的小型key-value存储遵循最小化原则,即最小实现,实现的数据库的性能及数据存储量标准较低,理论上支持不超过百万级的数据存储。另一方面,本发明还提出了一种分布式容错键值存储的装置,包括:至少一个处理器;和存储器,存储有处理器可运行的程序代码,该程序代码在被处理器执行时实现以下步骤:s1:基于cassandra构架建立键值存储的环形拓扑;s2:设置环形拓扑中各节点的协调服务架构;s3:响应于接收到多个增删改查任务,从基于协调服务架构的节点中选择至少两个节点作为协调节点;s4:在协调节点处理增删改查任务。在本发明的分布式容错键值存储的装置的一个或多个实施例中,步骤s4在协调节点处理增删改查任务进一步包括:s41:将多个增删改查任务分配至至少两个协调节点;s42:至少两个协调节点并行地根据所分配到的增删改查任务基于增删改查功能组件生成执行指令;s43:将执行指令发送至相应的服务节点,使服务节点按照写时复制机制和/或读时同步机制执行增删改查任务。利用根据本发明的装置,所有节点均具备实现全部的功能的能力,都能够完成作为协调节点以及作为服务节点的工作。同时,存储将包含多个节点,建立多个副本,各副本互为备份。数据的读写请求可以分布到多个节点、多个副本,从而实现了分布式容错功能。本发明实施例公开所述的装置、设备等可为各种电子终端设备,例如手机、个人数字助理(pda)、平板电脑(pad)、智能电视等,也可以是大型终端设备,如服务器等,因此本发明实施例公开的保护范围不应限定为某种特定类型的装置、设备。本发明实施例公开所述的客户端可以是以电子硬件、计算机软件或两者的组合形式应用于上述任意一种电子终端设备中。本文所述的计算机可读存储介质(例如存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦写可编程rom(eeprom)或快闪存储器。易失性存储器可以包括随机存取存储器(ram),该ram可以充当外部高速缓存存储器。作为例子而非限制性的,ram可以以多种形式获得,比如同步ram(dram)、动态ram(dram)、同步dram(sdram)、双数据速率sdram(ddrsdram)、增强sdram(esdram)、同步链路dram(sldram)、以及直接rambusram(drram)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。采用上述技术方案,本发明至少具有如下有益效果:本发明的技术方案成功的实现了一个最小化的key-value键值数据存储,可以提供多点写入、多点读取,实现了成员间的内部私有协议,并提供快速复制及高一致性功能。在基于键值存储的关系型数据库执行大批量、小型读写任务时,根据本发明的方法创建的数据存储结构基于执行crud增删改查任务时的写时复制机制和读时同步机制能够提高数据一致性、增强容错能力。同时由于本发明的拓扑环中的所有节点均具备作为协调节点的能力,并且在发起了多个crud增删改查任务时,从所有节点中选取多个节点作为协调节点,进而在多个协调节点上并行处理所发起的curd任务,解决了节点负载的均衡以及任务延时问题。应当理解的是,在技术上可行的情况下,以上针对不同实施例所列举的技术特征可以相互组合,从而形成本发明范围内的另外实施例。此外,本文所述的特定示例和实施例是非限制性的,并且可以对以上所阐述的结构、步骤、顺序做出相应修改而不脱离本发明的保护范围。在本申请中,反意连接词的使用旨在包括连接词。定或不定冠词的使用并不旨在指示基数。具体而言,对“该”对象或“一”和“一个”对象的引用旨在表示多个这样对象中可能的一个。然而,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。此外,可以使用连接词“或”来传达同时存在的特征,而不是互斥方案。换句话说,连接词“或”应理解为包括“和/或”。术语“包括”是包容性的并且具有与“包含”相同的范围。上述实施例,特别是任何“优选”实施例是实施方式的可能示例,并且仅仅为了清楚理解本发明的原理而提出。在基本上不脱离本文描述的技术的精神和原理的情况下,可以对上述实施例做出许多变化和修改。所有修改旨在被包括在本公开的范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1