本篇是对前面几篇ceph rgw元数据分析类文章的总结,同时整体介绍下rgw元数据分布式改造的架构以及实现逻辑
架构
看过前面"ceph rgw元数据分析"类文章的读者,应该还记得那个rgw 分层架构图,为实现元数据的分布式改造,只需要在store层新增一个存储后端 - 专门用来存储集群元数据(realm,zonegroup,zone等)和用户元数据(user,bucket,bucket index等),实质是将RGWRados中的元数据管理以及数据操作分离:
为最大限度的复用已有的接口,对上层屏蔽修改;在实际操作中,我们在RGWRados内部集成一个新的MStore,它与librados::Rados并列处于同一层次,RGWRados内是以组合(UML中的类关系)方式来使用底层的store(librados::Rados
和MStore
),所以引入新的store后,只需要修改RGWRados的接
口实现,而保持接口定义不变,对调用方隐藏具体的实现细节。
在实践中MStore有多种候选组件,如:Mysql,Mongodb,Tikv等,而元数据服务需要满足高性能,高可用特性等特性,Mysql的高可用方案不够好,Mongodb不完全满