Introduction —
The Increasing Impact of Heisenbugs —
Virtually-Synchronous Replication —
Other Forms of Replication —
A Critical Observation —
General Design —
Ordering —
Tradeoffs —
Conclusion
[+]
Introduction
All developers of sophisticated applications are familiar with non-reproducible bugs: bugs that occasionally cause crashes ...
The Increasing Impact of Heisenbugs
In the last decade, software has become an increasingly central element in mission- and safety-critical embedded systems. These systems need to have sufficient ...
Virtually-Synchronous Replication
In the early 1990s, Ken Birman, Robbert van Renesse and others developed techniques and protocols for maintaining membership lists of groups of processes, and for distributing messages ...
Other Forms of Replication
Before discussing the mechanisms of virtually-synchronous replication, it may be worth briefly describing other forms of replication, if only to illustrate that ...
A Critical Observation
Jim Gray observed in the late 1980s that none of this complexity is required to allow a system to recover from a Heisenbug: simply repeating the same request will almost ...
General Design
The basic principle of virtually-synchronous replication is illustrated in simplified form in Figure 3. For clarity, consumers are shown as distinct from ...
Ordering
The integrity of an application relies on the ordering of the requests passed to the providers. The types of ordering ...
Tradeoffs
A performance penalty has to be paid when using virtually-synchronous replication: the tradeoff parameters are actually threefold ...
Conclusion
When designing Heisenbug-resilient applications implementing virtually-synchronous replication, developers should consider the following three requirements ...