对象存储简介

对象存储,也叫做基于对象的存储,是用来描述解决和处理离散单元的方法的通用术语,这些离散单元被称作为对象。---太学术了,一般人看不懂。

就像文件一样,对象包含数据,但是和文件不同的是,对象在一个层结构中不会再有层级结构。每个对象都在一个被称作存储池的扁平地址空间的同一级别里,一个对象不会属于另一个对象的下一级。

文件和对象都有与它们所包含的数据相关的元数据,但是对象是以扩展元数据为特征的。每个对象都被分配一个唯一的标识符,允许一个服务器或者最终用户来检索对象,而不必知道数据的物理地址(重要特征)。这种方法对于在云计算环境中自动化和简化数据存储有帮助。---(适用场景)

对象存储经常被比作在一家高级餐厅代客停车。当一个顾客需要代客停车时,他就把钥匙交给别人,换来一张收据。这个顾客不用知道他的车被停在哪,也不用知道在他用餐时服务员会把他的车移动多少次。在这个比喻中,一个存储对象的唯一标识符就代表顾客的收据。 

 

由于对象存储将遍布于很多节点且最新的数据并非总是可用,这将成为对象存储最终一致性的问题。

所有的数据存储都涉及到简称为CAP的三个元素:一致性、可用性和分区。

如果只是执行了写操作从而改变了一个对象,但有人正在从另外的节点访问这个对象。节点可能会在不同的物理位置,因为对象存储支持很大的地理扩展。新用户可能正在读取对象,但那是旧版本。这就是对象存储的最终一致性问题,此时并没有及时的同步。

这个例子可以再通俗一点讲:比如有人A正在修改一个对象,其他人B此时进来查看这个对象,那么等A修改完对象后,B其实查看的是老的数据,就会导致了最终一致性问题。A把黑色的车子喷漆成白色的,B在进去的时候,看到的还是黑色的车子,那么B就会认为车子是黑色的,A则认为车子是白色的。

这将成为问题,特别是利用对象存储做协同的时候,厂商为保证对象存储的一致性做了很好的工作,像是Joyent以及他的Manta 存储服务,一旦对象更改将不支持读取旧的内容。你必须等待,但你所读取的内容会是一致的。

你可能感兴趣的:(经验分享)