RMI是远程方法调用(Remote Method Invocation)的简称,其是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制,它能够让一个Java虚拟机上的对象调用另一个Java虚拟机上对象的方法。Java RMI在JDK1.1中实现的,其它可以被看作是RPC的Java版本。但是传统RPC并不能很好地应用于分布式对象系统。而Java RMI 则支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。

RMI相对于其它比较复杂的RPC要简单的多(比如Thrift、Grpc、Protoff等),本文仅仅简单阐述了其组成、实现原理图、代码示例。如果想深入学习和了解,可以自行解读源码或参照其它解读文档。

局限性

相比于其它RPC(Thrift、Grpc等),RMI存在许多的缺点:

RMI只能实现JAVA系统之间的调用,而WebService可以实现跨语言实现系统之间的调用。

RMI使用了JAVA默认的序列化方式,对于性能要求比较高的系统,可能需要其他的序列化方案来解决。

RMI服务在运行时难免会存在故障,例如,如果RMI服务无法连接了,就会导致客户端无法响应的现象。

RMI服务是基于远程接口提供的服务,一旦远程接口名称或者参数发生变化,客户端程序必须作出相应改变才能保证系统的稳定。

————————————————

版权声明:本文为CSDN博主「皮斯特劳沃」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/pistolove/article/details/64122191