现在是一个多核+多种设备集群合作进行计算和储存的时代,也就是我们称为分布式系统大行的时代。现在的系统我们都要贴上标签”分布式“,
那么多进程,网络通信都是必须掌握的技术,这里面,尤其是进程间通信更是的非常重要的部分。
我们先来了解一下进程,
因为进程由操作系统管理,它的地址空间包含动态分配的空间。如线程堆栈和堆分配空间。每个进程被赋予它自己的虚拟地址空间,其它进程不能被访问。
所以进程间通信只能在系统级别来实现和管理。
现在有Erlang的行动类,spark的actor,java的ActivieMQ Kafka等中间框架 net的DCom WCF框架,连Android都有EventBus消息总线框架。
那么进程间通信有哪些种类,自己总结了一下原来接触过的进程间通信的方式如下:
1.在win 32 16机的时代,有共享内存 , DDE动态数据交换和剪贴板 ClipBoard
2.可以通过系统消息通信(如窗口消息)3.pipeline管道流,这是很多组件都有采用的方式
4.mail slots 邮件槽
5.基于socket协议通信
6.通过internet的URL来定位下载远程服务器进程的文件
7.RPC 远程过程调用
8.serial/parallel communication通过计算机的串并口通信
9.通过框架实现, 如DCOM 也是采用了上述的技术和协议来实现进程间交互的一个分布式框架,通过在客户机建立代理方式进行进程间通信,使用 marshling整体提交避免网络回旋。数据交换使用RPC+ssh安全机制,并用UDP传输协议避免通信阻塞等。
当然现在都是使用消息框架来实现多进程的通信