Distributed Architectures

In a distributed architecture, components are hosted on different platforms and communicate through a network:

Client-Server

A Client-Server Architecture consists of two types of components: clients and servers. A server component perpetually listens for requests from client components. When a request is received, the server processes the request, and then sends a response back to the client. Servers may be further classified as stateless or stateful. Clients of a stateful server may make composite requests that consist of multiple atomic requests. This enables a more conversational or transactional interactions between client and server. To accomplish this, a stateful server keeps a record of the requests from each current client. This record is called a session.

The Master-Slave Pattern is often used to implement the server:

The Proxy Pattern allows us to add features to a server without modifying it.

Three Tier

In a three-tier architecture tier 2 is a tier 1 server and a tier 3 client:

Four Tier

In general, tier k in an N-tier architecture is server to tier k-1 and client to tier k+1.

In an open N-tier architecture tier k is client to tier j for k < j.

Here's a popular example of a 4 tier architecture:

 

Peer2Peer

In a peer-to-peer architecture the roles of client and server switch back and forth between components:

Multi-Agent Architectures

PipeLine

Pipeline is probably the oldest distributed architecture. A filter perpetually reads data from an input pipe, processes it, then writes the result to an output pipe.

Architectures

There are also several important reference architectures, including:

Open Distributed Processing

CORBA

COM/DCOM

Service-Oriented Architecture

Multi-Agent Architecture