美文网首页
ceph rgw 双活数据同步

ceph rgw 双活数据同步

作者: 小跑001 | 来源:发表于2021-11-11 08:53 被阅读0次

设计

  1. 线程模型是什么样的?

    答: 一个zone对应一个线程, 参考int RGWRados::init_complete() -> RGWDataSyncProcessorThread

  2. coroutine模型是什么样的?

    答: coroutine可以根据需要指定,无固定模式

  3. 数据结构是什么样的?

    答:

image.png
  1. 同步流程?

    答:参考下图

    image
  2. 类结构?

    答:

    image
  1. 流程说明?

    答:

    • 先从datalog.sync-status.sourcezone读取同步的状态,并从datalog.sync-status.shard.sourcezone.shardid读取每个shard同步的marker.

      • 如果是init, 则为后续的全量同步以及增量同步做准备:

        1) 存储增量日志当前的标记,方便全量同步之后可以在该位置进行增量同步,避免漏掉数据。

        2) 更改状态为 BuildingFullSyncMaps

      • 如果是BuildingFullSyncMaps, 则拉取所有的bucket以及bucket对应的shard数量,为每个bucket的shard生成一条数据,再根据hash放入data.full-sync.index.sourcezone.shardid(这里的shard数量和source_zone 的datalog), 设置状态为全量同步。

      • 如果是FullSync, 则从data.full-sync.index.sourcezone.shardid拉取bucket:instance, 根据bucket.sync-status.sourcezone.bucketname.shardid读取属性信息即是同步状态以及marker,根据不同状态进入init、full或者是inc sync进行同步

      • 如果是IncSync, 进行增量同步。

    • 这里的data_log.shardid和datalog.sync-status.shard.sourcezone.shardid以及data.full-sync.index.sourcezone.shardid都是一对一的关系,bucket:shardid的映射关系也是一致的, 当data.full-sync.index.sourcezone.shardid对应的shard全量同步结束之后即可开启该shard的增量同步,即转移到跟踪data_log.shardid和datalog.sync-status.shard.sourcezone.shardid。 也由此可见各个shard都是独立进行全量和增量同步,即有的shard可能还在全量同步,有的已经在进行增量同步。

  • 无论是元数据同步还是数据同步在全量的时候都需要把所有数据拉过来再做全量同步, 目的是给这些需要全量同步的数据分shard,一是方便分为多coroutine并发处理,一是要和增量同步的shard进行对齐, 因为映射关系一致,所以某shard全量同步完该shard即可进行独立的增量同步。

相关文章

  • ceph rgw 双活数据同步

    设计 线程模型是什么样的?答: 一个zone对应一个线程, 参考int RGWRados::init_comple...

  • ceph学习(二)RGW搭建

    背景Ceph RGW简介 Ceph RGW基于librados,是为应用提供RESTful类型的对象存储接口。RG...

  • Ceph RGW:数据的存储及寻址

    RGW数据分布及寻址 RGW是一个对象处理网关。数据实际存储在ceph集群中。利用librados的接口,与cep...

  • Ceph对象存储RGW架构及安装实战

    Ceph RGW架构简介 我们知道Ceph可以提供块、文件和对象三种形态的存储。而RGW就是提供对象存储的网关,也...

  • rgw实现nfs

    ceph一、功能介绍关于rgw实现nfs接口这个,刚接触的人可能并不清楚这个是个什么样的服务架构,rgw是ceph...

  • Ceph RGW Multisite 详解 - 数据同步流程图

    呕心沥血看代码,呕心沥血画流程图,完美演绎RGW Multisite 数据同步流程~ 架构图 流程图 关注笔者,公...

  • 客户端-RGW监控埋点

    1. RADOS 1.1 RGW Client Metrics Table ceph --admin-daemon...

  • c++ 11: enable_if

    最近在看ceph rgw的源码, 在其客户端数据处理部分遇到std::enable_if的概念,如下: enabl...

  • ceph rgw 中租约分析

    1、租约意义 sharding需要同步,但是这里rgw是无状态的,因此有多个rgw,到底哪个rgw负责实施同步流程...

  • ceph支持对象存储多租户

    搞定ceph对象存储集成keystone认证。rgw keystone make new tenants = true

网友评论

      本文标题:ceph rgw 双活数据同步

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