• Stars
    star
    169
  • Rank 224,453 (Top 5 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created almost 10 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Compare eventual consistency of object stores

Are We Consistent Yet?

Observed and documented eventual consistency of object stores, e.g., Amazon S3, OpenStack Swift.

What is eventual consistency?

Traditional systems provide strong consistency, where clients can immediately view updates. Some distributed systems relax their consistency model to allow greater availability or better performance. Eventual consistency manifests itself to clients as stale views of data.

Observed consistency

We ran a test in which we wrote (i.e., create, update, delete) an object and then attempted to read the object. Across many trials, we count the number of times the object was not immediately available. When the object is not immediately found, it's an occurrence of observed eventual consistency.

Observed instances of eventual consistency with a number of operations during tests around 17 December 2014 with a 1-byte object size:

Provider read after create read after delete read after overwrite list after create list after delete number of operations
Amazon S3 (us-standard) * * * 16 * 100,000
Amazon S3 (us-standardโ€ ) 16 8 12 8 3 1,000
Amazon S3 (us-west) - 1 1 * * 100,000
Ceph (DreamObjects) - - - - - 1,000
Google Cloud Storage - - - 2 2 1,000
Microsoft Azure Storage - - - - - 1,000
OpenStack Swift (Rackspace) - 17 3 30 20 1,000

Legend:

  • - zero observed instances
  • * zero observed instances but expect non-zero
  • โ€  writing to N. Virginia and reading from Pacific Northwest

Documented consistency

  • Amazon S3 - buckets in the US Standard region provide eventual consistency. Buckets in all other regions provide read-after-write consistency for PUTs of new objects and eventual consistency for overwrite PUTs and DELETEs.
  • Ceph - provides well-defined safety semantics and strong consistency guarantees.
  • Google Cloud Storage - provides strong global consistency for all read-after-write, read-after-update, and read-after-delete operations, including both data and metadata. Bucket and object listing are also strongly consistent.
  • Microsoft Azure Storage - was designed to embrace a strong consistency model which guarantees that when the Storage service commits a data insert or update operation all further accesses to that data will see the latest update.
  • OpenStack Swift - For example, suppose a container server is under load and a new object is put in to the system. The object will be immediately available for reads as soon as the proxy server responds to the client with success. However, the container server did not update the object listing, and so the update would be queued for a later update. Container listings, therefore, may not immediately contain the object. Additional reference.

References

More Repositories

1

s3proxy

Access other storage backends via the S3 API
Java
1,755
star
2

awesome-ld-preload

List of resources related to LD_PRELOAD, a mechanism for changing application behavior at run-time
794
star
3

modernizer-maven-plugin

Detect uses of legacy Java APIs
Java
341
star
4

object-store-comparison

Compare cost, durability, and region support of public cloud object stores, e.g., Amazon S3
HTML
69
star
5

undocumented-s3-apis

Undocumented Amazon S3 APIs and third-party extensions
66
star
6

java-httpbin

A Java-based HTTP server that lets you locally test your HTTP client, retry logic, streaming behavior, timeouts, etc. with the endpoints of httpbin.org
Java
35
star
7

bay-area-transit-plans

San Francisco Bay Area Transit Plans
18
star
8

java-collection-overhead

Demonstrate overheads for various Java Collection implementations.
Java
17
star
9

libinput-force-middle-click-emulation

force libinput to emulate a middle click when pressing left and right buttons simultaneously
C
13
star
10

github-release-rss-feed

Watch starred GitHub repositories for new releases.
Python
7
star
11

mirrorfs

Mirror filesystem operations and check for consistency
C
6
star
12

x86lint

Examine x86 machine code to find suboptimal encodings and sequences
C
6
star
13

gkeep-fuse

FUSE interface for Google Keep
Python
6
star
14

yass-android

Yet Another Sync Software for Android
Java
4
star
15

libnoxattr

An LD_PRELOAD library that disables all forms of extended attribute access
C
4
star
16

desktop-everywhere

WebExtension which redirects mobile links to desktop equivalents
JavaScript
3
star
17

ptools

parallel implementations of Unix tools
Go
1
star
18

loudest-tweeters

show all the Twitter profiles in your timeline, sorted by number of tweets
Go
1
star
19

fatback

A *nix tool for recovering files from FAT file systems.
C
1
star