Distributed Systems Architectures
Distributed Systems are hardware and software systems containing more than one processing or storage element, concurrent processes, or multiple programs.
However, the most interesting thing about a Distributed System is that the computers that are linked together can be physically close together and connected by a local network, or they can be geographically distant and connected by a wide area network. Furthermore, A distributed system can consist of any number of possible configurations, such as mainframes, personal computers, workstations, minicomputers, and so on.
Furthermore, the most common method of organizing software to run efficiently on a distributed system is to separate the function of the software into two distinct parts – Clients and Servers.
Essentially, a client is an application which uses services that other applications provide. Whereas, the applications that provide the services are called servers. The way in which this configuration works is that the client makes a request for a service, and a server performs that service.
Despite working in close proximity of each other both Clients and Servers have their own distinct responsibilities. For example Servers are responsible for synchronizing and managing access to the available resources, and it must also respond to client requests with either data or status information. This means that a client does not need to be aware of any updates/changes that are made to the server or its resources. Whereas, Client applications typically handle user interactions and often request data or initiate some data modification on behalf of a user.
However, apart from the Client – Server architecture that is most commonly used there are various other architectures which are used to build Distributed Systems:-
3-tier architecture — Three tier systems move the client intelligence to a middle tier so that stateless clients can be used. This simplifies application deployment. Most web applications are 3-Tier.
N-tier architecture — N-Tier refers typically to web applications which further forward their requests to other enterprise services. This type of application is the one most responsible for the success of application servers.
Tightly coupled (clustered) — refers typically to a cluster of machines that closely work together, running a shared process in parallel. The task is subdivided in parts that are made individually by each one and then put back together to make the final result.
Peer-to-peer — an architecture where there is no special machine or machines that provide a service or manage the network resources. Instead all responsibilities are uniformly divided among all machines, known as peers. Peers can serve both as clients and servers.
Space based — refers to an infrastructure that creates the illusion (virtualization) of one single address-space. Data are transparently replicated according to application needs. Decoupling in time, space and reference is achieved
This is useful in situations where a very large computational problem needs to be solved and resources, such as supercomputers, are not as easily available. With DS, a task may be split up into smaller chunks of data and performed and processed by the many computers owned via the general public.
Examples of some such projects are BOINC (open-source software for volunteer computing and grid computing) and SETI@HOME (searching for extraterrestrial intelligence).
These systems also incorporate concepts to design programs to run on many processing cores as multi-core systems become more widely used.
Comments