ceph属于对象存储,是如何实现存储的呢?(以网盘业务为例进行分析)

一、基础概念补充:

  • 文件系统存储:文件系统存储是一种传统的数据存储方式,以树状目录结构来组织数据。每个文件都有一个路径名,用户可以通过路径名访问文件。
    • 文件存储的形式有:NFS

  • 对象存储:对象存储是一种非层次化的存储方式,它将数据作为独立的对象存储在扁平的命名空间中。每个对象包含数据、元数据和一个唯一的标识符(对象键)。对象存储不依赖于文件路径,而是通过对象键来访问数据。
    • 对象存储:ceph

二、为什么网盘业务选择对象存储而不选择文件系统进行存储?

  1. 基于文件系统进行存储会造成大量的数据冗余,以Linux用户为例,A用户和root用户的家目录并不相同,如果这两个用户都是10TB的“小视频”资源,则2个用户会单独占用2份存储空间;当用户的并发量达到上百万,千万甚至上亿级别就非常浪费存储空间,对于公司而言是一笔损耗
  2. 基于对象的一个好处是对于同一个文件始终只存储一份,尽管有上千个用户上传了同一个文件,无论该文件名称是否一致,但只要内容是同一个文件,则始终会上传一个文件,这也是为什么我们上传时能达到秒级上传到目的。其实采取的方式很多(如“md5Sum”等)

简单说:根据需求的选择ceph就会占队与对象存储

三、基于对象存储的原理是如何?

背景:网盘有文件的哈希值数据库用户表文件用户关系表用户存储容量表好友表用户分享资源表
原理如下

  1. 客户端读取本地文件进行校验值并发送服务端
    (1)当我们上传文件时,客户端程序会读取本地文件内容并计算该文件的哈希值/MD5,并将该值发送给服务端
  2. 服务端校验文件是否上传
    (1)服务端接收到哈希值/MD5后,回去查询哈希值数据库,如果数据库有记录,说明该文件已存在,直接返回给客户端数据上传完毕提醒,这也是我们常见的秒级上传效果
    (2)如果服务端发现客户端发送的哈希值不存在,也会开始上传文件,这意味着是第一次上传到该对象存储,等待时间会较长
  3. 更新用户信息的元数据
    (1)如果用户上传后,系统会自动更新用户的存储目录的文件名称,也就是元数据更新
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值