A type of software architecture depending on software components, their interaction, and their
placement is called a system architecture.
Centralized Architectures
In the basic client-server model, processes in a distributed system are divided into two (possibly
overlapping) groups. A server is a process implementing a specific service, for example, a file
system service or a database service. A client is a process that requests a service from a server
by sending it a request and subsequently waiting for the server's reply.
Figure 2-3
The client-server model follows the layered architectural style.
1. The user-interface level 2. The processing level 3. The data level
Figure 2-4.
Form Validation - Validation is quicker on the
client's side. The slowest part of the process is
communication Javascript is used for validation Dropbox
serves data on the server
Decentralised architecture
Multitiered client-server architectures are a direct consequence of dividing applications into a
user-interface, processing components, and a data level. The different tiers correspond directly
with the logical organization of applications. This type of distribution is known as vertical
distribution
Structured Peer-to-Peer Architectures In a structured peer-to-peer architecture, the most-
used procedure is to organize the processes through a distributed hash table (DHT). In a DHT-
based system, data items and nodes are assigned a random key from a large identifier space,
such as a 128-bit or 160-bit identifier. The crux of every DHT-based system is then to uniquely
maps the key of a data item to the identifier of a node. When looking up a data item, the
network address of the node responsible for that data item is returned by routing a request for a
data item to the responsible node.
Hybrid Architectures
Hybrid structures are notably deployed in collaborative distributed systems
BitTorrent is a peer-to-peer file downloading system. Its principal working is shown in Fig. 2-14