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

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

Info

Publication number
CN103530362B
CN103530362B CN201310475697.3A CN201310475697A CN103530362B CN 103530362 B CN103530362 B CN 103530362B CN 201310475697 A CN201310475697 A CN 201310475697A CN 103530362 B CN103530362 B CN 103530362B
Authority
CN
China
Prior art keywords
data
copy
time stamp
computer
designated
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.)
Active
Application number
CN201310475697.3A
Other languages
English (en)
Other versions
CN103530362A (zh
Inventor
汪东升
王占业
鞠大鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN201310475697.3A priority Critical patent/CN103530362B/zh
Publication of CN103530362A publication Critical patent/CN103530362A/zh
Application granted granted Critical
Publication of CN103530362B publication Critical patent/CN103530362B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明涉及一种用于多副本分布式系统的计算机数据读写方法,属于计算机网络技术和计算机数据存储技术领域。在本发明方法中,用户针对分布式系统的读写过程采用时间信息与数据信息相分离的方式,首先向分布式系统发送或读取时间戳信息,根据时间戳信息,分布式系统确定接受到的数据的最新状态,以此来保证每份数据的多个副本间的数据一致性,之后用户再与分布式系统进行数据交互。本发明方法步骤简单实用,易于实施。

Description

一种用于多副本分布式系统的计算机数据读写方法
技术领域
本发明涉及一种用于多副本分布式系统的计算机数据读写方法,属于计算机网络技术和计算机数据存储技术领域。
背景技术
随着大数据时代的到来,来自多媒体、互联网的数据正经历着爆炸性增长,单节点计算机系统已经无法满足海量数据的计算与存储要求,所以越来越多的研究机构与IT厂商采用分布式系统解决大量数据的存储、组织与管理问题。分布式系统由多个计算机节点组成,将数据分散存储在多台独立的计算机上,这种设计不但提高了分布式系统的可靠性、可用性和存取效率,还易于扩展。由于在分布式系统中,每个计算机节点都存在发生故障的可能性,所以在存储数据时,分布式系统会对同一份数据产生多份副本,各个副本存放在不同的计算机节点上,当某个计算机节点出现故障时,系统还可以从其它计算机节点获取到相同的数据。
由于每份数据都有多个副本,这就引入数据访问一致性的问题,即在某份数据的更新过程中,该份数据的各个副本可能会产生数据不一致的情况。针对一致性问题,目前常用的有两种解决方案,各有利弊:
1、同步写入:计算机用户一次性写入所有副本,副本在写入过程中不可以被其他计算机用户访问,这种方案的好处在于,无论哪个用户访问数据时,都会读取到最新的数据,但缺点也很明显,即计算机用户写入数据耗时很长,因为需要等待所有的副本都更新完成。
2、异步写入:对于数据一致性做出一定妥协,计算机用户只写入数据的一个副本即可继续其它操作,不需关系其它副本是否已写入成功,其它副本的写入采用异步的方式进行,所有的副本最终状态是一致的,但在副本数据的异步更新过程中,其他用户可能会读到未被更新的数据副本。
发明内容
本发明的目的是提出一种用于多副本分布式系统的计算机数据读写方法为,以克服已有方法的不足之处,采用时间信息与数据信息相分离的方式,可以保证读操作不会读到未被更新的数据,而写操作的延迟远低于同步更新方法。
本发明提出的用于多副本分布式系统的计算机数据读写方法,多副本分布式系统内的每份数据有N个副本,N为奇数,定义N个副本中的任意一个副本为主副本,主副本用于接受计算机用户的写请求,N份副本用于接受读请求,该方法中的数据写操作包括以下步骤:
(1)计算机用户向多副本分布式系统发起一个写请求,写请求数据的标识记为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+1)/2份标识为J的数据的副本所在计算机节点发送的确认信息后,根据确认信息进行如下动作:若接收到的(N+1)/2份确认信息全部为“Null”字符串,则调用多副本分布式系统的接口,向标识为J的数据的主副本所在计算机节点读取数据标识为J的数据的副本,若接收到的(N+1)/2份确认信息中,有一个或一个以上为操作时间戳ts,则计算机用户从所有操作时间戳ts中选出最新的操作时间戳ts,并调用多副本分布式 系统的接口,向发送最新操作时间戳ts的计算机节点读取数据标识为J的数据的副本;
(9)计算机用户接收标识为J的数据的副本,读操作结束。
本发明提出的用于多副本分布式系统的计算机数据读写方法,其优点是:克服了已有方法的不足之处,采用时间信息与数据信息相分离的方式,保证读操作不会读到未被更新的数据,而写操作的延迟远低于同步更新方法,根据时间戳信息,分布式系统可以确定接受到的数据的最新状态,以此来保证每份数据的多个副本之间的数据一致性,之后用户再与分布式系统进行数据交互。而且本发明方法步骤简单实用,易于实施。
附图说明
图1为本发明提出的用于多副本分布式系统的数据写方法流程图。
图2为本发明的用于多副本分布式系统的数据读方法流程图。
具体实施方式
本发明提出的用于多副本分布式系统的计算机数据读写方法,多副本分布式系统内的每份数据有N个副本,N为奇数,定义N个副本中的任意一个副本为主副本,主副本用于接受计算机用户的写请求,N份副本用于接受读请求,该方法中的数据写操作包括以下步骤:
(1)计算机用户向多副本分布式系统发起一个写请求,写请求数据的标识记为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+1)/2份标识为J的数据的副本所在计算机节点发送的确认信息后,根据确认信息进行如下动作:若接收到的(N+1)/2份确认信息全部为“Null”字符串,则调用多副本分布式系统的接口,向标识为J的数据的主副本所在计算机节点读取数据标识为J的数据的副本,若接收到的(N+1)/2份确认信息中,有一个或一个以上为操作时间戳ts,则计算机用户从所有操作时间戳ts中选出最新的操作时间戳ts,并调用多副本分布式系统的接口,向发送最新操作时间戳ts的计算机节点读取数据标识为J的数据的副本;
(9)计算机用户接收标识为J的数据的副本,读操作结束。
以下结合附图及实施例详细说明如下:
本发明的用于多副本分布式系统的计算机数据读写方法,多副本分布式系统内的每份数据有N个副本,N为奇数,定义N个副本中的任意一个副本为主副本,主副本用于接受计算机用户的写请求,所有N份副本均可用于接受读请求。
多副本分布式系统采用网络时间协议(Network Time Protocol)来对各个计算机节点进行校时,网络时间协议可以使计算机或网络设备对其服务器或时钟源(如石英钟,GPS等等)做同步化,提供高精准度的时间校正。
对于操作时间戳的访问,本发明采用经典的NWR算法,N表示共有N个数据副本,W表示将操作时间戳写入W个副本所在的计算机节点才算成功,R表示需要读取R个副本所在的计算机节点才算成功,若W+R>N能保证每次读出的操作时间戳至少有一份是最新的,本发明中W和R均设置为(N+1)/2。
对于多副本分布式系统的写操作,其流程图如图1所示,包括以下步骤:
(1)计算机用户向多副本分布式系统发起一个写请求,写请求数据的标识记为K,并将写请求发送至标识为K的数据的主副本所在计算机节点;
(2)主副本所在计算机节点接收到写请求后,调用多副本分布式系统的接口setTs(K),该接口利用网络时间协议,从本计算机中读取当前时间,记为操作时间戳ts,并将操作时间戳ts与标识K广播给标识为K的数据的其余N‐1份副本所在的计算机节点,N‐1份副本 所在的计算机节点接收到操作时间戳ts与标识K后,向主副本所在计算机节点发出接收确认;
(3)主副本所在计算机节点接收到(N‐1)/2份接收确认后,将标识为K的数据写入成功的信息通知计算机用户,计算机用户可继续进行其它操作,注意此时N个副本中,加上主副本,共有(N‐1)/2+1=(N+1)/2份副本所在计算机节点接收到了操作时间戳;
(4)主副本所在计算机节点调用多副本分布式系统的接口setData(K,data,ts_data),向其余N‐1份副本所在的计算机节点发送标识K、数据时间戳ts_data以及请求写入的数据data,其中ts_data与操作时间戳ts数值相等;
(5)除主副本外其余N‐1份副本所在计算机节点接收到主副本所在计算机节点发出的标识K、数据时间戳ts_data以及请求写入的标识为K的数据,写操作结束。
对于多副本分布式系统的读操作,其流程图如图2所示,包括以下步骤:
(6)计算机用户向多副本分布式系统发起一个读请求,读请求数据的标识记为J,计算机用户调用多副本分布式系统的接口getTs(J),向标识为J的数据的所有N份副本所在计算机节点发送读取各自最新操作时间戳ts的请求,并等待确认;
(7)标识为J的数据的副本所在计算机节点接收到计算机用户的上述读请求后,从本计算机节点内检索标识为J的数据的操作时间戳ts和数据时间戳ts_data,若操作时间戳ts与数据时间戳ts_data均能被检索出,则将操作时间戳ts作为确认发送给计算机用户,若操作时间戳ts与数据时间戳ts_data二者中任意一个没被检索出,则向计算机用户发送一个信息为字符串“Null”的确认,数据时间戳ts_data没被检索出意味着该副本所在计算机节点还未接收到上述写方法描述中流程(4)里主副本所在节点发送的请求写入的数据,操作时间戳ts没被检索出的原因是,上述写方法描述中流程(3)中N份副本中有(N+1)/2份副本收到操作时间戳ts即通知计算机用户写入成功,此时另外(N‐1)/2份副本所在计算机节点中并不存有操作时间戳ts;
(8)计算机用户接收到(N+1)/2份标识为J的数据的副本所在计算机节点发送的确认信息后,根据确认信息进行如下动作:若接收到的(N+1)/2份确认信息全部为“Null”字符串,则调用多副本分布式系统的接口,向标识为J的数据的主副本所在计算机节点读取数据标识为J的数据的副本,若接收到的(N+1)/2份确认信息中,有一个或一个以上为操作时间戳ts,则计算机用户从所有操作时间戳ts中选出最新的操作时间戳ts,并调用多副本分布式系统的接口,向发送最新操作时间戳ts的计算机节点读取数据标识为J的数据的副本;
(9)计算机用户接收标识为J的数据的副本,读操作结束。

