Abstract
This tutorial presents an overview of the techniques that can be used by developers to produce software that can tolerate design faults and faults of the surrounding environment, and it offers an introduction on how such techniques can be implemented in a standard programming language. After reviewing the basic terms and concepts of fault tolerance, the most well-known fault-tolerance techniques exploiting software-, information- and time redundancy are presented, classified according to the kind of concurrency they support. The tutorial then concentrates on a specific technique for achieving fault tolerance using backward error recovery: transactions. Transactions group together a set of operations and give them the so-called ACID properties: Atomicity, Consistency, Isolation and Durability. After presenting different transaction models, pessimistic and optimistic concurrency control, and different ways of performing crash recovery are reviewed. Finally, the design of an object-oriented framework that provides support for open multithreaded transactions is outlined. The framework offers different interfaces for application programmers: a procedural, an object-based, an object-oriented and an aspect-oriented one. The interfaces are presented in detail, and their advantages and disadvantages are analyzed.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Kienzle, J. (2005). Fault Tolerance – Concepts and Implementation Issues. In: Guelfi, N., Reggio, G., Romanovsky, A. (eds) Scientific Engineering of Distributed Java Applications. FIDJI 2004. Lecture Notes in Computer Science, vol 3409. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-31869-9_14
Download citation
DOI: https://doi.org/10.1007/978-3-540-31869-9_14
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-25053-1
Online ISBN: 978-3-540-31869-9
eBook Packages: Computer ScienceComputer Science (R0)