美文网首页
ceph-rgw读写事务性

ceph-rgw读写事务性

作者: 小跑001 | 来源:发表于2022-10-09 19:26 被阅读0次

背景

rgw写一个对象的时候需要更新文件内容,又要更新index pool中的索引,如何保证多个操作的一致性,也就是如何保证多个操作的事务性。有没可能只更新了文件内容而没更新index pool,有没可能并发操作下index pool和文件内容并不一致。

分析

这里其实有两个问题:
1) 原子性问题,也就是只更新了index 而没更新数据,或者说只更新了数据而没更新index。

答:这里实际用了最终一致性。也就是记录index的prepare日志,以是否更新了rados header对象为准来判断是否要更新index对象。当服务中断恢复后,可以通过prepare日志来查询是否更新了header对象,从而决定是否更新index索引。

2) 写写冲突问题。也就是两个客户端同时并发写入一个rgw对象,最终状态是A客户端更新了索引而B客户端更新了header对象,从而导致两边数据不一致。

答: 这里仍然采用了以header对象为准,更新完header对象会返回一个唯一时间戳,后更新的肯定时间戳较大,当去更新index的时候会比较时间戳,如果发现已经存在更大的时间戳则放弃更新index,从而避免了不一致的情况发生。

相关文章

  • 【mysql 读写分离】

    1、what 读写分离 读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DE...

  • MySQL主从复制

    1、what 读写分离读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DEL...

  • Laravel框架学习笔记之数据库读写

    1.读写分离是什么? 读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DEL...

  • mysql读写分离

    1.读写分离的思路 1.1 原理 顾名思义,读写分离基本的原理是让主数据库处理事务性增、改、删操作,而从数据库处理...

  • 读写分离

    1.基本原理 读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE)...

  • 事务性消耗

    我早上到的还挺早的。 需要订张明天出差用的机票。 一上午各种折腾,到现在,票依然没定成功。 先是知道有个外协的订票...

  • 事务性消息

    为了在原有的同步系统中新增异步消息,但是我们的目的是:第一:对于原有系统服务做到最少的代码侵入性,第二:本地DB操...

  • MySQL存储引擎

    InnoDB存储引擎 mysql默认事务性引擎。 支持事务 由于InnoDB性能及奔溃自动恢复特性,在其他非事务性...

  • storm trident 事务和 spout和state有关

    首先spout有三种:这些关系到相同的batchid里面是否包含相同的tuple 事务性:相同 模糊事务性:如果取...

  • solidity合约事务性测试

    目标:验证交易具有事务性结果:具有事务性 部署合约部署成功后,查询初始化数据:image.png 测试交易 nam...

网友评论

      本文标题:ceph-rgw读写事务性

      本文链接:https://www.haomeiwen.com/subject/mfswartx.html