Guesstimate is a programming model for developing collaborative distributed systems. Collaborative systems can often trade-off consistency across machines for better scalability and responsiveness. Guesstimate proposes a consistency guarantee that is well suited to such applications and provides langauge features to help program against such weakly consistent state.
Guesstimate maintains two copies of the state on each machine. In addition to committed state which is identical in all machines in the distributed system, Guesstimate allows each machine to have a replicated local copy of the state, (called guesstimated state), so that operations on shared state can be executed locally without any blocking, while also guaranteeing that eventually all machines agree on the sequences of operations executed. Thus, each operation is executed multiple times, once at the time of issue when it updates the guesstimated state of the issuing machine, once when the operation is committed (atomically) to the committed state of all machines, and several times in between as the guesstimated state converges toward the committed state. While we expect the results of these executions of the operation to be identical most of the time, it is possible for an operation to succeed the first time when it is executed on the guesstimated state, and fail when it is committed. Guesstimate provides facilities that allow the programmer to deal with this potential discrepancy. Th Guesstimate C# API is available for download here.
- Shashank Yaduvanshi (IIT D)
- Hesam Samimi (UCLA)
- Kaushik Rajan, Sriram Rajamani, and Shashank Yaduvanshi, GUESSTIMATE: A Programming Model for Collaborative Distributed Systems, in Proceedings of Programming Language Design and Implementation (PLDI 2010), Association for Computing Machinery, Inc., June 2010.