一、Java 官方RMI
1、把接口类和实现类分开,部署在各自的Java虚拟机中。
2、用网络来进行调用。
需要使用Remote类、Naming、LocateRegistry类的方法。
需要每次固定的选择服务器来调用对象方法。
二、用HTTP调用
服务的每个方法和HTTP路径绑定。
客户端用HTTP请求来调用服务。
可以提供一个列表给客户端随机选择服务。
常见的是:SpringCloud框架。
三、Dubbo框架
(一)特点
1、 Dubbo和Java官方RMI类似,也通过抽象接口类来调用远方的实现类。
2、Dubbo有注册中心来提供服务列表。
(二)Dubbo的难点:
1、怎么把接口类的方法调用转换成网络数据?
需要把方法名、参数列表通过网络传输,发给服务提供方。
2、怎么把对象转成字节序列?
Java官方有Object序列化输入输出流。
或者自定义把每个属性值转成二进制序列。
3、怎么动态的在客户端内部实现一个接口?
接口实现类中每个方法内部都要完成下列功能:
把方法调用的参数列表转成二进制序列。
把二进制序列用网络发给服务提供方。
接收服务提供方回复的结果数据。
把结果数据转成Java对象。
把对象返回给方法调用者。