接下来的文章中,我将会去分析Java语言中常用的RPC框架,包括但不限于RMI、dubbo、Hessian、Spring Remoting框架。这篇文章将简要介绍Java语言自带的RMI协议。
RMI(Remote Method Invocation),远程方法调用,程序调用方无需关心跨机器跨进程的协议调用,更多的把精力放在业务上,而且这也隐藏了服务器实现的细节。
Java RMI整体结构图如下:
一般情况下,Register为注册中心,一般是和Server在同一个Java 虚拟机中。Server通过开启一个注册中心,将所需要发布的服务注册到Register中,Client通过Register和服务类名称,得到服务,然后通过服务进行调用,完成一个RPC过程。
下面根据源码,和自己的归纳总结,给出下面的细节分析:
1、生成存根Stub和骨架Skeleton对象,实现类需要继承UnicastRemoteObject 类,并通过构造器调用UnicastRemoteObject 的默认构造器。
2、通过命名服务将存根Stub对象注册到注册中心Register
3、客户端Client通过lookup向注册中心Register请求服务的存根Stub