实现 RPC 框架需要解决的那些问题?

1.代理问题

代理本质上是要解决什么问题?要解决的是被调用的服务本质上是远程的服务,但是调 用者不知道也不关心,调用者只要结果,具体的事情由代理的那个对象来负责这件事。既然 是远程代理,当然是要用代理模式了。 代理(Proxy)是一种设计模式,即通过代理对象访问目标对象.这样做的好处是:可以在目 标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。那我们这里额外的功能 操作是干什么,通过网络访问远程服务。 jdk 的代理有两种实现方式:静态代理和动态代理。

2.序列化问题

序列化问题在计算机里具体是什么?我们的方法调用,有方法名,方法参数,这些可能 是字符串,可能是我们自己定义的 java 的类,但是在网络上传输或者保存在硬盘的时候, 网络或者硬盘并不认得什么字符串或者 javabean,它只认得二进制的 01 串,怎么办?要进 行序列化,网络传输后要进行实际调用,就要把二进制的 01 串变回我们实际的 java 的类, 这个叫反序列化。java 里已经为我们提供了相关的机制 Serializable。

3.通信问题

我们在用序列化把东西变成了可以在网络上传输的二进制的 01 串,但具体如何通过网 络传输?使用 JDK 为我们提供的 BIO。

4.服务实例化

登记的服务有可能在我们的系统中就是一个名字,怎么变成实际执行的对象实例,当然是使用反射机制

反射

反射机制是什么?
反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对 于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用 对象的方法的功能称为 java 语言的反射机制。
反射机制主要提供了以下功能:
•在运行时判断任意一个对象所属的类;
•在运行时构造任意一个类的对象;
•在运行时判断任意一个类所具有的成员变量和方法;
•在运行时调用任意一个对象的方法;
•生成动态代理。