对象存储|青训营笔记

199 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记

对象存储介绍

概念

它是一种将数据作为对象进行管理的分布式计算机数据存储方式,每个对象通常包括数据本身,可变数量的元数据和全局唯一标识符。

优点

  1. 支持大于EB级别的海量存储,对象数量无限制
  2. 采用Restful HTTP接口,开发简单,可以按需申请使用
  3. 采用普通服务器即可搭建,成本较低

缺点

  1. 适用于静态、不可变的数据,不适用于一些频繁更新的结构化数据.

对象存储使用

image.png

可以通过如图put、get、head、delete等四种restful风格接口api操作Bucket中的对象,所要传入的参数也很简单只要Bucket对应地址,对象的key值即可。

对象存储实践

高扩展性-分区

  1. 对存储对象进行分区,将不同数据映射到不同分区,实现分布式存储,可以通过扩容机器新建分区水平扩展,而新数据通过便存储到新的分区中,实现高可扩展性。通常的分区方式有hash和range 分区,hash即利用哈希函数将对象映射成某个值,然后分配到值所对应的分区中。range则是根据对象key排序进行范围的划分。

高可用性-复制

  1. 对数据进行复制,保留多个一样的副本,并分散在不同地方存储,通常分散放置策略有:多机架,多机房,多区域。
  2. 多个数据副本不仅保证的数据的持久性,而且多个副本可以提供读性能。

成本降低-ec

  1. replication技术在带来高可用性的同时,还伴随着巨大的冗余存储成本,而EC(erasure code)是一种技术,它可以将n份原始数据,增加m份数据(用来存储erasure编码),并能通过n+m份中的任意n份数据,还原为原始数据。它中包含了encode和decode两个过程,将原始的n份数据变为n+m份是encode,之后这n+m份数据可存放在不同的device上,如果有任意小于m份的数据失效,仍然能通过剩下的数据还原出来。也就是说,通常n+m的erasure编码,能容m块数据故障的场景,这时候的存储成本是1+m/n,通常m<n。因此,通过erasure编码,我们能够把副本数降到1.x。能够极大的降低数据复制所带来的成本开销。