什么是 RPC?
RPC(Remote Procedure Call)即远程过程调用,它允许一个程序(客户端)通过网络向另一个程序(服务器)请求服务,而无需了解底层网络技术。RPC 使得分布式系统中的服务调用变得像本地调用一样简单。
RPC 原理是什么?
RPC 的工作原理可以概括为以下几个步骤:
- 客户端调用:服务消费方(客户端)以本地调用方式调用服务。
- 客户端存根(Client Stub):接收到调用请求后,负责将方法、参数等组装成网络传输的消息体。
- 发送消息:客户端存根找到服务地址,并将消息发送到服务端。
- 服务端存根(Server Stub):收到消息后进行解码。
- 本地服务调用:服务端存根根据解码结果调用本地的服务。
- 执行并返回结果:本地服务执行并将结果返回给服务端存根。
- 打包返回结果:服务端存根将返回结果打包成消息并发送至客户端。
- 客户端存根接收并解码:客户端存根接收到消息,并进行解码。
- 客户端获取结果:服务消费方得到最终结果。
RPC 解决了什么问题?
RPC 主要解决了分布式或微服务系统中不同服务之间的调用问题,使得服务调用像本地调用一样简单,提高了服务调用的效率和便捷性。
常见的 RPC 框架有哪些?
- RMI(Java 远程方法调用):JDK 自带的 RPC 框架,但有很多局限性,不推荐使用。
- Dubbo:阿里巴巴开源的高性能服务框架,可以与 Spring 框架无缝集成,已成为 Spring Cloud Alibaba 的官方组件。
- gRPC:现代开源高性能 RPC 框架,支持跨语言,适用于数据中心内和跨数据中心的服务连接。
- Hessian:轻量级的二进制 RPC 协议,适合发送二进制数据,简单快捷。
- Thrift:Facebook 开源的跨语言 RPC 通信框架,适用于多种编程语言,性能出色。
这些框架各有特点,适用于不同的应用场景和需求。