Maarten van Steen, Andrew S. Tanenbaum

#Distributed_Systems
#security
#Python_code
#Python3
This is the fourth edition of “Distributed Systems.” We have stayed close to the setup of the third edition, including examples of (part of) existing distributed systems close to where general principles are discussed. For example, we have included material on blockchain systems, and discuss their various components throughout the book. We have, again, used special boxed sections for material that can be skipped at first reading.
The text has been thoroughly reviewed, revised, and updated. In particular, all the Python code has been updated to Python3, while at the same time the channel package has been almost completely revised and simplified.
Additional material, including coding examples, figures, and slides, are available at www.distributed-systems.net.
Table of Contents
1 Introduction
1.2 Design goals
1.3 A simple classification of distributed systems
1.4 Pitfalls
1.5 Summary
2 Architectures
2.1 Architectural styles
2.2 Middleware and distributed systems
2.3 Layered-system architectures
2.4 Symmetrically distributed system architectures
2.5 Hybrid system architectures
2.6 Summary
3 Processes
3.1 Threads
3.2 Virtualization
3.3 Clients
3.4 Servers
3.5 Code migration
3.6 Summary
4 Communication
4.1 Foundations
4.2 Remote procedure call
4.3 Message-oriented communication
4.4 Multicast communication
4.5 Summary
5 Coordination
5.1 Clock synchronization
5.2 Logical clocks
5.3 Mutual exclusion
5.4 Election algorithms
5.5 Gossip-based coordination
5.6 Distributed event matching
5.7 Location systems
5.8 Summary
6 Naming
6.1 Names, identifiers, and addresses
6.2 Flat naming
6.3 Structured naming
6.4 Attribute-based naming
6.5 Named-data networking
6.6 Summary
7 Consistency and replication
7.1 Introduction
7.2 Data-centric consistency models
7.3 Client-centric consistency models
7.4 Replica management
7.5 Consistency protocols
7.6 Example: Caching and replication in the Web
7.7 Summary
8 Fault tolerance
8.1 Introduction to fault tolerance
8.2 Process resilience
8.3 Reliable client-server communication
8.4 Reliable group communication
8.5 Distributed commit
8.6 Recovery
8.7 Summary
9 Security
9.1 Introduction to security
9.2 Cryptography
9.3 Authentication
9.4 Trust in distributed systems
9.5 Authorization
9.6 Monitoring
9.7 Summary









