2019, May 31
分布式系统远程调用学习笔记
1. 远程过程调用(RPC):
简介:RPC是由Sun发明的远程过程调用协议,是第一种真正的分布式应用模型。
使用:TODO。
注意事项:TODO。
2. 公共对象请求代理体系结构(CORBA):
简介:是由OMG组织制订的一种标准的面向对象应用程序体系规范。
使用:详见github项目,首先需要创建一个idl文件,其中有需要暴露的接口,之后再使用命令行创建idl文件对应的module包,创建方法:在命令行中输入 idlj -fall idl文件路径,具体连接方法详见github项目。
注意事项:切记,在运行服务器端之前,需要先启动ordb.exe,ORDB的作用是使客户端能够在CORBA环境中的服务器上查找和调用持久对象。启动方法:在服务器的命令行中输入 start orbd -port 8080 -ORBInitialPort 1049 -ORBInitialHost localhost,其中8080是绑定的端口,1049是初始化的端口,初始化接口只要不冲突就可以随便指定一个空闲端口。
3. 远程方法调用(RMI):
简介:Java提供的一种远程方法调用机制。
使用:详见github项目。
注意事项:需要暴露的接口需要继承Remote类,其中的方法需要抛出RemoteException;实现类需要继承UnicastRemoteObject类,构造函数需要是public并抛出RemoteException,客户端的接口需要和服务器端的接口一致。
4. Web Service:
简介:将接口转成WSDL文件,由客户端调用。
使用:详见github项目。
注意事项:可以在IDEA或者Eclipse中创建WebService服务器端和客户端,创建客户端之后可以从服务器提供的端口下载服务,如果下载失败(限制访问某文件)的话,可以在/path/jdk1.8/jre/lib/下面创建一个jaxp.properties文件(如果不存在的话),然后写入这一行:javax.xml.accessexternalschema = all;也可以在命令行中输入如下命令来下载服务器端的服务:wsimport -s . http://localhost:8080/WebServiceTest?wsdl,其中的’-s’代表下载.java文件和.class文件,’.’指的是下载路径,为当前路径,最后的为服务器端提供的端口。
5. 消息队列(MQ):
简介:“消息队列”是在消息的传输过程中保存消息的容器。消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦。可以用来进行远程方法调用。主流的MQ有ActiveMQ、RabbitMQ、RocketMQ和Kafka等,MQ有两种通信模式:点对点模式和发布订阅模式。
使用:我使用的是RabbitMQ,实现的是利用RabbitMQ实现RPC,使用的通信模式是点对点模式。使用之前需要安装Erlang和RabbitMQ Server,Windows安装教程可参考这篇博客,实例代码详见github项目。
6. 分布式组件对象模型(DCOM):
简介:
使用:详见github项目。
注意事项:TODO。