Claims (1)

1.一种用于多副本分布式系统的计算机数据读写方法,多副本分布式系统内的每份数据有N个副本,N为奇数,定义N个副本中的任意一个副本为主副本,主副本用于接受计算机用户的写请求,N份副本用于接受读请求,其特征在于该方法中的数据写操作包括以下步骤:
(1)计算机用户向多副本分布式系统发起一个写请求,写请求数据的标识记为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+1)/2份标识为J的数据的副本所在计算机节点发送的确认信息后,根据确认信息进行如下动作:若接收到的(N+1)/2份确认信息全部为“Null”字符串,则调用多副本分布式系统的接口,从标识为J的数据的主副本所在计算机节点读取数据标识为J的数据的副本,若接收到的(N+1)/2份确认信息中,有一个或一个以上为操作时间戳ts,则计算机用户从所有操作时间戳ts中选出最新的操作时间戳ts,并调用多副本分布式系统的接口,从发送最新操作时间戳ts的计算机节点读取数据标识为J的数据的副本;
(9)计算机用户接收标识为J的数据的副本,读操作结束。
CN201310475697.3A 2013-10-12 2013-10-12 一种用于多副本分布式系统的计算机数据读写方法 Active CN103530362B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310475697.3A CN103530362B (zh) 2013-10-12 2013-10-12 一种用于多副本分布式系统的计算机数据读写方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310475697.3A CN103530362B (zh) 2013-10-12 2013-10-12 一种用于多副本分布式系统的计算机数据读写方法

