GUESSTIMATE: A Programming Model for Collaborative Distributed Systems
- Kaushik Rajan ,
- Sriram Rajamani ,
- Shashank Yaduvanshi
Proceedings of Programming Language Design and Implementation (PLDI 2010) |
Published by Association for Computing Machinery, Inc.
We present a new programming model Guesstimate for developing collaborative distributed systems. The model allows atomic, isolated operations that transform a system from consistent state to consistent state, and provides a shared transactional store for a collection of such operations executed by various machines in a distributed system. Guesstimate allows each machine to have a replicated copy (called “current guesstimate”) of the state so that operations on shared state can be executed locally without any blocking, while also guaranteeing that eventually all machines agree on the sequence of operations executed. Thus, each operation is executed twice, once at the time of issue when it updates the guesstimated state of the issuing machine, and once when the operation is committed (atomically) to the committed state of all machines. While we expect the results of the two executions of the operation to be identical most of the time in the class of applications we study, it is possible for an operation to succeed the first time when it is executed on the guesstimated state, and fail the second time when it is committed. Guesstimate provides facilities that allow the programmer to deal with this potential discrepancy. This paper presents our programming model, its operational semantics, its realization as an API in C#, and our experience building collaborative distributed applications with this model.
Copyright © 2007 by the Association for Computing Machinery, Inc. Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from Publications Dept, ACM Inc., fax +1 (212) 869-0481, or permissions@acm.org. The definitive version of this paper can be found at ACM's Digital Library --http://www.acm.org/dl/.
Publication Downloads
Guesstimate: A Programming Model for Collaborative Distributed Systems
August 10, 2010
Guesstimate is a programming model for developing collaborative distributed applications. The goal of Guesstimate is to provide a simple, object-oriented model for developing distributed-systems applications. The programming model is exposed as a C# API. The API enables programmers to develop distributed-systems applications in an object-oriented manner. API methods are provided to create new distributed-systems objects, to subscribe to existing objects, and to issue operations to change the state of the objects. The objects are replicated and distributed across the system, and replicas are provided with a weak consistency guarantee. Language features enable developers to define when concurrent operations conflict and what to do with a conflict.