# yang_rpc **Repository Path**: Thinkingcao/yang_rpc ## Basic Information - **Project Name**: yang_rpc - **Description**: 一个简易的RPC框架 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2024-08-01 - **Last Updated**: 2024-08-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简易RPC框架 #### 介绍 基于 Java + Etcd + Vert.x + 自定义协议实现。开发者可以引入 Spring Boot Starter,通过注解和配置文件快速使用框架,像调用本地方法一样轻松调用远程服务;还支持通过 SPI 机制动态扩展序列化器、负载均衡器、重试和容错策略等。 #### 设计架构图 ![输入图片说明](image.png) 虚线部分就是RPC需要提供的模块和能力。 #### 目录结构 ##### 1. 根目录 --> yang_rpc ##### 2. 通用类模块 --> example_common ##### 3. 消费者 --> example_consumer ##### 4. 生产者 --> example_producer ##### 5. RPC服务注册,服务器,代理等功能模块 --> yang_rpc_easy #### 代码流程的理解 1. 以主函数形式启动example_producer,注册服务,并且启动web服务,执行VertxHttpServer的doStart()方法 --> 该方法创建了Vert.x 实例以及HTTP服务器,并且监听服务器端口处理请求。 2. 以主函数形式启动example_consumer , 通过ServiceProxyFactory来获取服务代理对象userService ,在userService调用getUser()的方法的时候,会改为调用ServiceProxy中的invoke()方法,在invoke()方法中,进行请求发送,响应的操作。 3. 在invoke()中发送请求到服务器的8080端口,在请求处理器HttpServerHandler中,在注册中心获取服务的实现类,通过java的反射机制进行调用,处理请求,并作出响应。 4. 结果返回给invoke()方法,invoke()再响应复制给User对象,这样,一个简易版rpc的流程就跑通了 #### 扩展设计 该项目仅仅是个极其简单的RPC框架,需要做到功能俱全,完善,还需要做以下设计 ##### 1. 服务注册发现 ##### 2. 负载均衡 ##### 3. 容错机制 ##### 4. 其他