Publications (2)

Publication Number Publication Date
CN103530362A CN103530362A (zh) 2014-01-22
CN103530362B true CN103530362B (zh) 2017-01-04

Family

ID=49932371

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310475697.3A Active CN103530362B (zh) 2013-10-12 2013-10-12 一种用于多副本分布式系统的计算机数据读写方法

Country Status (1)

Country Link
CN (1) CN103530362B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105554044B (zh) * 2014-10-28 2019-01-15 国际商业机器公司 在本地对象存储节点中同步对象的方法及装置
CN105765948A (zh) * 2014-10-29 2016-07-13 华为技术有限公司 信息更新的方法、装置及设备
CN104796322B (zh) * 2015-03-25 2018-11-06 腾讯科技(深圳)有限公司 一种消息处理方法及其设备
CN105550306A (zh) * 2015-12-14 2016-05-04 北京奇虎科技有限公司 多副本数据的读写方法及系统
CN107547593B (zh) * 2016-06-27 2020-05-08 华为技术有限公司 一种实现日志同步的方法、装置及分布式系统
CN106980476A (zh) * 2017-04-01 2017-07-25 广东浪潮大数据研究有限公司 一种分布式系统的数据一致性方法及装置
CN107045426B (zh) * 2017-04-14 2020-12-15 北京粉笔蓝天科技有限公司 一种多副本读取方法和系统
CN107436735A (zh) * 2017-07-28 2017-12-05 郑州云海信息技术有限公司 一种分布式文件系统中存储单元状态更新方法
CN107807793B (zh) * 2017-10-27 2019-11-08 清华大学 分布式计算机存储系统中数据副本异构存储与访问方法
CN108255928A (zh) * 2017-11-30 2018-07-06 北京元心科技有限公司 分布式系统数据读取方法及装置
CN110825309B (zh) * 2018-08-08 2021-06-29 华为技术有限公司 数据读取方法、装置及系统、分布式系统
CN111343277B (zh) * 2020-03-04 2021-12-14 腾讯科技(深圳)有限公司 分布式数据存储方法、系统、计算机设备和存储介质
CN116048429B (zh) * 2023-04-03 2023-07-04 创云融达信息技术(天津)股份有限公司 一种多副本读写方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7827144B1 (en) * 2005-11-17 2010-11-02 Hewlett-Packard Development Company, L.P. Methods of reading and writing data
CN103164219A (zh) * 2013-01-08 2013-06-19 华中科技大学 去中心化架构中使用多类型副本的分布式事务处理系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040139125A1 (en) * 2001-06-05 2004-07-15 Roger Strassburg Snapshot copy of data volume during data access

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7827144B1 (en) * 2005-11-17 2010-11-02 Hewlett-Packard Development Company, L.P. Methods of reading and writing data
CN103164219A (zh) * 2013-01-08 2013-06-19 华中科技大学 去中心化架构中使用多类型副本的分布式事务处理系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种基于时间戳的分布式数据库并发控制方法;周腾;《中国高新技术企业》;20110801(第22期);第16-17页 *

