一种基于云计算分布式块存储的degrade读写方法技术

技术编号:21476955 阅读:24 留言:0更新日期:2019-06-29 04:40
本发明专利技术公开了一种基于云计算分布式块存储的degrade读写方法,包括以下步骤:步骤1、当某个OID在其中一个或多个副本写入失败时,将OID和写入失败的副本已经写入数据的offset和length等相关信息保存在cache中;步骤2、当某个OID在其中一个副本写入成功时,首先检查之前是否有失败的记录,如果还是有失败的数据,则针对写入失败的数据,重新发起一次write request。本发明专利技术采用degrade技术,保证在网络或者物理机发生异常的情况下,既保证多副本的强一致性,又能保证正常读写;智能排查集群内工作异常的节点,并主动将该节点踢出集群。

【技术实现步骤摘要】
一种基于云计算分布式块存储的degrade读写方法
本专利技术涉及计算机
,尤其涉及一种基于云计算分布式块存储的degrade读写方法。
技术介绍
为了保护用户数据的可靠性,云计算分布式块存储一般采用3副本保存用户数据,也就是同样的数据我们需要保存3份。我们为了保证强一致性,保存用户数据时,必须等3副本全部写入成功,这个操作才能返回成功,如果由于坏盘、宕机或者网络不通等原因导致有的副本写入失败,这个操作就会hang住,一直retry,直到全部写入成功或者写入失败的node离开集群,根据集群新的拓扑结构计算出3个新的node,继续执行retry,直到写入成功。基于上述情况,由于write操作有可能hang住一定时间,在这段时间内,用户是无法保存数据的,给使用者带来极大不便。
技术实现思路
有鉴于现有技术的上述缺陷,本专利技术所要解决的技术问题是提供一种基于云计算分布式块存储的degrade读写方法,采用degrade技术,保证在网络或者物理机发生异常的情况下,既保证多副本的强一致性,又能保证正常读写;智能排查集群内工作异常的节点,并主动将该节点踢出集群。为实现上述目的,本专利技术提供了一种基于云计算分布式块存储的degrade读写方法,包括以下步骤:步骤1、当某个OID在其中一个或多个副本写入失败时,将OID和写入失败的副本已经写入数据的offset和length等相关信息保存在cache中,并将写入失败的数据保存在节点的硬盘上,如果该OID在该副本之前有失败的记录,则根据两次失败记录的offset和length做或操作,merge这两次失败的记录;步骤2、当某个OID在其中一个副本写入成功时,首先检查之前是否有失败的记录,如果有,成功的offset、length与失败的offset、length做与操作,如果还是有失败的数据,则针对写入失败的数据,重新发起一次writerequest,如果写入成功,则删除之前失败的记录和数据,否则继续保留。上述的一种基于云计算分布式块存储的degrade读写方法,所述处理writerequest的方法步骤为:1、节点A接收到clientwriterequest;2、根据当前集群拓扑计算出3个数据节点;3、向3个数据节点发送writerequest,并等待返回结果;4、分析3个数据节点的返回值;5、如果执行request失败的node是由于特定原因导致的失败,则将失败的相关信息oid,node,offset,length,requesttime等信息保存A的cache中,并将写入失败的相关信息和内容保存到A所在物理机磁盘上,并返回clientsuccessful值;6、检查写入成功的node,查看之前是否有写入失败的记录,如果有,则需要更新写入成功的信息;C.更新offset,length将写入成功的offset,length与之前失败的记录offset,length进行merge,比如写入成功的offset=0,length=5,也就是[0,4];写入失败的offset=3,length=10,也就是[3,12],merge后,失败的记录变为[6,12];D.检查更新offset和length后的结果,merge过后有失败的区间,根据之前保存的写入失败的数据重新写入,重新写入之前先更新requesttime,然后向node发起request,node接收到request,write数据之前首先检查oid的requesttime,如果requesettime比现在的更新,则返回失败,停止写入,直到requesttime相等才真正执行写入操作,如果写入成功,则返回成功,并删除失败记录,merge过后没有失败的区间,删除失败记录;7、检查写入失败的node,如果之前有写入失败的记录,则mergeoffset、length、data和更新requesttime;8、如果某一个node,超过连续写入失败次数的阈值,则将该数据节点主动踢出该集群,触发recovery。上述的一种基于云计算分布式块存储的degrade读写方法,所述处理writerequest还对应有处理readrequest,具体方法步骤为:1、节点A接收到readrequest;2、A节点首先检查读取的数据段是否在A中cache中存在,如果存在,则直接读取本地硬盘数据,如果没有,则根据拓扑计算出3个node,选择其中一个node读取数据。上述的一种基于云计算分布式块存储的degrade读写方法,所述处理writerequest还对应有异常处理,具体方法步骤为:如果A节点异常挂掉,重启A时,需要将A中保存失败的记录读到cache中。本专利技术的有益效果是:本专利技术采用degrade技术,保证在网络或者物理机发生异常的情况下,既保证多副本的强一致性,又能保证正常读写;智能排查集群内工作异常的节点,并主动将该节点踢出集群。以下将结合附图对本专利技术的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本专利技术的目的、特征和效果。附图说明图1是本专利技术的流程图。具体实施方式如图1所示,一种基于云计算分布式块存储的degrade读写方法,包括以下步骤:步骤1、当某个OID在其中一个或多个副本写入失败时,将OID和写入失败的副本已经写入数据的offset和length等相关信息保存在cache中,并将写入失败的数据保存在节点的硬盘上,如果该OID在该副本之前有失败的记录,则根据两次失败记录的offset和length做或操作,merge这两次失败的记录;步骤2、当某个OID在其中一个副本写入成功时,首先检查之前是否有失败的记录,如果有,成功的offset、length与失败的offset、length做与操作,如果还是有失败的数据,则针对写入失败的数据,重新发起一次writerequest,如果写入成功,则删除之前失败的记录和数据,否则继续保留。本实施例中,所述处理writerequest的方法步骤为:1、节点A接收到clientwriterequest;2、根据当前集群拓扑计算出3个数据节点;3、向3个数据节点发送writerequest,并等待返回结果;4、分析3个数据节点的返回值;5、如果执行request失败的node是由于特定原因导致的失败,则将失败的相关信息oid,node,offset,length,requesttime等信息保存A的cache中,并将写入失败的相关信息和内容保存到A所在物理机磁盘上,并返回clientsuccessful值;6、检查写入成功的node,查看之前是否有写入失败的记录,如果有,则需要更新写入成功的信息;E.更新offset,length将写入成功的offset,length与之前失败的记录offset,length进行merge,比如写入成功的offset=0,length=5,也就是[0,4];写入失败的offset=3,length=10,也就是[3,12],merge后,失败的记录变为[6,12];F.检查更新offset和length后的结果,merge过后有失败的区间,根据之前保存的写入失败的数据重新写入,重新写入之前先更新requesttime,然后向node发起reque本文档来自技高网...

【技术保护点】
1.一种基于云计算分布式块存储的degrade读写方法,其特征在于,包括以下步骤:步骤1、当某个OID在其中一个或多个副本写入失败时,将OID和写入失败的副本已经写入数据的offset和length等相关信息保存在cache中,并将写入失败的数据保存在节点的硬盘上,如果该OID在该副本之前有失败的记录,则根据两次失败记录的offset和length做或操作,merge这两次失败的记录;步骤2、当某个OID在其中一个副本写入成功时,首先检查之前是否有失败的记录,如果有,成功的offset、length与失败的offset、length做与操作,如果还是有失败的数据,则针对写入失败的数据,重新发起一次write request,如果写入成功,则删除之前失败的记录和数据,否则继续保留。

【技术特征摘要】
1.一种基于云计算分布式块存储的degrade读写方法,其特征在于,包括以下步骤:步骤1、当某个OID在其中一个或多个副本写入失败时,将OID和写入失败的副本已经写入数据的offset和length等相关信息保存在cache中,并将写入失败的数据保存在节点的硬盘上,如果该OID在该副本之前有失败的记录,则根据两次失败记录的offset和length做或操作,merge这两次失败的记录;步骤2、当某个OID在其中一个副本写入成功时,首先检查之前是否有失败的记录,如果有,成功的offset、length与失败的offset、length做与操作,如果还是有失败的数据,则针对写入失败的数据,重新发起一次writerequest,如果写入成功,则删除之前失败的记录和数据,否则继续保留。2.如权利要求1所述的一种基于云计算分布式块存储的degrade读写方法,其特征在于,所述处理writerequest的方法步骤为:1、节点A接收到clientwriterequest;2、根据当前集群拓扑计算出3个数据节点;3、向3个数据节点发送writerequest,并等待返回结果;4、分析3个数据节点的返回值;5、如果执行request失败的node是由于特定原因导致的失败,则将失败的相关信息oid,node,offset,length,requesttime等信息保存A的cache中,并将写入失败的相关信息和内容保存到A所在物理机磁盘上,并返回clientsuccessful值;6、检查写入成功的node,查看之前是否有写入失败的记录,如果有,则需要更新写入成功的信息;A.更新offset,length将写入成功的offset,length与之前失败的记录offset,length进行m...

【专利技术属性】
技术研发人员:严刚侯玉斌金辉
申请(专利权)人:启迪云计算有限公司
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1