# dubbo-rpc-fork **Repository Path**: ljcoding/dubbo-rpc-fork ## Basic Information - **Project Name**: dubbo-rpc-fork - **Description**: 手写dubbo仓库源码 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-06-20 - **Last Updated**: 2022-06-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README v1.0 服务提供者和服务消费者都使用http协议, 服务提供者使用tomcat容器处理请求,服务消费者通过httpClient将请求发送出去。 1. 服务提供者 服务提供者要做的事情可以总结为如下两点: 1) 本地注册到registry, 注册接口名和实现类的Class。 2) 使用remotemap 替代zookeeper 注册中心,注册接口名和服务地址列表 3) 使用http 协议启动tomcat容器接收请求,处理请求。 DispatcherServlet 接收请求-----> HttpServerHandler-----> response。 2. 服务消费者 1) 使用动态代理模式获取接口的代理对象, 使用代理对象调用目标方法 通过cglib代理模式生成目标对象的代理对象 执行invoker()方法,invoke()方法在调用目标方法时执行 根据接口名从使用remotemap拿到url列表,然后通过负载均衡策略选一个url进行调用 将Url和invocation发送到服务提供者处理。 返回result打印调用结果。 v 2.0 使用zookeeper注册中心缓存服务地址列表。 1. 服务提供者 在服务启动时将接口的Class Name和服务地址列表注册到zookeeper 2. 在invoke()方法里先通过zookeeper 获取到服务地址列表,然后通过负载均衡策略选一个url。 v 3.0 实现dubbo协议,使用netty server 来处理请求。 v 4.0 利用工厂设计模式优化代码结构。 dubbo 源码地址: