一.RPC源头与演进
1.进程之间通信方式
管道 Pipe : 两个进程之间传递少量字符流,字节流 ps -ef | grep java
信号 Signal:信号用于通知目标进程 kill -9 pid
信号量 Semaphore:两个进程之间的同步机制 wait() notify()
消息队列 Message Queue:进程间数据量较多的通信 进程向队列里添加消息,有读权限的进程可以消费队列
共享内存 Shared Memory: 多个进程访问同一快公共内存,往往与信号量等其他通信机制结合,达到进程间同步互斥的协调
套接字 Socket: 进程间通信,不同机器间进程通信,基于网络跨机器进程间通信
2.网络通信中三个基本问题
如何表示数据: 入参及返回值。不同指令集,不同操作系统,不同语言之间如何统一表示。 ——RPC的序列化及反序列化协议
如何传递数据:除了最底层TPC/UDP传输数据流之外,如何保证异常,超时,安全,认证,授权,事务等数据传递行为
如何确定方法:如何找到跨机器跨语言的程序的对应方法,进行访问
3.RPC通信的两个性能因素
序列化效率:序列化输出结果的容量越小,速度越快,效率越高
信息密度:使用传输协议的层次越高,有效荷载占总传输数据的比例越高,信息密度越低
4.现代RPC特性
更高层次能力:负载均衡,服务注册,观察检测
传输协议自定义:例如dubbo,默认支持Hessian2,dubbo协议,也可支持JSON,Protucol Buffers等其他序列化协议
标签:协议,01,架构,队列,通信,RPC,进程,序列化,凤凰 From: https://www.cnblogs.com/ttaall/p/18196045