首页 > 其他分享 >《RPC实战与核心原理》学习笔记Day4

《RPC实战与核心原理》学习笔记Day4

时间:2023-01-21 23:44:32浏览次数:46  
标签:逻辑 调用 Day4 代理 接口 RPC 笔记 动态

05 | 动态代理:面向接口编程,屏蔽RPC处理流程

RPC和动态代理有什么关系?

当我们使用RPC时,我们一般会先找到服务提供方要接口,然后将接口依赖配置到项目中,我们在编写业务逻辑时,当需要调用提供方接口时,我们只需要通过依赖注入的方式把接口注入到项目中,然后再代码里面直接调用接口的方法。
但是我们的代码中,接口并没有包含真实的业务逻辑,相关的业务逻辑代码是在服务提供方应用汇总,但是我们只是调用了接口方法,就正常执行了业务逻辑,这是就是动态代理帮助我们实现的。
总的来说,RPC会自动给接口生成一个代理类,当我们在项目中注入接口时,运行过程中实际绑定的是这个接口生成的代理类,这样接口方法被调用的时候,它实际上是被代理类拦截到了,这样我们就可以在代理类中,加入远程调用逻辑。

在Java中,有哪些技术可以实现动态代理?

  • JDK提供的InvocationHandler
  • Javassist
  • Byte Buddy

上述三个工具的区别在于通过什么方式生成代理类以及在生成的代理类中怎么完成方法调用。

动态代理技术选型需要考虑什么因素?

  • 生成代理类的速度、字节码大小。
  • 生成的代理类的执行效率。
  • 是否易用,API设计是否好理解、社区活跃度、依赖复杂度。

如果没有动态代理帮我们完成方法调用拦截,我们应该怎样完成RPC调用?

如果没有动态代理,那么我们需要使用静态代理来实现,需要对原始类中所有的方法都实现一遍,并且为每个方法附加相似的代码逻辑。

标签:逻辑,调用,Day4,代理,接口,RPC,笔记,动态
From: https://www.cnblogs.com/wing011203/p/17064099.html

相关文章

  • [ 6--JWT学习 | 青训营笔记]
    这是我参与「第五届青训营」伴学笔记创作活动的第6天JWT介绍JSONWebToken(orJWT)只是一个包含某种意义数据的JSON串。它最重要的特性就是,为了确认它是否有效,我们......
  • 初识C语言电子笔记
    ......
  • 线段树分治 / 时间分治 算法笔记
    线段树分治定义线段树的本质就是分治的实体化。我理解的狭义上的线段树指的是支持区间查询修改的一种数据结构,而广义上的线段树则是一种思想——分治实体化的思想。线......
  • 学习笔记——SpringMVC文件上传与下载
    2023-01-21一、文件下载1、实现文件下载步骤(1)准备文件下载相关步骤(2)将ResponseEntity<T>对象,作为方法返回值(3)为ResponseEntity<T>对象,设置三个参数 2、示例代码@R......
  • 笔记本打字延迟缓慢的解决办法
    (41条消息)笔记本打字延迟缓慢的解决办法_高欣的博客的博客-CSDN博客_笔记本打字延迟环境:1、dell笔记本2、Windows10专业版3、微软输入法,搜狗输入法Question:1、打字过......
  • 数学分析笔记【5】 数列极限
    数列与数列极限的定义定义5.1称函数\(f:\mathbb{N}^{+}\rightarrow\mathbb{R}\)为数列,写作小写字母与下标的形式,如\[a_1,a_2,a_3,\cdots,a_n\leftrightarrowf(1),f......
  • C++实战笔记(三)异常处理
    tags:C++Interview写在前面简单总结一下C++异常处理部分(Exception).异常只是C++为了处理错误提出的一种解决方案,并不是唯一的一种.异常处理特点异常处理的流程完全独立......
  • 计算几何笔记(一):点与向量
    开始之前圆周率constpi=acos(-1);浮点数的比较对实数进行浮点运算难免会出现精度误差为了控制精度,可以设置一个偏差值\(eps\)constdoubleeps=1e-5;intsgn(......
  • fabric学习笔记10
    fabric学习笔记1020201303张奕博2023.1.22测试实践1.启动网络命令:cdfabric-samples/chaincode-docker-devmode/docker-compose-fdocker-compose-simple.......
  • 读函数式编程思维笔记02_转变思维
    1. 命令式编程1.1. 按照“程序是一系列改变状态的命令”来建模的一种编程风格1.2. 传统的for循环1.2.1. 确立初始状态1.2.2. 每次迭代都执行循环体中的一系列命......