带你读《对象存储实战指南》第三章命名和同步3.3逻辑时钟(一)-阿里云开发者社区

开发者社区> -开发者助手-> 正文

带你读《对象存储实战指南》第三章命名和同步3.3逻辑时钟(一)

简介: 《对象存储实战指南》第三章命名和同步3.3逻辑时钟
+关注继续查看

在分布式系 统中,如果物理时钟精不够或者误差太大,就会使用逻辑时钟( Log ic alClock) 来控制系统不同组件、进程之间事件的时间先后顺序 


3.3.1 逻辑时钟技术 

业界逻 辑时钟的典型实 现有软件序号器 的兰伯特时间戳 LamportTimestamp)、时间偏序 PartialOrdering的向时钟 VectorClock)、副本顺序 OrderReplicas的版本向(VersionVector ) 

1.  逻辑时钟 

1978,图奖获得者 LeslieLamport在其发表的论文 Timeclocksandtheorderingof
eventsinadistributedsystem中 详细描述时钟现,核心点先后顺序 ( HappenedBefore序号计数 SoftwareCounter)

先后顺序按照数学理论偏序的定义如下。

 

·  相同进程内,如果事件 a先千事件 b发生,就表示为 a->b

·   不同进程内,如果事件 X是进程 A发送消息 ,事件 Y是进程 B接收该消息 ,那么事件 X定先千事件 Y发生就表示为 X->Y

发生的先后顺,可以很方 便地用软件计 数 SoftwareCounter序号,而序号小可以判断先后顺序。如图 3-12所示,如果没有逻辑时 钟技术 ,第 3步发生时可能l步因为网络问题还没 有完成数据写入 磁盘的操作,从而导致第 3议到磁盘 的历史数据是引入逻辑时钟,可以通过序值确定先后 顺序,保证系统设计正确性

image.png

3-12         逻辑时钟示例


 

基于逻辑时钟非常容易实现两台服务器或两个进程间的事件先后顺序裁决,但是如果   在多台服务器 或多个进程的情况下继续使用 就需要选出 唯成器,众务器向该序生成器申请序号以判断先顺序,此时会导致序号生成器成为系统瓶颈

时钟通过组合多 个本地计数器判断事件的先后顺序,不需要唯一 的序号生器就可以实现关联事件的先后顺序裁决。如图3-13,事件 1-1到事件 1-10有先后个或地计数器组成如,1-5(由A:2,   B:2,   C:l]钟组成)1-6(由A:2,   B:4,   C:l]之间存在先后,而2-1(由B:3,   C:l]钟组1-5(由A:2,   B:2, Cl]个本地逻辑时钟组成之间就无判断先的两个

image.png

3-13时钟

 

在分布式对象存储,读写不同     的对,而写对、再取对就存在先,特/写相同对时就制先

 

1.  版本向量 

不管是逻辑时 钟还是向 时钟,它们都集中解决事件的先后顺序问题而版可以在分布式系统中跟踪数据的变 化,特别是多个客户端在不同 的时间更新数据的变 化

户端 l户端 2在不同时间更新数据存储 Rl的对象X。每次更新记录版本时 ,Rl按时间 顺记录数据更新3个,组合起来就[X:l=AAAX:2=BBB,  X:3=CCC,从而形成版本 向,如图 3-14a所示针对分布式系 统,数据会保存为多个副本 ,每个副本都会有版本,将个副的版量组合来就形成了版本矩阵  Version  Matrix),如图所示。

image.png

3-14    版本示例

由千系统的更新有依赖关系,每次更新只有在确认上次版本写入成功后才能覆盖,此时就会存在历史 版本的清理问题,因此需要在数据 存储侧对版本向进行合并删减 而在分布式冗余存储中 ,还需要结合多个副 本的致性进行处理,这些都是分布式系统的挑战点。

 

1.  多版本并 发控制

 

数据库领域中广泛 使用的多版本并发控制 ( Multi-Version ConcurrencyControlMVCC),就是与版本向量非常类似的一种技术。它是数据库管理系统常用的并发控制技术,其目标是优化读/写 锁造成的个长时间的读操作饿死 写操作问题 。它的核心机制是每次事务读到 数据项都是历史快照,而每次事务的写操作不覆盖已有数据项,而是创建新的版本。

MVCC使用系 统时间戳TS或逻辑时 钟号,在写入数据时将其作为版本标识符ID) ,

读/写时采取如下规则。

 

·   基千 MVCC的读操作 。事务 T,读取对时,将选择比事务 T,时间更早,且最接近事务 T,的有效版本 返回。

·   基于MVCC  的写操作若事T,和T  以先后序写相同对象,则必须保T,先 千 T丿 发生,也就是T,T丿 ,因此入时需要做更多的版本时间检查 ,才能保证数据致性。

在保证致性的前提下,MVCC  通过类似于乐观锁的机制提供并发控制 ,在写冲突较少的情况下可以大幅提升系统性能


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《大数据存储:MongoDB实战指南》一导读
多年来,我一直在和数据库存储技术打交道,深知数据存储技术在整个IT系统中起着至关重要的作用,尤其是随着云计算时代的到来,所有企业都面临着海量的数据信息,如何处理这些数据成为当前研究的热点。在过去二十几年中,数据的存储是关系数据库的天下,它以高效、稳定、支持事务的优势几乎统治了整个行业的存储业务;但是随着互联网的发展,许多新兴产业如社交网络、微博、数据挖掘等业务快速增长,数据规模变得越来越庞大,高效存储、检索、分析这些海量的数据,关系数据库变得不再适用。
1768 0
表格存储 SQL 操作实战
表格存储做为一款结构化存储系统,近期发布了新功能 SQL,大幅简化了查询的门槛,用户无需学习繁琐的 SDK,也不用区分表,索引等不同的接口,可以像访问传统的 MySQL 这类数据库一样,使用 SQL 的方式访问云原生的结构化大数据存储。下面我们就来具体实操下,看看查询用起来顺不顺手。
79 0
PostgreSQL 最佳实践 - 在线逻辑备份与恢复介绍
背景 PostgreSQL 逻辑备份, 指在线备份数据库数据, DDL以SQL语句形式输出, 数据则可以以SQL语句或者固定分隔符(row格式)的形式输出. 备份时不影响其他用户对备份对象的DML操作. 本文主要介绍一下PostgreSQL提供的逻辑备份工具pg_dump, p
3564 0
非阻塞同步算法实战(一)
本文写给对ConcurrentLinkedQueue的实现和非阻塞同步算法的实现原理有一定了解,但缺少实践经验的朋友,文中包括了实战中的尝试、所走的弯路,经验和教训。
22 0
编程实战——电影管理器之XML存储电影信息数据
但凡管理器之类的软件,存储数据是必不可少的。存储数据的话,有几种选择。一是用数据库,把数据存储到数据库里;一是用文本文件,把数据存储到文本文件里;一种是利用XML文件,把数据对象转换为XML后,存储到XML文件(实际上也是文本文件)。
709 0
《存储漫谈Ceph原理与实践》第三章接入层3.2对象存储RGW(三)
《存储漫谈Ceph原理与实践》第三章接入层3.2对象存储RGW
11 0
1328
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载