Atomic Object Factory: Efficient, Consistent and Dependable Support for Distributed Objects

This paper introduces Atomic Object Factory (AOF), a novel implementation of the distributed object paradigm. AOF allows client applications to transparently manipulate and share remotely-stored objects, while providing strong guarantees on dependability, consistency and persistence. It leverages the support of a listenable key-value store (LKVS), a novel NoSQL storage abstraction that we introduce in this paper. AOF offers integrated language support at the application-facing interface tier. Its middle tier implements the distributed object functionalities atop the LKVS, including coordinated replication. AOF does not rely on a mapping phase and deals with objects end-to-end. It allows the composition of these objects and provide efficient access to their methods. In particular, AOF guarantees disjoint access parallelism: operations on distinct distribued objects make use of distinct LKVS components and execute in parallel. We assess the benefits of our approach in practice by comparing the implementation of a personal cloud storage service using AOF, to an implementation of the same application with a state-of-the-art object-relational mapping over a sharded PostgreSQL database. Our results show that AOF offers a simpler programming framework both in terms of learning time and lines of code, while performing better on average and being more scalable.

[1]  David R. Karger,et al.  Consistent hashing and random trees: distributed caching protocols for relieving hot spots on the World Wide Web , 1997, STOC '97.

[2]  Tim Kraska,et al.  Building a database on S3 , 2008, SIGMOD Conference.

[3]  Brian F. Cooper Spanner: Google's globally-distributed database , 2013, SYSTOR '13.

[4]  Michael Burrows,et al.  The Chubby Lock Service for Loosely-Coupled Distributed Systems , 2006, OSDI.

[5]  Priya Narasimhan,et al.  Consistency of partitionable object groups in a CORBA framework , 1997, Proceedings of the Thirtieth Hawaii International Conference on System Sciences.

[6]  Tim Kraska,et al.  An evaluation of alternative architectures for transaction processing in the cloud , 2010, SIGMOD Conference.

[7]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[8]  Marc Sánchez Artigas,et al.  StackSync: bringing elasticity to dropbox-like file synchronization , 2014, Middleware.

[9]  Raúl Gracia Tinedo,et al.  Actively Measuring Personal Cloud Storage , 2013, 2013 IEEE Sixth International Conference on Cloud Computing.

[10]  Christian Bauer,et al.  Java Persistence with Hibernate , 2006 .

[11]  Santosh K. Shrivastava,et al.  The Design and Implementation of Arjuna , 1995, Comput. Syst..

[12]  Rachid Guerraoui,et al.  Genuine atomic multicast in asynchronous distributed systems , 2001, Theor. Comput. Sci..

[13]  Alberto Montresor,et al.  The Jgroup Reliable Distributed Object Model , 1999 .

[14]  Silvano Maffeis,et al.  The Object Group Design Pattern , 1996, COOTS.

[15]  Alfred V. Aho,et al.  Universality of data retrieval languages , 1979, POPL.

[16]  David Gelernter,et al.  Generative communication in Linda , 1985, TOPL.

[17]  Maurice Herlihy,et al.  Wait-free synchronization , 1991, TOPL.

[18]  Miguel Correia,et al.  DepSpace: a byzantine fault-tolerant coordination service , 2008, Eurosys '08.

[19]  Marc Shapiro,et al.  SOS: An Object-Oriented Operating System - Assessment and Perspectives , 1989, Comput. Syst..

[20]  Marko Vukolic,et al.  Dissecting UbuntuOne: Autopsy of a Global-scale Personal Cloud Back-end , 2015, Internet Measurement Conference.

[21]  Werner Vogels,et al.  Dynamo: amazon's highly available key-value store , 2007, SOSP.

[22]  Kenneth P. Birman,et al.  Exploiting virtual synchrony in distributed systems , 1987, SOSP '87.

[23]  Rachid Guerraoui,et al.  The Implementation of a CORBA Object Group Service , 1998, Theory Pract. Object Syst..