Also Published As

Publication number Publication date
CN103530362A (zh) 2014-01-22

Similar Documents

Publication Publication Date Title
CN103530362B (zh) 一种用于多副本分布式系统的计算机数据读写方法
CN105338078B (zh) 用于存储系统的数据存储方法和装置
ES2703901T3 (es) Sistema de archivo distribuido mediante nodos de consenso
EP2378718B1 (en) Method, node and system for controlling version in distributed system
CN103338243B (zh) Web节点的缓存数据更新方法和系统
CN110045912A (zh) 数据处理方法和装置
CN112084258A (zh) 一种数据同步方法和装置
JP5548829B2 (ja) 計算機システム、データ管理方法及びデータ管理プログラム
CN103701913B (zh) 数据同步方法及装置
WO2014059804A1 (zh) 数据同步方法及系统
EP4213038A1 (en) Data processing method and apparatus based on distributed storage, device, and medium
CN103856516A (zh) 数据存储、读取方法及数据存储、读取装置
CN106302829A (zh) 一种信息访问方法、装置及服务器
TW200415894A (en) Atomic message division
WO2015014170A1 (zh) 分区日志队列同步管理方法及设备
CN109819048A (zh) 数据同步方法、装置、终端及存储介质
WO2019057193A1 (zh) 数据删除方法及分布式存储系统
CN103763368B (zh) 一种跨数据中心的数据同步方法
CN110046062A (zh) 分布式数据处理方法及系统
CN106302625B (zh) 数据更新方法、装置及相关系统
CN113010549A (zh) 基于异地多活系统的数据处理方法、相关设备及存储介质
CN106897288B (zh) 数据库的服务提供方法和系统
CN108762982B (zh) 一种数据库恢复方法、装置及系统
CN112925477A (zh) 一种数据处理方法、装置以及存储系统
JP2015082296A (ja) 中継装置、中継方法、中継プログラム、および中継システム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant