RPC(远程过程调用)

文章目录

  • 介绍
  • 常用框架
    • RMI
    • Dubbo
    • Hessian
    • Thrift
    • 如何选择

介绍

RPC(Remote Procedure Call)远程过程调用 ,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发分布式程序就像开发本地程序一样简单。

RPC采用客户端(服务调用方)/服务器端(服务提供方)模式, 都运行在自己的JVM中。客户端只需要引入要使用的接口,接口的实现和运行都在服务器端。RPC主要依赖的技术包括序列化、反序列化和数据传输协议,这是一种定义与实现相分离的设计。

目前Java使用比较多的RPC方案主要有RMI(JDK自带)、HessianDubbo以及Thrift等。

注意: RPC主要指内部服务之间的调用RESTful也可以用于内部服务之间的调用,但其主要用途还在于外部系统提供服务

常用框架

RMI

JDK自带的RPC

Dubbo

Dubbo是 阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。

Hessian

Hessian是一个轻量级的remotingonhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。

Thrift

Apache Thrift是Facebook开源的跨语言的RPC通信框架,目前已经捐献给Apache基金会管理,由于其跨语言特性和出色的性能,在很多互联网公司得到应用,有能力的公司甚至会基于thrift研发一套分布式服务框架,增加诸如服务注册、服务发现等功能。

如何选择

  • 是否允许代码侵入: 即需要依赖相应的代码生成器生成代码,比如Thrift。
  • 是否需要长连接获取高性能: 如果对于性能需求较高的haul,那么可以果断选择基于TCP的Thrift、Dubbo。
  • 是否需要跨越网段、跨越防火墙: 这种情况一般选择基于HTTP协议的Hessian和Thrift的HTTP Transport。

此外,Google推出的基于HTTP2.0的gRPC框架也开始得到应用,其序列化协议基于Protobuf,网络框架使用的是Netty4,但是其需要生成代码,可扩展性也比较差。

你可能感兴趣的:(分布式)