这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记
对象存储介绍
概念
它是一种将数据作为对象进行管理的分布式计算机数据存储方式,每个对象通常包括数据本身,可变数量的元数据和全局唯一标识符。
优点
- 支持大于EB级别的海量存储,对象数量无限制
- 采用Restful HTTP接口,开发简单,可以按需申请使用
- 采用普通服务器即可搭建,成本较低
缺点
- 适用于静态、不可变的数据,不适用于一些频繁更新的结构化数据.
对象存储使用
可以通过如图put、get、head、delete等四种restful风格接口api操作Bucket中的对象,所要传入的参数也很简单只要Bucket对应地址,对象的key值即可。
对象存储实践
高扩展性-分区
- 对存储对象进行分区,将不同数据映射到不同分区,实现分布式存储,可以通过扩容机器新建分区水平扩展,而新数据通过便存储到新的分区中,实现高可扩展性。通常的分区方式有hash和range 分区,hash即利用哈希函数将对象映射成某个值,然后分配到值所对应的分区中。range则是根据对象key排序进行范围的划分。
高可用性-复制
- 对数据进行复制,保留多个一样的副本,并分散在不同地方存储,通常分散放置策略有:多机架,多机房,多区域。
- 多个数据副本不仅保证的数据的持久性,而且多个副本可以提供读性能。
成本降低-ec
- 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。能够极大的降低数据复制所带来的成本开销。