聊聊 RPC
每个分布式系统都离不开多进程的通信问题,包括本机上多进程之间的IPC通信和基于网络的远程通信技术,后者是分布式系统架构中的核心和关键基础技术之一,就远程通信而言,抛开各种专用系统的远程通信协议如 NFS、FTP、SNMP、SMTP、POP3不说,各种通用的远程通信技术也在不断发展和变化,比如从最古老的RPC远程通信技术到曾经风靡一时的SOAP( Web Service)协议,再到后面红极一时的HTTP REST。如今,由于移动互联网和大数据时代的兴起,支持多语言与高性能传输的各种 RPC架构再次成为热点技术。
IPC通信
从严格意义上来说,一个系统由多个独立的进程组成,而且进程之间有数据交互的逻辑,那么,不管这几个进程是否被部署在一台主机上,这样的系统都可以叫作分布式系统。IPC( Inter-Process Communication)就是为了解决单主机上多进程之间的通信问题而诞生的一种古老技术。由于进程与操作系统是密切相关的,因此操作系统的不同会导致IPC的具体实现也各有不同,但不管是 Windows系统还是Linux系统,都支持以下几种进程间的通信技术。

- 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系的进程间的通信,有名管道克服了管道没有名称的限制,因此,除了有管道所具有的功能,它还允许无亲缘关系进程间的通信。由于管道存在只能承载无格式字节流及缓冲区大小受限等缺点,所以使用管道进行IPC通信的做法已经不太普遍。
- 套接字(Socket):起初是由UNIX系统的BSD分支开发出来的,现在 Linux和 Windows系统都支持Socket, Socket如果用于本地进程间的通信,则要比普通的TCP/IP快很多,这也是一种比较通用的进程间通信的方式。
- 共享内存:将文件映射到内存中,多个

本文探讨了分布式系统中多进程通信的重要性,重点介绍了RPC(Remote Procedure Call)和IPC(Inter-Process Communication)技术。从管道、套接字、共享内存等方面阐述了IPC的实现方式,强调了UNIX Domain Socket在IPC中的高效性能。同时,文章提到了RPC作为分布式系统的关键基础技术,以及其在不同通信协议中的演变和发展。
最低0.47元/天 解锁文章
1952

被折叠的 条评论
为什么被折叠?



