RPC框架数据流程
RPC框架服务端启动原理
要使用我们自定义的RPC框架,服务端必须要做下面两件事:
- 在业务接口的实现类上面添加@RPCService注解
在Spring框架的applicationContext.xml文件中配置框架提供的bean
<bean id="rpcServer" class="cn.itcast.rpc.server.RpcServer"> <constructor-arg name="serverAddress" value="${server.address}"/> <constructor-arg name="serviceRegistry" ref="serviceRegistry"/> </bean>
一旦启动Spring框架,Spring框架就会使用我们指定的构造函数来构造指定的类的实例。这个类实现了org.springframework.context.ApplicationContextAware
接口。因此Spring会通过setApplicationContext
方法传递进Context对象。然后通过Context对象就可以获得所有添加了@RPCService注解的类的实例。最后启动netty,即可开启rpc服务器程序。
RPC框架服务端功能列表
- 读取配置文件,获得ZooKeeper集群地址,向ZooKeeper注册自己的地址
- 获取所有@RpcService注释的类对象
- 监听socket端口,解析客户端的请求,调用客户端指定的方法并返回结果
RPC框架代码运行流程
客户端调用服务器原理
用户代码通过框架取得Service实现类(动态代理)。动态代理类截获客户端具体的调用过程,然后向服务端发送请求。最后获得结果。