[24]  Marcos K. Aguilera,et al.  Reconfiguring Replicated Atomic Storage: A Tutorial , 2013, Bull. EATCS.

[25]  Henri E. Bal,et al.  Orca: A Language For Parallel Programming of Distributed Systems , 1992, IEEE Trans. Software Eng..

[26]  Aiko Pras,et al.  Benchmarking personal cloud storage , 2013, Internet Measurement Conference.

[27]  Rachid Guerraoui,et al.  System support for object groups , 1998, OOPSLA '98.

[28]  Andrew S. Tanenbaum,et al.  Globe: a wide area distributed system , 1999, IEEE Concurr..

[29]  Idit Keidar,et al.  Group communication specifications: a comprehensive study , 2001, CSUR.

[30]  Sam Toueg,et al.  Unreliable failure detectors for reliable distributed systems , 1996, JACM.

[31]  Walter R. Bischofberger,et al.  Building Reliable Distributed Systems with CORBA , 1997, Theory Pract. Object Syst..

[32]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[33]  David Maier,et al.  Readings in Object-Oriented Database Systems , 1989 .

[34]  Nancy A. Lynch,et al.  Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services , 2002, SIGA.

[35]  Marc Shapiro,et al.  Structure and Encapsulation in Distributed Systems: The Proxy Principle , 1986, ICDCS.

[36]  Emin Gün Sirer,et al.  HyperDex: a distributed, searchable key-value store , 2012, SIGCOMM '12.

[37]  David J. DeWitt,et al.  The Object-Oriented Database System Manifesto , 1994, Building an Object-Oriented Database System, The Story of O2.

[38]  Adam Silberstein,et al.  Benchmarking cloud serving systems with YCSB , 2010, SoCC '10.

[39]  Dr. Hiroshi Ishikawa Object-Oriented Database System , 1993, Computer Science Workbench.

[40]  Tobias Distler,et al.  Extensible distributed coordination , 2015, EuroSys.

[41]  Barbara Liskov,et al.  Distributed programming in Argus , 1988, CACM.

[42]  Silvano Maffeis,et al.  Adding Group Communication and Fault-Tolerance to CORBA , 1995, COOTS.

[43]  Narain H. Gehani,et al.  ODE (Object Database and Environment): the language and the data model , 1989, SIGMOD '89.

[44]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[45]  André Schiper,et al.  Addressing the ZooKeeper Synchronization Inefficiency , 2013, ICDCN.

[46]  Michael Stonebraker,et al.  The POSTGRES next generation database management system , 1991, CACM.

[47]  Guangwen Yang,et al.  Understanding Data Characteristics and Access Patterns in a Cloud Storage System , 2013, 2013 13th IEEE/ACM International Symposium on Cluster, Cloud, and Grid Computing.

[48]  Leslie Lamport,et al.  How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs , 2016, IEEE Transactions on Computers.

[49]  Wilson C. Hsieh,et al.  Bigtable: A Distributed Storage System for Structured Data , 2006, TOCS.

[50]  Priya Narasimhan,et al.  Experiences, strategies, and challenges in building fault-tolerant CORBA systems , 2004, IEEE Transactions on Computers.

[51]  Robbert van Renesse,et al.  The Amoeba distributed operating system - A status report , 1991, Comput. Commun..

[52]  Andrew Birrell,et al.  Implementing Remote procedure calls , 1983, SOSP '83.

[53]  David K. Gifford,et al.  Remote evaluation , 1990, TOPL.

[54]  Josiah L. Carlson,et al.  Redis in Action , 2013 .

[55]  Carl Hewitt,et al.  The incremental garbage collection of processes , 1977, Artificial Intelligence and Programming Languages.

[56]  Amos Israeli,et al.  Disjoint-access-parallel implementations of strong shared memory primitives , 1994, PODC '94.

[57]  Fred B. Schneider,et al.  Implementing fault-tolerant services using the state machine approach: a tutorial , 1990, CSUR.

[58]  Mahadev Konar,et al.  ZooKeeper: Wait-free Coordination for Internet-scale Systems , 2010, USENIX ATC.