Distributed architectures for reliability in computer systems