DAOS API 支持分布式事务,允许将针对属于同一 Container 的对象的任何更新操作组合到单个 ACID 事务中。分布式一致性是通过基于多版本时间戳排序的无锁乐观并发控制机制提供的。DAOS 事务是可串行化的,可以在特定的基础上获取部分需要的数据集。

DAOS 版本控制机制允许创建持久的 Container 快照,该快照提供 Container 的实时分布一致性视图,该视图可用于构建生产者-消费者管道。

Epoch 和时间戳

拼多多优惠券 https://www.fenfaw.net/

每个 DAOS I/O 操作都有一个称为 epoch 的时间戳。epoch 是一个 64 位整数,它集成了逻辑和物理时钟(详见 HLC paper)。DAOS API 提供了辅助函数,用于将 epoch 转换为传统的 POSIX 时间(即 struct timespec,详见 clock_gettime(3))。

Container 快照

如下图所示,Container 的内容可以随时快照。

DAOS 快照非常轻量级,并且使用与创建快照的时间相关联的 epoch 进行标记。一旦创建成功,快照将一直保持可读性,直到它被显式销毁。在特定快照未被销毁前,Container 的内容可以回滚到该快照。

Container 快照功能支持本机生产者/消费者管道:

一旦成功写入数据集的一致版本,生产者 (Producer) 将生成一个快照。使用者 (Consumer) 的应用程序可以订阅 Container 快照事件,以便在生产者提交更新时可以处理新的更新。

快照的不变性保证了使用者可以看到一致的数据,即使生产者继续进行新的更新。生产者和消费者实际上都在 Container 的不同版本上操作,不需要任何串行化操作。一旦生产者生成了数据集的新版本,使用者就可以查询两个快照之间的差异,并且只处理增量修改。

分布式事务

与 POSIX 不同,DAOS API 不强制执行最坏情况下的并发控制机制来处理冲突的 I/O 操作。相反,各个 I/O 操作被标记为不同的 epoch,并按照 epoch 的顺序应用,而不管执行顺序如何。这个基准模型为不产生冲突的 I/O 工作负载的数据模型和应用程序提供了最大的可伸缩性和最高的性能。典型的例子是 MPI-IO 集合操作、POSIX 文件读/写操作和 HDF5 数据集读/写操作。

对于需要将冲突串行化的部分数据模型,DAOS 提供了基于多版本并发控制的分布式可串行化事务。当不同的用户进程要覆盖与 dkey/akey 关联的值时,通常需要该事务。例如 DAOS 上的 SQL 数据库,或者由非一致的客户端并发访问的一致的 POSIX 命名空间。

在同一操作的上下文中提交的所有 I/O 操作(包括读取)将使用相同的 epoch。DAOS 事务机制自动检测传统的读/写、写/读和写/写冲突,并中止其中一个冲突事务(事务在 -DER_RESTART 参数下提交失败)。然后,用户/应用程序必须重新启动失败的事务。

在目前的实现中,事务 API 具有以下限制,这些限制将在未来的 DAOS 版本中解决:

  • 不支持 Array API
  • 通过同一上下文环境执行的对象获取/列表和键值获取/列表操作所进行的事务对象更新和键值放入操作不可见。

相关信息

GitHub: https://github.com/storagezhang

Emai: debugzhang@163.com

华为云社区: https://bbs.huaweicloud.com/blogs/254178

DAOS: https://github.com/daos-stack/daos

本文翻译自 https://daos-stack.github.io/overview/transaction

