A distributed system is a system that has several nodes running in parallel, data processing. The nodes do not necessarily have homogeneous roles in the task performed, and heterogeneity is very common.
Can be considered among the types of distributed systems:
- Cloud computing systems.
- IoT - Internet of things.
- P2P systems.
- Botnets.
- Systems that collaborate in an integrated way through messaging.
- Cryptomanes.
- etc.
The rule here is that there are several parts of the system talking in an integrated way. Several protocols can be used to govern their communication. The most common ones at present are SOAP (along with related technologies such as WS- *, WSDL, UDDI, among others) and REST (which takes advantage of HTTP). There are and there were other technologies in this sense, such as CORBA (which, albeit well, is falling into disuse). Integration can be done via e-mail, FTP, TCP or UDP sockets.
The structure of the system as a whole is often an orchestration, where one of the nodes initiates and coordinates the operation as a whole and the other nodes only perform specific tasks (they can also be orchestrations themselves). Another structure is that of choreography, where the services talk to each other without any central control or coordination.
In some cases, the same node (or pool of nodes) can be part of multiple distributed systems. For example, company A's system can talk to the postal system to map ZIP codes to streets. Meanwhile, company B, which has no relationship with company A, can do the same.