A distributed system is defined as a collection of programs and processes that operate over a network of electronic equipment, in which each node has local autonomy, its own processing unit and memory and the nodes as a whole are transparent to the user in order to achieve the objective pursued.
The defining features of distributed systems are: multiple nodes, resource sharing, competition, message transmission, node heterogeneity, multiple protocols, open, defect transparency, fault tolerance, persistence, security, local autonomy, no central server.
Multiple nodes mean the existence of multiple computers (nodes) connected to each other in the network. The distinction between parallel processing involving multiple microprocessors on the same computer and distributed processing is essential, in which each node can take on both the client role, when requesting services from another node, and the server role, when providing services to other nodes.
By sharing hardware resources, software such as databases, email services, or collaborative applications is the reason for connecting multiple computers to the network and working in a distributed manner.
Competition implies that applications from multiple nodes use the same set of independent features distributed over the network simultaneously.
The transmission of messages is done through the use of communication protocols, such as TCP/IP supported by connection technologies.
The heterogeneity of the nodes from the hardware and software point of view gives the system’s flexibility, the possible shortcomings or incompatibilities being resolved through agreed message formats and protocols. Multiple protocols are most often asynchronous.
Opening distributed systems gives you the opportunity to add new nodes and applications while the system is running, as opposed to common sequential programs that are closed and do not change their configuration during execution. Each node of the distributed system meets a set of minimum conditions and protocols that ensure interoperability with the components added/modified in the system.
Failure transparency and fault tolerance allows the distributed system to work even if there are components that are non-functional, which should not affect the overall functions of the system and should not be observed by the user.
Persistence implies the existence of data and information stored in persistent, non-volatile environments and security ensures the access of each user to the information corresponding to his rights.
The local autonomy of each node is physical and logical, so it communicates with the other nodes through a set of well-defined protocols. The absence of a central server means that the functionality of the system is ensured by the domains of autonomous agents that watch over the configuration, security, integrity and management of the system.
Analyzing the presented definitions, it follows that a distributed system comprises three levels of distribution: of equipment, of computer applications, and of data. In conclusion, I believe that a distributed system can be defined as a set of network-connected hardware, a communication infrastructure between stand-alone nodes, data and software applications distributed on the nodes of the computer network that allow the sharing of a minimum set of resources at low costs. .
The distribution of data and applications has potential advantages and disadvantages, respectively, over-centralization.
Some companies operate in several geographical locations, located at substantial distances from each other. Naturally, an information system must respect the information flow within the organization. Thus, the data consulted at an affiliate of the organization are, mainly the local data and only sporadically, global data of the company. So it is much easier for that location to store and manage only that part of the data it currently uses.