A distributed system is composed of a number of elements, the most important of which are software components, processing nodes and networks. Some of these elements can be specified as part of a distributed system’s design, while others are given (i.e., they have to be accepted as they are). Typically when building a distributed system, the software is under the designer’s control. Depending on the scale of the system, the hardware can be specified within the design as well, or already exists and has to be taken as-is. The key, however, is that the software components must be distributed over the hardware components in some way. The software of distributed systems can become fairly complex—especially in large distributed systems—and its components can spread over many machines. It is important, therefore, to understand how to organise the system. We distinguish between the logical organisation of software components in such a system and their actual physical organisation. The software architecture of distributed systems deals with how software components are organised and how they work together, i.e., communicate with each other. Typical software architectures include the layered, object-oriented, data-centred, and event-based architectures. Once the software components are instantiated and placed on real machines, we talk about an actual system architecture. A few suc
To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.