网站策划设计建设,网站模板建站教程视频教程,做淘宝门头的网站,免费网站代码大全什么是泛化调用#xff1f;
在RPC调用的过程中#xff0c;调用端向服务端发起请求#xff0c;首先要通过动态代理#xff0c;动态代理可以屏蔽RPC处理流程#xff0c;使得发起远程调用就像调用本地一样。
RPC调用本质#xff1a;调用端向服务端发送一条请求消息#x…什么是泛化调用
在RPC调用的过程中调用端向服务端发起请求首先要通过动态代理动态代理可以屏蔽RPC处理流程使得发起远程调用就像调用本地一样。
RPC调用本质调用端向服务端发送一条请求消息服务端接收并处理之后向调用端发送一条响应消息调用端处理完响应消息之后一次RPC调用就完成了。
只要调用端将服务端需要知道的信息如接口名、业务分组名、方法名以及参数信息等封装成请求消息发送给服务端服务端就能够解析并处理这条请求消息就能够实现接口调用。 定义一个统一的接口GenericService调用端在创建GenericService代理时指定真正需要调用的接口的接口名以及分组名而GenericService接口的$invoke方法的入参就是方法名以及参数信息。
传递给服务端所需要的所有信息包括接口名、业务分组名、方法名以及参数信息等都可以通过调用GenericService代理的$invoke方法来传递。
RPC框架可以通过异步的方式提升吞吐量给GenericService接口再添加一个异步方法$asyncInvoke方法的返回值就是CompletableFuture
class GenericService {Object $invoke(String methodName, String[] paramTypes, Object[] params);CompletableFutureObject $asyncInvoke(String methodName, String[] paramTypes, Object[] params);}通过统一的GenericService接口类生成的动态代理来实现在没有接口的情况下进行RPC调用的功能就称之为泛化调用。
调用端入参与返回值类型
在服务提供方提供的接口API中被调用的方法的入参类型是一个对象那么使用泛化调用功能的调用端使用Map类型的对象之后通过泛化调用专属的序列化方式对这个Map对象进行序列化服务端收到消息后再通过泛化调用专属的序列化方式将其反序列成对象。
实现原理
RPC框架提供统一的泛化调用接口GenericService调用端在创建GenericService代理时指定真正需要调用的接口的接口名以及分组名通过调用GenericService代理的$invoke方法将服务端所需要的所有信息包括接口名、业务分组名、方法名以及参数信息等封装成请求消息发送给服务端实现在没有接口的情况下进行RPC调用的功能。
为泛化调用提供专属的序列化插件解决泛化调用中的序列化与反序列化问题。
Dubbo泛化调用示例
Dubbo泛化调用看这篇就够了