一、远程通讯协议的基本原理:
网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络 IO 来实现。
其中传输协议比较出名的有 http 、tcp 、udp 等等, http 、tcp 、udp 都是在基于 Socket 概念上为某类应用场景而扩展出的传输协议。
网络IO主要有 bio 、nio 、aio 三种方式,所有的分布式应用通讯都基于这个原理而实现,只是为了应用的易用,各种语言通常都会提供一些更为贴近应用易用的应用层协议。
二、应用级协议 Binary-RPC:
Binary-RPC 是一种和 RMI 类似的远程调用的协议,它和 RMI 的不同之处在于它以标准的二进制格式来定义请求的信息 ( 请求的对象、方法、参数等 ) 。这样的好处是在跨语言通讯的时候也可以使用。
Binary -RPC 协议的一次远程通信过程:
1 、客户端发起请求,按照 Binary -RPC 协议将请求信息进行填充;
2 、填充完毕后将二进制格式文件转化为流,通过传输协议进行传输;
3 、接收到在接收到流后转换为二进制格式文件,按照 Binary -RPC 协议获取请求的信息并进行处理;
4 、处理完毕后将结果按照 Binary -RPC 协议写入二进制格式文件中并返回。
Binary-RPC相关问题总结:
1 、传输的标准格式是?
——— 标准格式的二进制文件。
2 、怎么样将请求转化为传输的流?
——— 将二进制格式文件转化为流。
3 、怎么接收和处理流?
———通过监听的端口获取到请求的流,转化为二进制文件,根据协议获取请求的信息,进行处理并将结果写入 XML 中返回。
4 、传输协议是?
———Http 。
三、Hessian ——一种实现远程通讯的 library
Hessian 是由 caucho 提供的一个基于 binary-RPC 实现的远程通讯 library 。
1 、是基于什么协议实现的?
——基于 Binary-RPC 协议实现。
2 、怎么发起请求?
——需通过 Hessian 本身提供的 API 来发起请求。
3 、怎么将请求转化为符合协议的格式的?
——Hessian 通过其自定义的串行化机制将请求信息进行序列化,产生二进制流。
4 、使用什么传输协议传输?
——Hessian 基于 Http 协议进行传输。
5 、响应端基于什么机制来接收请求?
——响应端根据 Hessian 提供的 API 来接收请求。
6 、怎么将流还原为传输格式的?
——Hessian 根据其私有的串行化机制来将请求信息进行反序列化,传递给使用者时已是相应的请求信息对象了。
7 、处理完毕后怎么回应?
—— 处理完毕后直接返回, hessian 将结果对象进行序列化,传输至调用端。