本课时主要讲解 RPC 远程服务调用相关的知识。
RPC 远程服务调用是分布式服务架构的基础,无论微服务设计上层如何发展,讨论服务治理都绕不开远程服务调用,那么如何理解 RPC、有哪些常见的 RPC 框架、实现一款 RPC 框架需要哪些技术呢?
如何理解 RPC
RPC(Remote Procedure Call)是一种进程间通信方式,百科给出的定义是这样的:“RPC(远程过程调用协议),它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议”。
RPC 允许程序调用另一个地址空间的过程或函数,而 不用程序员显式编码这个远程调用的细节。即无论是调用本地接口/服务的还是远程的接口/服务,本质上编写的调用代码基本相同。
比如两台服务器 A、B,一个应用部署在 A 服务器上,想要调用 B 服务器上应用提供的函数或者方法,由于不在一个内存空间,则不能直接调用,这时候就可以应用 RPC 框架的实现来解决。
RPC 如何实现
早期的远程服务调用一般是通过 RMI 或 Hessian 等工具实现,以 Java RMI 为例,RMI 是 Java 语言中 RPC 的一种实现方式。
Java RMI(Java 远程方法调用,Java Remote Method Invocation)是 Java 编程语言里,一种用于实现远程过程调用的应用程序编程接口。应用 Java RMI,可以让某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。
Java RMI 实现主要依赖 java.rmi 包下面的工具类,具体流程包括继承 Remote 实现远程