浅谈动态代理在 RPC 中的应用

浅谈动态代理在 RPC 中的应用

远程调用魔法

话说动态代理在 RPC 中有啥作用呢?

在项目中,当我们要使用 RPC 的时候,一般的做法是 先找服务提供方要接口,通过 Maven 等工具把接口依赖到我们项目中。如果要调用提供方的接口,就只需要通过依赖注入的方式把接口注入到项目中就行了,然后在代码里面直接调用接口的方法。

但是接口里并不包含真实的业务逻辑,业务逻辑都在服务提供方应用里面,但我们通过调用接口方法,拿到了我们想要的结果,那在 RPC 中这是怎么完成的呢,答案就是动态代理。

RPC 会自动给我们生成一个动态代理类,当我们在项目中注入接口的时候,运行过程中实际绑定是这个接口生成的代理类,这样在接口方法被调用的时候,它实际上是被生成代理类拦截了,这样我们就可以在生成的代理类里面,加入远程调用的逻辑。

通过这种方式就可以帮助用户屏蔽远程调用的细节,实现像调用本地方法一样调用远程的体验,流程如下:

动态代理有多种方式,常见的就是 JDK 的动态代理和 CGLIB 动态代理,那我们应该选择哪种呢?

  • 因为代理类是在运行中生成的,那么代理框架生成代理类的速度、生成代理类的字节码大小等等,都会影响到其性能–生成的字节码越小,运行所占资源就越小。
  • 我们生成的代理类,适用于接口请求拦截的,所以每次调用接口方法的时候,都会执行生成的代理类,所以代理类的执行效率需要很高效。
  • 该动态代理框架的 API 是否好理解,社区活跃度等等。

作者的极客时间的笔记

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值