Java常见分布式协议比较-RPC
2013-04-13 01:22
211 查看
Java的远程调用有多种分布式协议可供使用,但其种类繁多,容易让人困扰。本系列博客分别对它们做入门介绍:
RMI: 含JBoss-Remoting,Spring Remoting
RPC: 含XML-RPC, Binary-RPC
CORBA:
SOAP: (Web Service)
EJB
JMS
RPC, 远程过程调用, 也叫远程函数调用, 最早出现在Sun公司和HP公司的运行Unix操作系统的计算机中,用于系统间通信的一种机制.
不过从传输的数据格式来说,RPC可以分为基于二进制的RPC、基于XML的RPC、以及其他诸如基于Json的RPC。
Hessian由caucho公司开发,是一种高效、跨平台、基于HTTP的协议。Hessian的设计目标是:自描述的,即不需要额外的Schema或者接口定义;尽可能的紧走;简单;尽量快。 为保持高效,Hessian自定义了自己的数据序列化反序列化协议,并有多种语言的实现,因此很容易跨平台;在转换为对象流时可以进行压缩。尤其是Hessian2.
基于XML的RPC通常都是跨平台的,但其主要缺点是性能:
描述接口的冗余信息太多,与二进制协议相比,文件能大几倍甚至10倍;
基于XML的序列化反序列化效率不高。 所以其性能与RMI、Hessian等协议相比,至少要差一个数量级。
这里值得一提的是caucho公司的Burlap,与Hessian协议相对应,是目前性能较高的的XML-RPC实现。
RMI: 含JBoss-Remoting,Spring Remoting
RPC: 含XML-RPC, Binary-RPC
CORBA:
SOAP: (Web Service)
EJB
JMS
RPC, 远程过程调用, 也叫远程函数调用, 最早出现在Sun公司和HP公司的运行Unix操作系统的计算机中,用于系统间通信的一种机制.
协议和语言
RPC是一种大而泛的远程调用机制,不局限于语言,更不局限于协议。我们可以认为RMI就是一种RPC,其区别在于RMI是基于对象的,本地虚拟机中通过Stub可以调用远程虚拟机的对象。不过从传输的数据格式来说,RPC可以分为基于二进制的RPC、基于XML的RPC、以及其他诸如基于Json的RPC。
Binary-RPC
RMI可以认为是二进制RPC的一个实现。另外一个著名的实现是Hessian。Hessian官网宣称自己是一种Binary-RPC。不过分析细微差别,从使用方式上,我更倾向于其是一种RMI的实现。Hessian由caucho公司开发,是一种高效、跨平台、基于HTTP的协议。Hessian的设计目标是:自描述的,即不需要额外的Schema或者接口定义;尽可能的紧走;简单;尽量快。 为保持高效,Hessian自定义了自己的数据序列化反序列化协议,并有多种语言的实现,因此很容易跨平台;在转换为对象流时可以进行压缩。尤其是Hessian2.
XML-RPC
XML-RPC有两种涵义,第一种泛指以XML格式进行远程方法调用的过程,比如演进出来的SOAP、Caucho公司的Burlap都可归为此类;第二种特指XML-RPC协议本身,定义了标准的数据传输格式,并规定了使用HTTP作为传输协议,Apache XML-RPC是其Java的一个实现。基于XML的RPC通常都是跨平台的,但其主要缺点是性能:
描述接口的冗余信息太多,与二进制协议相比,文件能大几倍甚至10倍;
基于XML的序列化反序列化效率不高。 所以其性能与RMI、Hessian等协议相比,至少要差一个数量级。
这里值得一提的是caucho公司的Burlap,与Hessian协议相对应,是目前性能较高的的XML-RPC实现。
相关文章推荐
- Java常见分布式协议比较-RMI
- java 几种远程服务调用协议的比较
- 几种java通信(rmi,http,hessian,webservice)协议性能比较
- 【Java基础】Java常见几组概念的比较(String、StringBuilder、StringBuffer、HashMap、HashTable
- java 几种远程服务调用协议的比较
- hessian协议从rpc服务获取inputStream流下载文件的方式,出现异常 java.io.IOException: stream is closed
- 分布式技术比较(RPC,CORBA,WebService)
- Java中日期的几种常见操作 —— 取值、转换、加减、比较
- Java 中日期的几种常见操作 —— 取值、转换、加减、比较
- 【Java】java中常见的日期操作(取值、转换、加减、比较)
- RPC与Http通信协议的比较
- Java中日期的几种常见操作 —— 取值、转换、加减、比较
- JAVA.SWT/JFace: SWT中的事件模型/SWT常见的事件/SWT类所代表的事件常量/按键与其对应的常量表、KeyEvent事件比较、VerifyEvent事件比较
- 分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较
- 常见Java开发工具的特点比较
- Java 中日期的几种常见操作 —— 取值、转换、加减、比较
- java程序中比较常见的四种判断是否为空的性能优化比较
- 几种基于HTTP协议的RPC性能比较
- 聊聊 Java 中日期的几种常见操作 —— 取值、转换、加减、比较
- java 几种远程服务调用协议的比较