DAOS 分布式异步对象存储|事务模型相关推荐

  1. 从两个模型带你了解DAOS 分布式异步对象存储

    本文分享自华为云社区<DAOS 分布式异步对象存储>,原文作者:debugzhang . 分布式异步对象存储 (DAOS) 是一个开源的对象存储系统,专为大规模分布式非易失性内存 (NVM ...

  2. 12月21日云栖精选夜读 | 推荐:一款分布式的对象存储服务

    最近公司在准备内部数据上云,并且内部数据库每天的数据量很大,需要采用大数据存储的方案. 方案调研每个程序技术在实现之前,需要进行开源产品的调研,适合自己产品的技术方案才是最好的. 需求我们需要处理是图 ...

  3. python分布式对象存储_推荐:一款分布式的对象存储服务

    最近公司在准备内部数据上云,并且内部数据库每天的数据量很大,需要采用大数据存储的方案. 方案调研 每个程序技术在实现之前,需要进行开源产品的调研,适合自己产品的技术方案才是最好的. 需求 我们需要处理 ...

  4. CLUSTER 05: 块存储应用案例 分布式文件系统 对象存储

    一.块存储应用案例 目的: KVM虚拟机调用Ceph镜像作为虚拟机的磁盘. 1.1 准备实验环境 1.1.1 创建磁盘镜像 •  为虚拟机创建磁盘镜像 [root@node1    ~]#    rb ...

  5. 块存储、文件存储、对象存储这三者和分布式文件存储系统的本质区别

    块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based St ...

  6. Apache基金会正式宣布新一代分布式对象存储Ozone成为顶级项目

    刚刚获悉,Apache基金董事会通过一致表决,正式批准分布式文件对象存储Ozone从Hadoop社区孵化成功,成为独立的Apache顶级开源项目.这意味着,作为腾讯大数据团队首个参与和主导的开源项目, ...

  7. 从一到无穷大 #3 对象存储.浅谈

    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可. 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权. 文章目录 引言 Windows A ...

  8. 块存储、文件存储、对象存储意义及差异

    关于块存储.文件存储.对象存储方面的知识在知乎上看到了个很好的解答:https://www.zhihu.com/question/21536660 通俗易懂,查了些资料做了详细的补充. 块存储 典型设 ...

  9. 4 读写文件_块存储、文件存储、对象存储的区别

    1. 块存储 典型设备: 磁盘阵列,硬盘 ​ 块存储主要是将裸磁盘空间整个映射给主机使用的,就是说例如磁盘阵列里面有5块硬盘(为方便说明,假设每个硬盘1G),然后可以通过划逻辑盘.做Raid.或者LV ...

  10. 阿里云-对象存储 OSS > 开发指南 > 基本概念

    基本概念 更新时间:2020-09-24 10:50:53 编辑我的收藏 https://help.aliyun.com/document_detail/31827.html#title-cn1-rb ...

最新文章

  1. matlab求微分方程的系数,如何利用matlab求解矩阵系数的二阶微分方程
  2. Linux在任务栏上找不到最小化窗口的解决方法
  3. NLP深度学习:基于TensorFlow实现Skip-Gram模型
  4. oracle存储返回sql查询,如何做才能使record类型和table类型存储查询语句返回的多条记录?...
  5. cpu飙升 死循环_JDK8中HashMap依然会产生死循环问题!
  6. 算法复习——迭代加深搜索(骑士精神bzoj1085)
  7. 关于预编绎网站的问题[已预编译此应用程序的错误]
  8. 定位导航方案在特殊环境下的适用说明
  9. 5G 兴起,物联网安全危机四伏
  10. pg 简单备份和恢复
  11. 输出200以内所有素数(质数),5个一换行
  12. 腾讯云实验室linux基本操作
  13. 数据交换平台-初步设计
  14. 简述利用PE系统破解Windows密码
  15. 使用fpdf2将txt文本转可编辑pdf报错解决办法
  16. 云场景实践研究第33期:神州优车
  17. 这是你们要的临时接收短信的虚拟手机号
  18. 自动化测试之 ddt 驱动 excel 文件
  19. php swa,科学网—DBSCAN-SWA:一行命令找到溶源噬菌体 - 刘永鑫的博文
  20. Bugly 1:版本更新

热门文章

  1. MT7620A的DTS
  2. 1.1 wamp/wnmp 环境搭建
  3. Linux环境下配置虚拟ip,方法2:单网卡绑定多IP
  4. webstorm配置环境变量_webstorm设置
  5. 新媒体运营,微博平台运用技巧分享
  6. latex利用bibmap生成双语对照的文献表
  7. 百利天恒更新招股书:上半年收入约3亿元,持续加大研发投入
  8. json.decoder.JSONDecodeError: Expecting value: line column (char )
  9. 互联网高端社畜行话大全(表情包)
  10. 【报错】UnboundLocalError: local variable ‘xxx‘ referenced before assignment