跨语言RPC框架
RPC框架
RPC(Remote Procedure Call):是一种计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。
比较常见的RPC框架有Hessian、Thrift、Protocal Buffer
Hessian
Hessian采用的是二进制RPC协议,适用于发送二进制数据。基于Http协议进行传输。通过Servlet提供远程服务。通过Hessain本身提供的API来发起请求。响应端根据Hessian提供的API来接受请求。
优点:
1.整个jar很小
2.配置简单
3.功能强大,抛开了soap(simple object access protocal 简单对象访问协议)、ejb,采用二进制来传递对象
Thrift
Apache Thrift是facebook实现的一种高效、支持多种编程语言的远程服务调用框架。目前流行的服务调用方式有很多种,例如基于SOAP消息格式的web service,基于json消息格式的Restful服务。其中所用到的数据传输方式播啊看XML,JSON等,然而XML相对JSON体积大些,传输效率低。JSON体积小,新颖,但还不够完善。Apache Thrift所包含的代码生成引擎可以在多种语言中,如c++、java、python、php、erlang、perl、haskell、c#、cocoa、smalltalk等创建高效的、无缝的服务,采用二进制格式,相对XML和JSON体积更小,对于高并发、大数据量和多语言的环境更有优势。
Protocal Buffer
Protocal buffer 是一种轻便高效结构化数据存储格式,可以用于接哦古化数据串行化,或者说序列化。它很时候做数据存储或RPC数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了c++、java、python三种语言的API。
Hessian、Thrift、Protocal Buffer
1.如果不需要很多语言互相调用,希望保持清晰的java接口代码,减少开发工作量,推荐hessian
2.如果系统之间的数据量不是很大(<2M),推荐hessian
3.如果需要支持大数据量的传输,多语言调用,极高的并发支持,推荐使用thrift/protocal buffer。
参考:通信协议与序列化方案的纠结: Protocol Buffer, thrift or hessian?