dubbo像调用本地方法一样的模式link
- rpc-api
- UserService
- addUser(UserDTO) 操作:修改userid
- UserDTO
- RPCCommonReqDTO
- String classPath
- String methodName
- Object[] args
- UserService
- rpc-provider
- maven依赖api工程
- UserServiceImpl
- addUser(UserDTO)
- NetServer
- threadPool变量
- startUp()
- ServerSocket
- main方法调用startUp()
- RPCThread
- run() ObjectStream的read(强制转换为RPCCommonReqDTO)和write 请求的读取和响应
- ServerDispather
- dispath
- 封装参数args的 Class[] classType
- 反射创建Class 获取Method 调用invoke
- dispath
- rpc-caller
- maven依赖api工程
- ProxyFactory
- T getServiceInstance(Class interfaceClazz)
- 动态代理 Proxy.newProxyInstance(ClassLoader,Class[] interfaceClazz,InvoCationHandler)
- T getServiceInstance(Class interfaceClazz)
- RPCInvoCationHandler
- invoke 目标增强
- new RPCCommonReqDTO 放入参数(写死/需要zk实现)
- NetClient.callRemoteService 调用服务
- invoke 目标增强
- Main
- UserService userService = ProxyFactory.getServiceInstance
- User user = new UserDTO
- userService.addUser(user)
- NetClient
- Object callRemoteService(RPCCommonReqDTO)
- new Socket ObjectStream的write和read
- Object callRemoteService(RPCCommonReqDTO)
- register-provider link
- zkconfig zk服务ip端口
- CuratorFramework
- 连接zk 写数据服务注册
- /registrys/servicename/ip:port
- 节点 持久 临时
- netty启动监听 IO数据交互(一个一个handler)
- subcribe/notify-consumer
- zkconfig zk服务ip端口
- CuratorFramework
- 连接zk 服务发现
- 负载均衡
- 调用
- invoke netty客户端连接服务端 IO数据交互(一个一个handler)