关于Amazon S3的数据一致性模型有两种:
最终一致性和读写一致性。
有以下几种行为:
1 写一个新的object,然后开始读它,直到所有的变化都传播完(副本),你才能读到它,否则就是key does not exist。
2 写一个新的object,然后listkeys,直到所有的变化都传播完,你才能看到它。
3 覆盖一个已有的object,然后开始读它,直到所有的变化都传播完,你才能拿到最新的object,否则就是老的。
4 删除一个object,直到所有的变化都传播完,你读它,才会产生key does not exist,否则读到已删除的object。
5 删除一个object,直到所有的变化都传播完,你listkeys,才没有这个object,否则还会有它。
这里需要注意的是不同的region提供的数据一致性模型是不一样的,US Standard Region比较特殊,它提供的是最终一致性模型(eventual consistency)。其它的region提供的是对于put一个新的object,提供的是read after write consistency. 对于覆盖object和删除object,提供的也是最终一致性。
最终一致性可能导致脏读,但是latency会比较小,所以吞吐量会比较高。读写一致性不会出现脏读,但是latency可能会比较大,所以吞吐量会比较低。
还需要注意的是,S3并不提供锁,如果你同时对同一个key进行操作,那么后一个操作会覆盖前一个操作的结果。
原文:http://blog.csdn.net/hongchangfirst/article/details/36015151
作者:hongchangfirst
hongchangfirst的主页:http://blog.csdn.net/hongchangfirst
Amazon S3的数据一致性模型