TSR – The Server Room – Shownotes – Episode 20

Distributed Systems & Distributed Computing

Distributed Systems

Distributed Systems: They are all around us. Google search engine, Amazon platform, Netflix, online gaming, money transfer/banking

The most known form of it is the Client-Server model

A Distributed System is a collection of separate /independent SW or HW components referred to as nodes that are linked together by means of a network and work together coherently by coordinating and communicating through a message passing or events to fulfill a one end goal. The nodes of the system can be unstructured or highly structured depending on the requirements. Its complexity is hidden from the end user or computer and appears as a single system/computer

More simple explanation:
Bunch of independent computers which work together to solve a problem.

Characteristics of a Distributed Systems

No Shared Clock
Each Computer in a Distributed System has its own internal clock to supply the value of the current time to local processes

No Shared Memory
Each computer has its own local memory.
(( can see on figure c when comparing parallel vs distributed systems ))

Resource sharing
Resource sharing means that the existing resources in a distributed system can be accessed or remotely accessed across multiple computers in the system. Computers in distributed systems shares resources like hardware (disks and printers), software (files, windows and data objects) and data. Hardware resources are shared for reductions in cost and convenience. Data is shared for consistency and exchange of information.

Concurrency
Concurrency is a property of a system representing the fact that multiple activities are executed at the same time. The concurrent execution of activities takes place in different components running on multiple machines as part of a distributed system. In addition, these activities may perform some kind of interactions among them. Concurrency reduces the latency and increases the throughput of the distributed system.

Fault Tolerance — High Availability
In a distributed system hardware, software, network anything can fail. The system must be designed in such a way that it is available all the time even after something has failed.

Scalability
Scalability is mainly concerned about how the distributed system handles the growth as the number of users for the system increases. Mostly we scale the distributed system by adding more computers in the network. Components should not need to be changed when we scale the system. Components should be designed in such a way that it is scalable

Heterogenetic and Loose Coupling
In distributed systems components can have variety and differences in Networks, Computer hardware, Operating systems, Programming languages and implementations by different developers

Transparency
Distributed systems should be perceived by users and application programmers as a whole rather than as a collection of cooperating components. Transparency can be of various types like access, location, concurrency, replication, etc.

Parallel and Distributed Computing

Distributed systems are groups of networked computers which share a common goal for their work. The terms “concurrent computing“, “parallel computing“, and “distributed computing” have a lot of overlap, and no clear distinction exists between them.

The same system may be characterized both as “parallel” and “distributed”; the processors in a typical distributed system run concurrently in parallel.

Parallel computing may be seen as a particular tightly coupled form of distributed computing and distributed computing may be seen as a loosely coupled form of parallel computing.

Nevertheless, it is possible to roughly classify concurrent systems as “parallel” or “distributed” using the following criteria:

  • In parallel computing, all processors may have access to a shared memory to exchange information between processors.
  • In distributed computing, each processor has its own private memory (distributed memory). Information is exchanged by passing messages between the processors.
The figure illustrates the difference between distributed and parallel systems.

Figure (a) is a schematic view of a typical distributed system; the system is represented as a network topology in which each node is a computer and each line connecting the nodes is a communication link.

Figure (b) shows the same distributed system in more detail: each computer has its own local memory, and information can be exchanged only by passing messages from one node to another by using the available communication links.

Figure (c) shows a parallel system in which each processor has a direct access to a shared memory.

The situation is further complicated by the traditional uses of the terms parallel and distributed algorithm that do not quite match the above definitions of parallel and distributed systems 

Nevertheless, as a rule of thumb, high-performance parallel computation in a shared-memory multiprocessor uses parallel algorithms while the coordination of a large-scale distributed system uses distributed algorithms.

Architectures

  • Client–server: architectures where smart clients contact the server for data then format and display it to the users. Input at the client is committed back to the server when it represents a permanent change.
  • Three-tier: architectures that move the client intelligence to a middle tier so that stateless clients can be used. This simplifies application deployment. Most web applications are three-tier.
  • n-tier: architectures that refer 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.
  • Peer-to-peer: architectures where there are no special 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 as servers.Examples of this architecture include BitTorrent and the bitcoin network.

Another basic aspect of distributed computing architecture is the method of communicating and coordinating work among concurrent processes.

Through various message passing protocols, processes may communicate directly with one another, typically in a master/slave relationship.

Alternatively, a “database-centric” architecture can enable distributed computing to be done without any form of direct inter-process communication, by utilizing a shared database.

Database-centric architecture in particular provides relational processing analytics in a schematic architecture allowing for live environment relay. This enables distributed computing functions both within and beyond the parameters of a networked database.

Applications

Reasons for using distributed systems and distributed computing may include:

  1. The very nature of an application may require the use of a communication network that connects several computers: for example, data produced in one physical location and required in another location.
  2. There are many cases in which the use of a single computer would be possible in principle, but the use of a distributed system is beneficial for practical reasons. For example, it may be more cost-efficient to obtain the desired level of performance by using a cluster of several low-end computers, in comparison with a single high-end computer. A distributed system can provide more reliability than a non-distributed system, as there is no single point of failure. Moreover, a distributed system may be easier to expand and manage than a monolithic uniprocessor system.

Examples

Examples of distributed systems and applications of distributed computing include the following:

This image has an empty alt attribute; its file name is 1*tYxWuyksovxA1Thu8PggPQ.jpeg

Distributed computing is a field of computer science that studies distributed systems. .

Distributed computing also refers to the use of distributed systems to solve computational problems. In distributed computing, a problem is divided into many tasks, each of which is solved by one or more computers, which communicate with each other via message passing.

What is Folding@Home Project

Folding@home (FAH or F@h) is a distributed computing project / volunteer computing project for performing molecular dynamics simulations of protein dynamics. Its initial focus was on protein folding but has shifted to more biomedical problems, such as Alzheimer’s diseasecancerCOVID-19, and Ebola. The project uses the idle processing resources of personal computers owned by volunteers who have installed the software on their systems. Folding@home is currently based at the Washington University in St. Louis School of Medicine. The project was started by the Pande Laboratory at Stanford University

Single Core projects are being phased out unfortunately and also amount of projects available for 32 bit processors is less and less each time ….

Install #Folding@Home on Your Computers and Join the Server Room Show’s team effort to help find a cure for #Covid19 using the team code 258277

Team and Personal Stats at Folding@Home Website

https://stats.foldingathome.org/team/258277

https://stats.foldingathome.org/donors

Links

https://en.wikipedia.org/wiki/Distributed_computing

https://en.wikipedia.org/wiki/Folding@home

Contact Information

Telegram Chat Group
https://t.me/tsrpodcast

Episodes in FLAC
https://tsr-podcast.viktormadarasz.com/flac-remastered-episodes

Video Recording of the Live Show:
https://video.hardlimit.com/accounts/serverroomshow/video-channels

Email
viktormadarasz@sdf.org

VOIP // PSTN
261414@sanjose2.voip.ms
+1 910 665 9191