保存大文件
对象存储对外提供的服务,其实就是一个近乎无限容量的大文件 KV 存储,所以对象存储和分布式文件系统之间,没有那么明确的界限。对象存储的内部,肯定有很多的存储节点,用于保存这些大文件,这个就是数据节点的集群。
元数据用于管理数据节点的信息、文件信息、映射关系。特点:变动不频繁、数据量小,可以用zookeeper、etcd来存储。
网关集群,对外接收外部请求,对内访问元数据和数据节点。网关集群中的每个节点不需要保存任何数据,都是无状态的节点。有些对象存储没有网关,取而代之的是客户端,它们的功能和作用都是一样的。
整体大致架构:
对象拆分和保存
拆分:把文件从头到尾,按固定大小切分。好处:提升读写性能、便于维护。 容器:存储固定个数的块,大小是固定的。类似分片。 主从同步:直接复制数据块
当我们请求一个 Key 的时候,网关首先去元数据中查找这个 Key 的元数据。然后根据元数据中记录的对象长度,计算出对象有多少块儿。接下来的过程就可以分块儿并行处理了。对于每个块儿,还需要再去元数据中,找到它被放在哪个容器中。
此文章为3月Day18学习笔记,内容来源于极客时间《后端存储实战课》