Inter-Process Communication (IPC) in Distributed Environments: An Investigation and Performance Analysis of Some Middleware Technologies
Hamed Dinari · International Journal of Modern Education and Computer Science · 2020
Nowadays with improvement in computer science, distributed systems have attracted remarkable attention and increasingly become an indispensable factor in our life.Massive-scale data processing, weather forecasting, industrial control systems, medical science, multi-tire architectures in enterprise applications, and aerospace to name but a few are the cases in point that distributed systems play a notable role.Inter-Process Communication or in a short form, IPC is specified as the heart of all distributed systems, therefore they are not formed without IPC.Numerous methods concerning IPC have been proposed so far that are utilized in diverse circumstances.According to the physical location of communication processes in applications, IPC could be established among either multiple processes on the same computer or several computers across a network.From the communication pattern's perspective, these IPCs can be classified into two broad groups namely, shared memory and message passing.Although, it is not true to say when processes are performed on the same computer definitely employ shared memory to communicate if processes are executed on the different systems they inevitably communicate through message passing.By way of illustration, pipes use message passing patterns to make a connection between various processes but all of the processes are carried out on the same system.The aim of this research is to depict a categorization of the some IPC methods, give a brief description of them, and assess their performance in terms of transferring rate by sending multiple files in different sizes between a client and server.As we expected, socket as the basic IPC, since it does not perform extra operations on the input data to be sent had a desirable performance compared to others.Although, to achieve some of the capabilities, like eliminating platform dependencies and asynchronous communication, it needs to add additional layers that make poor performance.