CN103067471A - 一种分布式存储的数据获取方法 - Google Patents
一种分布式存储的数据获取方法 Download PDFInfo
- Publication number
- CN103067471A CN103067471A CN2012105638255A CN201210563825A CN103067471A CN 103067471 A CN103067471 A CN 103067471A CN 2012105638255 A CN2012105638255 A CN 2012105638255A CN 201210563825 A CN201210563825 A CN 201210563825A CN 103067471 A CN103067471 A CN 103067471A
- Authority
- CN
- China
- Prior art keywords
- lock
- node
- announcement
- nodes
- data
- 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.)
- Granted
Links
Images
Landscapes
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种不需中心服务器参与的,完全分散式的分布式存储的数据获取方法,包括如下步骤:(1)先检查A锁在本地的状态,如果A锁已经被占用,则执行退避策略,等待随机时延后,再重新获取;(2)若本地A锁状态处于空闲,则将本地A锁置为被占用状态,但此时本节点暂不能使用该锁操作数据A,而是先向网络中发送A锁即将被占用的通告;(3)在发出通告后建立冲突检测定时器,检测互斥锁占用的冲突现象。本发明的分布式存储的数据获取方法,将P2P网络中各节点之间动作协调,有序的操作同一数据,不产生冲突,也不需要增加额外的服务器。
Description
技术领域
本发明涉及一种数据获取方法,尤其是一种分布式存储的数据获取方法。
背景技术
Google公司设计实现了Chubby分布式锁服务系统,并已经在其内部系统中广泛使用。Chubby向程序设计者提供锁服务的接口,来保证数据操作的一致性。Chubby系统本质上是一个分布式的文件系统。系统为每项数据分配一个文件来代表其锁,用户通过打开、关闭和读取文件,获取操作此项数据的锁。通过通信机制,向用户发送更新信息。例如,当一群机器选举mater时,这些机器同时申请打开某个文件,并请求锁住这个文件。成功获取锁的服务器当选主服务器,并且在文件中写入自己的地址。其他服务器通过读取文件中的数据,获得主服务器的地址信息。
以chubby为典型代表的分布式锁服务系统,是针对服务器端的设计,由服务器向外提供服务。鉴于此类集中式锁服务都是基于中心服务器,在运行过程中存在很多不足,最典型的就是单点失效和性能瓶颈问题。一旦中心服务器出现故障不能够正常提供锁服务,整个网络的运行必将受到影响,严重时导致网络瘫痪。集中式锁服务的单点瓶颈问题比较严重。并且对于纯P2P网络来说,各节点同时作为客户端和服务器端,不存在中心服务器,这就要求能够有一套机制,能够提供完全分散式的锁服务,来保证分布存储在各节点上的数据能够保证一致性。
发明内容
本发明提供了一种不需中心服务器参与的,完全分散式的分布式存储的数据获取方法。
实现本发明目的的分布式存储的数据获取方法,包括如下步骤:
(1)先检查A锁在本地的状态,如果A锁已经被占用,则执行退避策略,等待随机时延后,再重新获取;
(2)若本地A锁状态处于空闲,则将本地A锁置为被占用状态,但此时本节点暂不能使用该锁操作数据A,而是先向网络中发送A锁即将被占用的通告;
(3)在发出通告后建立冲突检测定时器,检测互斥锁占用的冲突现象;
(4)若在定时器超时之前,收到了其他节点回送的冲突报告,或者收到其他节点发来的获取A锁的通告,则对于本节点来说获取A锁失败,清除本地A锁被占用的标识,向网络中发送释放A锁的通告;并执行退避策略,等待随机时延后再重新获取;
在定时器超时之前收到其他节点发来的获取A锁通告,此节点应向通告源发送冲突报告,冲突双方均采用退避策略。
(5)若定时器超时之前未收到冲突报告,或其他节点的占用通告,则定时器超时后,此次获取A锁的操作成功,本节点即真正开始持有该锁,并可以对数据A进行操作;待针对数据A的操作完成后,再用步骤(4)的方式释放A锁;为了防止持有A锁的节点在进行数据操作期间意外宕机或掉线,导致锁不能正常被释放而影响其他节点的操作,因此本发明还设计了锁的超时机制,即持有锁的节点在获取到锁后一段时间内必须发出释放该锁的通告,否则在超时后网络中其他节点自动将其本地的锁置为空闲,其他节点即可申请持有该锁。
本发明的分布式存储的数据获取方法的有益效果如下:
本发明的分布式存储的数据获取方法,是针对分布式网络中分布式存储的数据的锁,对于所有节点来说,只有获取到锁才有权操作此项数据。因此该锁是一个网络范围的全局的概念,由于不考虑使用服务器来提供锁服务,所以采用的替代方案是在每个节点处维护此锁的状态。每次有节点获取到该锁后,更改各节点上锁的状态,禁止多个节点同时操作同一项数据。只要所有节点都遵守这一机制,就能够保证在同一时间操作同一数据的节点只有一个。通过这种简单的方法,P2P网络中各节点之间动作协调,有序的操作统一数据,不产生冲突,也不需要增加额外的服务器。
附图说明
图1为本发明的分布式存储的数据获取方法的流程图。
具体实施方式
如图1所示,本发明的分布式存储的数据获取方法,包括如下步骤:
(1)先检查A锁在本地的状态,如果A锁已经被占用,则执行退避策略,等待随机时延后,再重新获取;
(2)若本地A锁状态处于空闲,则将本地A锁置为被占用状态,但此时本节点暂不能使用该锁操作数据A,而是先向网络中发送A锁即将被占用的通告;
(3)在发出通告后建立冲突检测定时器,检测互斥锁占用的冲突现象;
(4)若在定时器超时之前,收到了其他节点回送的冲突报告,或者收到其他节点发来的获取A锁的通告,则对于本节点来说获取A锁失败,清除本地A锁被占用的标识,向网络中发送释放A锁的通告;并执行退避策略,等待随机时延后再重新获取;
(5)若定时器超时之前未收到冲突报文,则定时器超时后,此次获取A锁的操作成功,本节点即真正开始持有该锁,并可以对数据A进行操作;待针对数据A的操作完成后,再用步骤(4)的方式释放A锁;为了防止持有A锁的节点在进行数据操作期间意外宕机或掉线,导致锁不能正常被释放而影响其他节点的操作,因此本发明还设计了锁的超时机制,即持有锁的节点在获取到锁后一段时间内必须发出释放该锁的通告,否则在超时后网络中其他节点自动将其本地的锁置为空闲,其他节点即可申请持有该锁。
本发明的分布式存储的数据获取方法,提供了一种完全分散式的锁机制,各节点维护同一锁的状态信息。通过检测本地锁状态并与网络中其他节点进行协商获取锁的持有权。当冲突发生时,冲突双方均采用退避策略,分别等待随机时延后再进行锁的获取。并且设计了超时机制,来避免某一节点因故障而过长时间持有锁,不能正常释放的情况。通过这种简单的完全分散式的锁机制,实现了不同节点对同一数据操作的串行化,保证了分布式数据的一致性。
以Chubby系统为代表的分布式锁服务系统,在提供锁服务时由中心服务器来进行多节点的动作的协调。而本发明所述的分布式锁,秉承完全去中心化的思想,取缔了中心服务器的角色,只需各节点都遵守相同的协调机制,通过简单的信息交互即可协调各节点的动作达到同步的目的。并且此完全分布式锁实现简单,尤其适用于没有中心服务器的完全分布式网络。
上面所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神前提下,本领域普通工程技术人员对本发明技术方案做出的各种变形和改进,均应落入本发明的权利要求书确定的保护范围内。
Claims (1)
1.一种分布式存储的数据获取方法,包括如下步骤:
(1)先检查A锁在本地的状态,如果A锁已经被占用,则执行退避策略,等待随机时延后,再重新获取;
(2)若本地A锁状态处于空闲,则将本地A锁置为被占用状态,但此时本节点暂不能使用该锁操作数据A,而是先向网络中发送A锁即将被占用的通告;
(3)在发出通告后建立冲突检测定时器,检测互斥锁占用的冲突现象;
(4)若在定时器超时之前,收到了其他节点回送的冲突报告,或者收到其他节点发来的获取A锁的通告,则对于本节点来说获取A锁失败,清除本地A锁被占用的标识,向网络中发送释放A锁的通告;并执行退避策略,等待随机时延后再重新获取;
在定时器超时之前收到其他节点发来的获取A锁通告,此节点应向通告源发送冲突报告,冲突双方均采用退避策略。
(5)若定时器超时之前未收到冲突报告,或其他节点的占用通告,则定时器超时后,此次获取A锁的操作成功,本节点即真正开始持有该锁,并可以对数据A进行操作;待针对数据A的操作完成后,再用步骤(4)的方式释放A锁;为了防止持有A锁的节点在进行数据操作期间意外宕机或掉线,导致锁不能正常被释放而影响其他节点的操作,因此本发明还设计了锁的超时机制,即持有锁的节点在获取到锁后一段时间内必须发出释放该锁的通告,否则在超时后网络中其他节点自动将其本地的锁置为空闲,其他节点即可申请持有该锁。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210563825.5A CN103067471B (zh) | 2012-12-24 | 2012-12-24 | 一种分布式存储的数据获取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210563825.5A CN103067471B (zh) | 2012-12-24 | 2012-12-24 | 一种分布式存储的数据获取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103067471A true CN103067471A (zh) | 2013-04-24 |
CN103067471B CN103067471B (zh) | 2019-01-11 |
Family
ID=48109925
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210563825.5A Active CN103067471B (zh) | 2012-12-24 | 2012-12-24 | 一种分布式存储的数据获取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103067471B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103701770A (zh) * | 2013-11-22 | 2014-04-02 | 汉柏科技有限公司 | 一种基于租约机制的异常解锁方法 |
WO2017187280A1 (en) * | 2016-04-29 | 2017-11-02 | International Business Machines Corporation | Storing data in dispersed storage network with consistency |
CN107517277A (zh) * | 2017-10-09 | 2017-12-26 | 郑州云海信息技术有限公司 | 一种sanlock锁实现方法和装置 |
CN108038004A (zh) * | 2017-09-30 | 2018-05-15 | 用友金融信息技术股份有限公司 | 分布式锁生成方法、装置、计算机设备和可读存储介质 |
US10091298B2 (en) | 2016-05-27 | 2018-10-02 | International Business Machines Corporation | Enhancing performance of data storage in a dispersed storage network |
CN109033364A (zh) * | 2018-07-26 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种处理分布式事务的方法、配置中心及节点 |
CN110445864A (zh) * | 2019-08-11 | 2019-11-12 | 西藏宁算科技集团有限公司 | 一种云计算环境下分布式锁的实现方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1786918A (zh) * | 2004-12-10 | 2006-06-14 | 惠普开发有限公司 | 分布式锁 |
CN1980236A (zh) * | 2005-12-09 | 2007-06-13 | 英业达股份有限公司 | 分布式数据动态程序代理方法 |
CN101013381A (zh) * | 2007-01-26 | 2007-08-08 | 华中科技大学 | 基于对象存储系统的分布式锁 |
-
2012
- 2012-12-24 CN CN201210563825.5A patent/CN103067471B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1786918A (zh) * | 2004-12-10 | 2006-06-14 | 惠普开发有限公司 | 分布式锁 |
CN1980236A (zh) * | 2005-12-09 | 2007-06-13 | 英业达股份有限公司 | 分布式数据动态程序代理方法 |
CN101013381A (zh) * | 2007-01-26 | 2007-08-08 | 华中科技大学 | 基于对象存储系统的分布式锁 |
Non-Patent Citations (1)
Title |
---|
周梅: "分布式锁的设计与实现", 《计算机工程》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103701770A (zh) * | 2013-11-22 | 2014-04-02 | 汉柏科技有限公司 | 一种基于租约机制的异常解锁方法 |
WO2017187280A1 (en) * | 2016-04-29 | 2017-11-02 | International Business Machines Corporation | Storing data in dispersed storage network with consistency |
GB2565932A (en) * | 2016-04-29 | 2019-02-27 | Ibm | Storing data in dispersed storage network with consistency |
GB2565932B (en) * | 2016-04-29 | 2019-08-28 | Ibm | Storing data in dispersed storage network with consistency |
US10628399B2 (en) | 2016-04-29 | 2020-04-21 | International Business Machines Corporation | Storing data in a dispersed storage network with consistency |
US10091298B2 (en) | 2016-05-27 | 2018-10-02 | International Business Machines Corporation | Enhancing performance of data storage in a dispersed storage network |
CN108038004A (zh) * | 2017-09-30 | 2018-05-15 | 用友金融信息技术股份有限公司 | 分布式锁生成方法、装置、计算机设备和可读存储介质 |
CN107517277A (zh) * | 2017-10-09 | 2017-12-26 | 郑州云海信息技术有限公司 | 一种sanlock锁实现方法和装置 |
CN107517277B (zh) * | 2017-10-09 | 2020-05-19 | 苏州浪潮智能科技有限公司 | 一种sanlock锁实现方法和装置 |
CN109033364A (zh) * | 2018-07-26 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种处理分布式事务的方法、配置中心及节点 |
CN110445864A (zh) * | 2019-08-11 | 2019-11-12 | 西藏宁算科技集团有限公司 | 一种云计算环境下分布式锁的实现方法及系统 |
CN110445864B (zh) * | 2019-08-11 | 2022-04-08 | 西藏宁算科技集团有限公司 | 一种云计算环境下分布式锁的实现方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103067471B (zh) | 2019-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103067471A (zh) | 一种分布式存储的数据获取方法 | |
CN103051470B (zh) | 一种集群及其磁盘心跳的控制方法 | |
CN103731485A (zh) | 一种网络设备、集群存储系统及分布式锁管理方法 | |
WO2016086582A1 (zh) | 信号检测方法及装置 | |
CN103152390A (zh) | 分布式存储系统的节点配置方法、装置、节点及系统 | |
CN110557416B (zh) | 一种多节点协同打块的方法及系统 | |
CN102684923A (zh) | 一种半双工异步通信自愈组网方法 | |
CN105245386A (zh) | 服务器连接关系的自动定位方法和系统 | |
US8832215B2 (en) | Load-balancing in replication engine of directory server | |
CN113067897B (zh) | 跨链交互方法及装置 | |
CN107678923A (zh) | 一种分布式文件系统消息处理的优化方法 | |
CN104461705B (zh) | 一种业务访问的方法及存储控制器、集群存储系统 | |
CN111629059A (zh) | 一种集群通信方法、系统、设备及计算机可读存储介质 | |
CN105704187A (zh) | 一种集群脑裂的处理方法及装置 | |
WO2016124044A1 (zh) | 无源光网络设备告警信息处理方法及光线路终端 | |
CN113791959A (zh) | 服务平台的告警推送方法、系统、终端及存储介质 | |
CN104699527A (zh) | 一种云存储系统中的临界资源管理方法和装置 | |
CN110321199B (zh) | 一种共用数据变更的通知方法、装置、电子设备及介质 | |
CN105099753B (zh) | 网络管理系统及其处理业务的方法 | |
CN106294236B (zh) | 一种基于rs485的通信方法、装置以及通信系统 | |
CN113259462B (zh) | 区块链消息的分发方法及装置 | |
Balhara et al. | Leader election algorithms in distributed systems | |
CN109614242A (zh) | 一种计算能力共享方法、装置、设备及介质 | |
CN114880717A (zh) | 数据归档方法及装置 | |
CN109347851B (zh) | 一种请求响应方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
DD01 | Delivery of document by public notice | ||
DD01 | Delivery of document by public notice |
Addressee: BEIJING DYNA TECHNOLOGY Co.,Ltd. Document name: Notification of Passing Examination on Formalities |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
DD01 | Delivery of document by public notice | ||
DD01 | Delivery of document by public notice |
Addressee: Guo Ling Document name: Notification of Qualified Procedures |