一种用于多副本分布式系统的计算机数据读写方法

文档序号:6515213阅读:195来源:国知局
一种用于多副本分布式系统的计算机数据读写方法
【专利摘要】本发明涉及一种用于多副本分布式系统的计算机数据读写方法,属于计算机网络技术和计算机数据存储【技术领域】。在本发明方法中,用户针对分布式系统的读写过程采用时间信息与数据信息相分离的方式,首先向分布式系统发送或读取时间戳信息,根据时间戳信息,分布式系统确定接受到的数据的最新状态,以此来保证每份数据的多个副本间的数据一致性,之后用户再与分布式系统进行数据交互。本发明方法步骤简单实用,易于实施。
【专利说明】一种用于多副本分布式系统的计算机数据读写方法
【技术领域】
[0001]本发明涉及一种用于多副本分布式系统的计算机数据读写方法,属于计算机网络技术和计算机数据存储【技术领域】。
【背景技术】
[0002]随着大数据时代的到来,来自多媒体、互联网的数据正经历着爆炸性增长,单节点计算机系统已经无法满足海量数据的计算与存储要求,所以越来越多的研究机构与IT厂商采用分布式系统解决大量数据的存储、组织与管理问题。分布式系统由多个计算机节点组成,将数据分散存储在多台独立的计算机上,这种设计不但提高了分布式系统的可靠性、可用性和存取效率,还易于扩展。由于在分布式系统中,每个计算机节点都存在发生故障的可能性,所以在存储数据时,分布式系统会对同一份数据产生多份副本,各个副本存放在不同的计算机节点上,当某个计算机节点出现故障时,系统还可以从其它计算机节点获取到相同的数据。
[0003]由于每份数据都有多个副本,这就引入的数据访问一致性的问题,即在某份数据的更新过程中,该份数据的各个副本可能会产生数据不一致的情况。针对一致性问题,目前常用的有两种解决方案,各有利弊:
[0004]1、同步写入:计算机用户一次性写入所有副本,副本在写入过程中不可以被其他计算机用户访问,这种方案的好处在于,无论哪个用户访问数据时,都会读取到最新的数据,但缺点也很明显,即计算机用户写入数据耗时很长,因为需要等待所有的副本都更新完成。
[0005]2、异步写入:对于数据一致性做出一定妥协,计算机用户只写入数据的一个副本即可继续其它操作,不需关系其它副本是否已写入成功,其它副本的写入采用异步的方式进行,所有的副本最终状态是一致的,但在副本数据的异步更新过程中,其他用户可能会读到未被更新的数据副本。

【发明内容】

