远程调用

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)服务器端

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值