多副本数据的读写方法及系统的制作方法_2

文档序号:9787513阅读:来源:国知局
,在本步骤中,将数据的W个副本及其数据写入时间戳、副本标识组合为数据键值对。
[0037]更为具体地,当计算机用户需要将数据写入到分布式系统的数据节点时,计算机用户向该分布式系统发送数据写入请求,分布式系统的数据节点在接收到数据写入请求后,调用分布式系统的接口,该接口利用网络时间协议,从数据节点中读取当前时间,记为数据写入时间戳,并将数据的W个副本、数据写入时间戳与副本标识存储至W个数据节点中,这里W小于或等于N。
[0038]步骤S202,当接收到数据读取请求时,从R个数据节点中读取数据的R个副本,其中,R小于或等于N,W和R之和大于N。
[0039]具体地,当计算机用户需要从分布式系统读取数据时,计算机用户调用分布式系统的接口,向分布式系统的数据节点发送读取请求,从R个数据节点中读取数据的R个副本,其中,R小于或等于N,这里W和R之和大于N,能够保证从分布式系统的数据节点读取的数据是最新的,实现了数据的强一致性,克服了现有方法中,只将数据的一个副本写入到数据节点中,再将该数据节点的数据同步到其他数据节点,然而,由于每份数据都有多个副本,在某份数据的更新过程中,该份数据的各个副本可能会产生数据不一致的情况,在数据并未同步到其他数据节点时,就读取数据节点的数据的情况下,容易导致读取的数据并不是最新的,导致数据不一致的缺陷。
[0040]在本发明实施例中,W和所述R的具体取值是根据所述N个数据节点的负载状况动态配置,在满足W和R之和大于N的情况下,并不具体限定W和所述R的取值。数据节点的负载状况指数据节点提供的业务服务情况,当将指数据的副本写入数据节点或者从数据节点读取数据时,数据节点的负载压力。
[0041]举例说明,在满足W和R之和大于N的情况下,针对一份数据,若备份5个副本,将数据的5个副本分别存储在5个数据节点中,当接收到数据写入请求时,将数据的3个副本写入3个数据节点中,当接收到数据读取请求时,从3个数据节点中读取数据的3个副本;或者,将数据的2个副本写入2个数据节点中,从4个数据节点中读取数据的4个副本,W和所述R的具体取值是根据所述N个数据节点的负载状况动态配置。
[0042]步骤S203,比较数据的R个副本的数据写入时间戳,将最新的数据写入时间戳对应的副本作为读取数据返回给数据读取请求方。
[0043]在根据步骤S202从R个数据节点中读取数据的R个副本后,根据副本标识从R个数据节点中获取数据的R个副本的数据写入时间戳,比较数据的R个副本的数据写入时间戳,从中确定出数据写入时间戳最新的副本,将最新的数据写入时间戳对应的副本作为读取数据返回给数据读取请求方,能够确保在从分布式系统的数据节点读取数据时,能够读取到最新写入的数据,实现数据的强一致性,满足用户对数据强一致性的要求。
[0044]根据本发明上述实施例提供的方法,为数据的N个副本分别设置副本标识,不仅可以将N个副本区分开,而且根据副本标识获取与副本相关的信息,例如时间戳等,便于查找,当接收到数据写入请求时,以数据键值对方式将数据的W个副本及其数据写入时间戳、副本标识关联存储至W个数据节点中,其中,W小于或等于N,当接收到数据读取请求时,从R个数据节点中读取数据的R个副本,其中,R小于或等于N,W和R之和大于N,比较数据的R个副本的数据写入时间戳,将最新的数据写入时间戳对应的副本作为读取数据返回给数据读取请求方,能够确保在从分布式系统的数据节点读取数据时,能够读取到最新写入的数据,实现数据的强一致性,满足用户对数据强一致性的要求。
[0045]图3示出了根据本发明一个实施例的多副本数据的读写系统的功能框图。如图3所示,该装置包括:写入模块300和读取模块310。
[0046]写入模块300,适于当接收到数据写入请求时,将数据的W个副本写入W个数据节点中;其中,W小于或等于N。
[0047]当计算机用户需要将数据写入到分布式系统的数据节点时,计算机用户向该分布式系统发送数据写入请求,分布式系统在接收到数据写入请求时,将数据的W个副本写入W个数据节点中,这里W小于或等于N。
[0048]读取模块310,适于当接收到数据读取请求时,从R个数据节点中读取数据的R个副本,其中,R小于或等于N,W和R之和大于N。
[0049]当计算机用户需要从分布式系统读取数据时,计算机用户调用分布式系统的接口,向分布式系统的数据节点发送读取请求,从R个数据节点中读取数据的R个副本,其中,R小于或等于N,这里W和R之和大于N,能够保证从分布式系统的数据节点读取的数据是最新的,实现了数据的强一致性,克服了现有方法中,只将数据的一个副本写入到数据节点中,再将该数据节点的数据同步到其他数据节点,然而,由于每份数据都有多个副本,在某份数据的更新过程中,该份数据的各个副本可能会产生数据不一致的情况,在数据并未同步到其他数据节点时,就读取数据节点的数据的情况下,容易导致读取的数据并不是最新的,导致数据不一致的缺陷。
[0050]举例说明,针对一份数据,一般会备份5个副本,将数据的5个副本分别存储在5个数据节点中,当接收到数据写入请求时,将数据的3个副本写入3个数据节点中,当接收到数据读取请求时,从3个数据节点中读取数据的3个副本,从而保证W和R之和大于N,能够确保在从分布式系统的数据节点读取数据时,能够读取到最新写入的数据,实现数据的强一致性,这里仅仅是举例说明,并未对写入数据节点的个数和读取数据副本的个数进行限定,只要能够保证W和R之和大于N,W和R可以随机取值。
[0051 ]根据本发明上述实施例提供的系统,当接收到数据写入请求时,将数据的W个副本写入W个数据节点中,其中,W小于或等于N,当接收到数据读取请求时,从R个数据节点中读取数据的R个副本,其中,R小于或等于N,W和R之和大于N,能够确保在从分布式系统的数据节点读取数据时,能够读取到最新写入的数据,实现数据的强一致性。
[0052]图4示出了根据本发明另一个实施例的多副本数据的读写系统的功能框图。如图4所示,该装置包括:写入模块400、读取模块410、比较模块420、时间戳写入模块430和设置模块440。
[0053]写入模块400,适于当接收到数据写入请求时,将数据的W个副本写入W个数据节点中;其中,W小于或等于N;
[0054]读取模块410,适于当接收到数据读取请求时,从R个数据节点中读取数据的R个副本,其中,R小于或等于N,W和R之和大于N。
[0055]可选地,系统还包括:比较模块420,适于比较数据的R个副本的数据写入时间戳。
[0056]在读取模块从R个数据节点中读取数据的R个副本后,根据副本标识从R个数据节点中获取数据的R个副本的数据写入时间戳,比较数据的R个副本的数据写入时间戳,从中确定出数据写入时间戳最新的副本,
[0057]读取模块410进一步适于:在比较模块比较得到最新的数据写入时间戳的情况下,将最新的数据写入时间戳对应的副本作为读取数据返回给数据读取请求方。
[0058]将最新的数据写入时间戳对应的副本作为读取数据返回给数据读取请求方,能够确保在从分布式系统的数据节点读取数据时,能够读取到最新写入的数据,实现数据的强一致性,满足用户对数据强一致性的要求。
[0059]可选地,W和R的具体取值是根据N个数据节点的负载状况动态配置。
[0060]可选地,系统还包括:时间戳写入模块430,适于当将数据的W个副本写入W个数据节点中时,利用网络时间协议定义同时写入数据的W个副本的数据写入时间戳。
[0061 ]可选地,系统还包括:设置模块440,适于为数据的N个副本分别设置副本标识。
[0062]在本发明实施例中,针对一份数据,一般会备份N个副本,将数据的N个副本分别存储在N个数据节点中,为每个副本设置唯一的副本标识,N个副本分别设置不同的副本标识,设置副本标识可以将N个副本区分开,并且可以根据副本标识获取与副本相关
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1