RPC学习——无注册中心

2020-07-15  本文已影响0人  扯闲话

服务发布端

服务端发布服务类:RpcServer

方法名:publisher,发布服务

任务处理类:ProcessorHandler

方法名:run,该类实现了Runnable

方法名:invoke,本地的反射调用方法

服务发布流程

类的实例化

RpcServer rpcServer = new RpcServer();

发布流程

rpcServer.publisher(new HelloServiceImpl(), 12345);——>开启socket监听,当监听到消息之后线程池提交消息——>run(),反序列化请求,封装到Request中——>执行本地invoke方法——>分解信息,反射调用,得出结果

总结

开启socket监听

服务消费端

客户端代理类:RpcClientProxy

方法名:clientProxy,生成代理对象

动态代理类:RemoteInvocationHandler

方法名:invoke,发起客户端和服务端的远程调用,调用客户端的信息进行传输

socket传输类:TcpTransport

方法名:newSocket,准备创建Socket连接

方法名:send,发送请求

服务端消费流程

1、proxy.clientProxy(IHelloService.class, "127.0.0.1", 12345);生成一个代理对象

2、iHelloService.sayHello("张三");代理对象调用——>代理类的invoke方法。解析调用信息为RpcRequest,调用TcpTransport的send方法——>创建socket连接,ObjectOutputStream发送请求,ObjectInputStream接收请求

注:

用到的知识点:代理、序列化、线程池、Socket + IO

参考:

手写实现RPC框架(不带注册中心)

上一篇下一篇

猜你喜欢

热点阅读