远程调用

来源:互联网 发布:网络行业都有哪些工作 编辑:程序博客网 时间:2024/05/21 18:33

1.远程调用解决的问题:

统一服务多机部署,多个不同服务相互调用;

2. 技术解决方案

Netty通信

3.调用流程

流程图有空再完善,这里先大致说一下思路:

(1)客户端通过接口new一个代理类,代理类对象中应该包含远程调用的如下信息:

private String serviceUri;//由于时同一服务多机部署,这里会涉及到一个地址路由的问题private String serviceName;private String instanceName;private Class serviceInterface;private Properties properties;private Set exporterProtocols;private String importerProtocol;

(2)代理类方法调用

在这个过程中,借助动态代理完成了通信并反馈结果,简单的说就是当调用方法时,动态代理实际上是回去调用invoke方法,而invoke方法中的实例只是自己定义的,并非远程中真正需要的实例,因此在invoke方法中会通过Netty通信,将代理类中的相关信息传输到服务器端,服务器端根据接受到的信息,进行调用实际类的相应方法,并将返回结果通过Netty传回来。注意:由于对象在网络中涉及到序列化与反序列化过程,传输的对象均需要序列化,至于序列化采用什么序列化器根据实际选择,比较推荐的为Hessian,速度较快。

(3)服务器端

当服务器端监听到信息后,也会通过动态代理的方式调用相关方法,来反馈。具体过程后续完善。


0 0
原创粉丝点击