[0006]本发明的目的是提出一种用于多副本分布式系统的计算机数据读写方法为,以克服已有方法的不足之处,采用时间信息与数据信息相分离的方式,可以保证读操作不会读到未被更新的数据,而写操作的延迟远低于同步更新方法。
[0007]本发明提出的用于多副本分布式系统的计算机数据读写方法,多副本分布式系统内的每份数据有N个副本,N为奇数,定义N个副本中的任意一个副本为主副本,主副本用于接受计算机用户的写请求,N份副本用于接受读请求,该方法中的数据写操作包括以下步骤:
[0008](I)计算机用户向多副本分布式系统发起一个写请求,写请求数据的标识记为K,并将写请求发送至标识为K的数据的主副本所在计算机节点;
[0009](2)主副本所在计算机节点接收到写请求后,调用多副本分布式系统的接口,该接口利用网络时间协议,从本计算机节点中读取当前时间,记为操作时间戳ts,并将操作时间戳ts与标识K发送给标识为K的数据的其余N -1份副本所在的计算机节点,N -1份副本所在的计算机节点接收到操作时间戳ts与标识K后,向主副本所在计算机节点发出接收确认;
[0010](3)主副本所在计算机节点接收到(N -1)/2份接收确认后,将标识为K的数据写入成功的信息通知计算机用户;
[0011](4)主副本所在计算机节点生成一个与操作时间戳ts数值相同的数据时间戳ts_data,调用多副本分布式系统的接口,向其余N -1份副本所在的计算机节点发送标识K、数据时间戳ts_data以及请求写入的标识为K的数据;
[0012](5)除主副本外其余N -1份副本所在计算机节点接收到主副本所在计算机节点发出的标识K、数据时间戳ts_data以及请求写入的标识为K的数据,写操作结束;
[0013]数据读操作包括以下步骤:
[0014](6)计算机用户向多副本分布式系统发起一个读请求,读请求数据的标识记为J,计算机用户调用多副本分布式系统的接口,向标识为J的数据的所有N份副本所在计算机节点发送一个读取请求,并等待N份副本所在计算机节点的接收确认;
[0015](7)标识为J的数据的副本所在计算机节点接收到计算机用户的上述读请求后,从本计算机节点内检索标识为J的数据的操作时间戳ts和数据时间戳ts_data,若操作时间戳ts与数据时间戳ts_data同时被检索出,则向计算机用户发送操作时间戳ts作为确认信息,若操作时间戳ts与数据时间戳ts_data中的任意一个未被检索出,则向计算机用户发送一个字符串“Null”作为确认信息;
[0016](8)计算机用户接收到(N+l)/2份标识为J的数据的副本所在计算机节点发送的确认信息后,根据确认信息进行如下动作:若接收到的(N+l)/2份确认信息全部为“Null”字符串,则调用多副本分布式系统的接口,向标识为J的数据的主副本所在计算机节点读取数据标识为J的数据的副本,若接收到的(N+l)/2份确认信息中,有一个或一个以上为操作时间戳ts,则计算机用户从所有操作时间戳ts中选出最新的操作时间戳ts,并调用多副本分布式系统的接口,向发送最新操作时间戳ts的计算机节点读取数据标识为J的数据的副本;
[0017](9)计算机用户接收标识为J的数据的副本,读操作结束。
[0018]本发明提出的用于多副本分布式系统的计算机数据读写方法,其优点是:克服了已有方法的不足之处,采用时间信息与数据信息相分离的方式,保证读操作不会读到未被更新的数据,而写操作的延迟远低于同步更新方法,根据时间戳信息,分布式系统可以确定接受到的数据的最新状态,以此来保证每份数据的多个副本之间的数据一致性,之后用户再与分布式系统进行数据交互。而且本发明方法步骤简单实用,易于实施。
【专利附图】

【附图说明】
[0019]图1为本发明提出的用于多副本分布式系统的数据写方法流程图。
[0020]图2为本发明的用于多副本分布式系统的数据读方法流程图。
【具体实施方式】[0021]本发明提出的用于多副本分布式系统的计算机数据读写方法,多副本分布式系统内的每份数据有N个副本,N为奇数,定义N个副本中的任意一个副本为主副本,主副本用于接受计算机用户的写请求,N份副本用于接受读请求,该方法中的数据写操作包括以下步骤:
[0022](I)计算机用户向多副本分布式系统发起一个写请求,写请求数据的标识记为K,并将写请求发送至标识为K的数据的主副本所在计算机节点;
[0023](2)主副本所在计算机节点接收到写请求后,调用多副本分布式系统的接口,该接口利用网络时间协议,从本计算机节点中读取当前时间,记为操作时间戳ts,并将操作时间戳ts与标识K发送给标识为K的数据的其余N -1份副本所在的计算机节点,N -1份副本所在的计算机节点接收到操作时间戳ts与标识K后,向主副本所在计算机节点发出接收确认;
[0024](3)主副本所在计算机节点接收到(N -1)/2份接收确认后,将标识为K的数据写入成功的信息通知计算机用户;
[0025](4)主副本所在计算机节点生成一个与操作时间戳ts数值相同的数据时间戳ts_data,调用多副本分布式系统的接口,向其余N -1份副本所在的计算机节点发送标识K、数据时间戳ts_data以及请求写入的标识为K的数据;
[0026](5)除主副本外其余N -1份副本所在计算机节点接收到主副本所在计算机节点发出的标识K、数据时间戳ts_data以及请求写入的标识为K的数据,写操作结束;
[0027]数据读操作包括以下步骤:
[0028](6)计算机用户向多副本分布式系统发起一个读请求,读请求数据的标识记为J,计算机用户调用多副本分布式系统的接口,向标识为J的数据的所有N份副本所在计算机节点发送一个读取请求,并等待N份副本所在计算机节点的接收确认;
[0029](7)标识为J的数据的副本所在计算机节点接收到计算机用户的上述读请求后,从本计算机节点内检索标识为J的数据的操作时间戳ts和数据时间戳ts_data,若操作时间戳ts与数据时间戳ts_data同时被检索出,则向计算机用户发送操作时间戳ts作为确认信息,若操作时间戳ts与数据时间戳ts_data中的任意一个未被检索出,则向计算机用户发送一个字符串“Null”作为确认信息;
[0030](8)计算机用户接收到(N+l)/2份标识为J的数据的副本所在计算机节点发送的确认信息后,根据确认信息进行如下动作:若接收到的(N+1)/2份确认信息全部为“Null”字符串,则调用多副本分布式系统的接口,向标识为J的数据的主副本所在计算机节点读取数据标识为J的数据的副本,若接收到的(N+l)/2份确认信息中,有一个或一个以上为操作时间戳ts,则计算机用户从所有操作时间戳ts中选出最新的操作时间戳ts,并调用多副本分布式系统的接口,向发送最新操作时间戳ts的计算机节点读取数据标识为J的数据的副本;
[0031](9)计算机用户接收标识为J的数据的副本,读操作结束。
[0032]以下结合附图及实施例详细说明如下:
[0033]本发明的用于多副本分布式系统的计算机数据读写方法,多副本分布式系统内的每份数据有N个副本,N为奇数,定义N个副本中的任意一个副本为主副本,主副本用于接受计算机用户的写请求,所有N份副本均可用于接受读请求。[0034]多副本分布式系统采用网络时间协议(Network Time Protocol)协议来对各个计算机节点进行校时,网络时间协议可以使计算机或网络设备对其服务器或时钟源(如石英钟,GPS等等)做同步化,提供高精准度的时间校正。
[0035]对于操作时间戳的访问,本发明采用经典的NWR算法,N表示共有N个数据副本,W表示将操作时间戳写入W个副本所在的计算机节点才算成功,R表示需要读取R个副本所在的计算机节点才算成功,若W+R>N能保证每次读出的操作时间戳至少有一份是最新的,本发明中W和R均设置为(N+l)/2。
[0036]对于多副本分布式系统的写操作,其流程图如图1所示,包括以下步骤:
[0037](I)计算机用户向多副本分布式系统发起一个写请求,写请求数据的标识记为K,并将写请求发送至标识为K的数据的主副本所在计算机节点;
[0038](2)主副本所在计算机节点接收到写请求后,调用多副本分布式系统的接口 setTs(K),该接口利用网络时间协议,从本计算机中读取当前时间,记为操作时间戳ts,并将操作时间戳ts与标识K广播给标识为K的数据的其余N -1份副本所在的计算机节点,N -1份副本所在的计算机节点接收到操作时间戳ts与标识K后,向主副本所在计算机节点发出接收确认;
[0039](3)主副本所在计算机节点接收到(N -1)/2份接收确认后,将标识为K的数据写入成功的信息通知计算机用户,计算机用户可继续进行其它操作,注意此时N个副本中,力口上主副本,共有(N - 1)/2+1=(Ν+1)/2份副本所在计算机节点接收到了操作时间戳;
[0040](4)主副本所在计算机节点调用多副本分布式系统的接口 setData (K, data, ts_data),向其余N -1份副本所在的计算机节点发送标识K、数据时间戳ts_data以及请求写入的数据data,其中ts_data与操作时间戳ts数值相等;
[0041](5)除主副本外其余N -1份副本所在计算机节点接收到主副本所在计算机节点发出的标识K、数据时间戳ts_data以及请求写入的标识为K的数据,写操作结束。
[0042]对于多副本分布式系统的读操作,其流程图如图2所示,包括以下步骤:
[0043](6)计算机用户向多副本分布式系统发起一个读请求,读请求数据的标识记为J,计算机用户调用多副本分布式系统的接口 getTs(J),向标识为J的数据的所有N份副本所在计算机节点发送读取各自最新操作时间戳ts的请求,并等待确认;
[0044](7)标识为J的数据的副本所在计算机节点接收到计算机用户的上述读请求后,从本计算机节点内检索标识为J的数据的操作时间戳ts和数据时间戳ts_data,若操作时间戳ts与数据时间戳ts_data均能被检索出,则将操作时间戳ts作为确认发送给计算机用户,若操作时间戳ts与数据时间戳ts_data 二者中任意一个没被检索出,则向计算机用户发送一个信息为字符串“Null”的确认,数据时间戳ts_data没被检索出意味着该副本所在计算机节点还未接收到上述写方法描述中流程(4)里主副本所在节点发送的请求写入的数据,操作时间戳ts没被检索出的原因是,上述写方法描述中流程(3)中N份副本中有(N+l)/2份副本收到操作时间戳ts即通知计算机用户写入成功,此时另外(N-l)/2份副本所在计算机节点中并不存有操作时间戳ts ;
[0045](8)计算机用户接收到(N+l)/2份标识为J的数据的副本所在计算机节点发送的确认信息后,根据确认信息进行如下动作:若接收到的(N+1)/2份确认信息全部为“Null”字符串,则调用多副本分布式系统的接口,向标识为J的数据的主副本所在计算机节点读取数据标识为J的数据的副本,若接收到的(N+l)/2份确认信息中,有一个或一个以上为操作时间戳ts,则计算机用户从所有操作时间戳ts中选出最新的操作时间戳ts,并调用多副本分布式系统的接口,向发送最新操作时间戳ts的计算机节点读取数据标识为J的数据的副本;
[0046](9)计算机用户接收标识为J的数据的副本,读操作结束。
【权利要求】
1.一种用于多副本分布式系统的计算机数据读写方法,多副本分布式系统内的每份数据有N个副本,N为奇数,定义N个副本中的任意一个副本为主副本,主副本用于接受计算机用户的写请求,N份副本用于接受读请求,其特征在于该方法中的数据写操作包括以下步骤: (O计算机用户向多副本分布式系统发起一个写请求,写请求数据的标识记为K,并将写请求发送至标识为K的数据的主副本所在计算机节点; (2)主副本所在计算机节点接收到写请求后,调用多副本分布式系统的接口,该接口利用网络时间协议,从本计算机节点中读取当前时间,记为操作时间戳ts,并将操作时间戳ts与标识K发送给标识为K的数据的其余N -1份副本所在的计算机节点,N -1份副本所在的计算机节点接收到操作时间戳ts与标识K后,向主副本所在计算机节点发出接收确认; (3)主副本所在计算机节点接收到(N-1)/2份接收确认后,将标识为K的数据写入成功的信息通知计算机用户; (4)主副本所在计算机节点生成一个与操作时间戳ts数值相同的数据时间戳ts_data,调用多副本分布式系统的接口,向其余N -1份副本所在的计算机节点发送标识K、数据时间戳ts_data以及请求写入的标识为K的数据; (5)除主副本外其余N-1份副本所在计算机节点接收到主副本所在计算机节点发出的标识K、数据时间戳ts_data以及请求写入的标识为K的数据,写操作结束; 数据读操作包括以下步骤: (6)计算机用户向多副本分布式系统发起一个读请求,读请求数据的标识记为J,计算机用户调用多副本分布式系统的接口,向标识为J的数据的所有N份副本所在计算机节点发送一个读取请求,并等待N份副本所在计算机节点的接收确认; (7)标识为J的数据的副本所在计算机节点接收到计算机用户的上述读请求后,从本计算机节点内检索标识为J的数据的操作时间戳ts和数据时间戳ts_data,若操作时间戳ts与数据时间戳ts_data同时被检索出,则向计算机用户发送操作时间戳ts作为确认信息,若操作时间戳ts与数据时间戳ts_data中的任意一个未被检索出,则向计算机用户发送一个字符串“Null”作为确认信息; (8)计算机用户接收到(N+l)/2份标识为J的数据的副本所在计算机节点发送的确认信息后,根据确认信息进行如下动作:若接收到的(N+1) /2份确认信息全部为“Null ”字符串,则调用多副本分布式系统的接口,向标识为J的数据的主副本所在计算机节点读取数据标识为J的数据的副本,若接收到的(N+l)/2份确认信息中,有一个或一个以上为操作时间戳ts,则计算机用户从所有操作时间戳ts中选出最新的操作时间戳ts,并调用多副本分布式系统的接口,向发送最新操作时间戳ts的计算机节点读取数据标识为J的数据的副本; O)计算机用户接收标识为J的数据的副本,读操作结束。
【文档编号】G06F17/30GK103530362SQ201310475697
【公开日】2014年1月22日 申请日期:2013年10月12日 优先权日:2013年10月12日
【发明者】汪东升, 王占业, 鞠大鹏 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1