跨网络、跨进程的方法调用因为客户端和服务端位于网络上不同的地址,要完成一次rpc调用,则需要以下步骤
首先建立网络连接建立连接后,双方需要按照某种约定的协议进行网络通信能正常通信后,服务端收到请求后需要以某种方式处理,处理完成后把请求结果返回给客户端为了减少传输数据大小,还需要对数据进行序列化与反序列化 2. 连接方式
可以基于HTTP通信
但是一次http通信就需要一次三次握手,四次挥手。反复建立和销毁tcp连接,速度不够快。基于TCP通信
也就是基于Socket通信,可以维持长连接,速度更快客户端和服务端通信还要有以下机制保证
链路存活检测,客户端定时发送给服务端心跳检测,检测链路状态断连重试 3. 服务端处理请求方式
同步阻塞方式:客户端一个请求,服务端对应一个线程去处理。同步非阻塞方式:基于IO多路复用,把多个IO的阻塞复用到同一个select的阻塞上。异步非阻塞方式:基于AIO,实现困难,理论上效率最好 4. 数据传输协议
可以基于http协议也可以自定义协议 5. 序列化与反序列化
解决客户端和服务端采用哪种数据编解码的问题可以基于文本协议如json,但是最终网络传输还是二进制形式也可以基于自定义编码协议如thrift



