Skip to content

Commit

Permalink
polish readme
Browse files Browse the repository at this point in the history
  • Loading branch information
ipipman committed Apr 21, 2024
1 parent e155697 commit f8da498
Showing 1 changed file with 28 additions and 24 deletions.
52 changes: 28 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,43 +2,46 @@


### 引言
RPC概念与价值:简述远程过程调用(RPC)的基本概念、工作原理及其在构建分布式系统中的重要作用。
手写RPC框架的意义:探讨自研RPC框架对于深入理解分布式通信原理、定制化需求满足、技术栈掌握提升等方面的价值。
RPC概念与价值:简述远程过程调用(RPC)的基本概念、工作原理及其在构建分布式系统中的重要作用。 <br>
手写RPC框架的意义:探讨自研RPC框架对于深入理解分布式通信原理、定制化需求满足、技术栈掌握提升等方面的价值。<br>

### 总体设计
架构概览:介绍RPC框架的整体架构,包括客户端、服务端、网络传输层、序列化层、注册中心、负载均衡策略等核心组件及其相互关系。
技术选型:阐述所选用的编程语言、网络库、序列化库、注册中心实现、日志库、测试工具等关键依赖。
**架构概览**:RPC框架的整体架构,包括客户端、服务端、网络传输层、序列化层、注册中心、负载均衡策略等核心组件及其相互关系。 <br>
**技术选型**:阐述所选用的编程语言(Java)、网络库、序列化库、注册中心实现、日志库、测试工具等关键依赖。

### 核心功能实现
1. 客户端
- 服务发现:说明如何通过注册中心获取服务列表,以及实现服务订阅与更新机制。
- 请求发送:阐述构建RPC请求、选择服务提供者、封装网络请求、发送请求的具体步骤。
- 响应处理:介绍响应接收、反序列化、异常处理与结果返回的过程。
- **服务发现**:如何通过注册中心获取服务列表,以及实现服务订阅与更新机制。
- **请求发送**:构建RPC请求、选择服务提供者、封装网络请求、发送请求的具体步骤。项目通过Java8动态代理, 代理了Spring中被标记了@RpcConsumer的Bean,实现远程访问
- **响应处理**:响应接收、反序列化、异常处理与结果返回的过程。
2. 服务端
- 服务注册:讲解服务提供者如何向注册中心注册服务,包括服务信息的定义与发布。
- 请求接收:描述服务端如何监听并接收客户端请求,包括网络端口绑定、请求解析等环节。
- 请求处理与响应:详解服务端对请求的业务逻辑处理、结果序列化及响应发送过程。
- **服务注册**:服务提供者如何向注册中心注册服务,包括服务信息的定义与发布。
- **请求接收**:服务端如何监听并接收客户端请求,包括网络端口绑定、请求解析等环节。
- **请求处理与响应**:服务端对请求的业务逻辑处理、结果序列化及响应发送过程。项目通过反射, 找出被标记@RpcProvider的接口实现类,通过方法签名和反序列化参数寻找并调用
3. 网络传输层
- 协议设计:定义RPC通信协议,包括消息头、消息体结构、错误码等规范。
- 网络通信:采用何种网络库实现HTTP/TCP/UDP通信,如何处理连接管理、心跳检测、超时重试等问题。
- **协议设计**:定义RPC通信协议,包括消息头、消息体结构、错误码等规范。
- **网络通信**:采用何种网络库实现HTTP/TCP/UDP通信,如何处理连接管理、心跳检测、超时重试等问题。项目采用HTTP做为网络通信,框架采用SpringWeb、Netty两种方式,可以根据配置来选择
4. 序列化层
- 序列化方案:选择合适的序列化库(如JSON、Protobuf、Thrift等),描述其优点及在框架中的应用。
- 编解码实现:详细说明请求与响应数据的编码、解码逻辑。
- **序列化方案**:选择合适的序列化库(如JSON、Protobuf、Thrift等),描述其优点及在框架中的应用。项目采用JSON做为序列化协议, 并手写支持了大部分Pojo的对象转换
- **编解码实现**:请求与响应数据的编码、解码逻辑。
5. 注册中心
- 注册中心选型:介绍采用的注册中心类型(如Zookeeper、Etcd、Consul等)及其特性。
- 服务注册与发现机制:详细描述服务提供者注册服务、消费者发现服务的具体实现。
6. 负载均衡
- 负载均衡策略:列举支持的负载均衡算法(如轮询、随机、权重、一致性哈希等),并解释其实现原理。
- 策略选择与实现:描述如何在框架中集成并切换不同的负载均衡策略。
- **注册中心选型**:可采用的注册中心类型(如Zookeeper、Etcd、Consul等)及其特性。项目采用Zookeeper、registry-man (由作者实现的AP模型注册中心)。
- **服务注册与发现机制**:服务提供者注册服务、消费者发现服务的具体实现。
6. 负载均衡
- **负载均衡策略**:列举支持的负载均衡算法(如轮询、随机、权重、一致性哈希等),并解释其实现原理。
- **策略选择与实现**:框架中集成并切换不同的负载均衡策略。
7. 配置中心
- **配置下中心选型**:可以采用的配置中心(如Nacos、Apollo等)及其应用场景。项目采用Apollo做为配置中心,自研配置中心还在研发中。


### 高级特性与优化
1. 服务治理:介绍熔断、降级、限流、隔离等服务治理功能的设计与实现。
2. 容错与高可用:探讨如何实现服务端的故障检测、自动恢复、主备切换,以及客户端的重试、失败快速反馈等高可用机制。
3. 性能优化:分享在网络传输、序列化效率、并发处理等方面的优化实践与技巧。
1. **服务治理**:介绍熔断、降级、限流、隔离等服务治理功能的设计与实现。
2. **容错与高可用**:探讨如何实现服务端的故障检测、自动恢复、主备切换,以及客户端的重试、失败快速反馈等高可用机制。
3. **性能优化**:分享在网络传输、序列化效率、并发处理等方面的优化实践与技巧。

### 测试与部署
1. 单元测试与集成测试:描述如何编写覆盖各模块功能的测试用例,以及进行端到端的集成测试。
2. 部署与运维:提供框架的部署指南,包括环境准备、配置说明、服务启动与停止等操作步骤,以及日志监控、故障排查等运维建议。
1. **单元测试与集成测试**:描述如何编写覆盖各模块功能的测试用例,以及进行端到端的集成测试。
2. **部署与运维**:提供框架的部署指南,包括环境准备、配置说明、服务启动与停止等操作步骤,以及日志监控、故障排查等运维建议。


### 关于Consumer的配置
Expand Down Expand Up @@ -97,6 +100,7 @@ RPC概念与价值:简述远程过程调用(RPC)的基本概念、工作




### Provider Server IO框架的选择与性能的评估

### 1.Provider Server 性能分布火焰图
Expand Down

0 comments on commit f8da498

Please sign in to comment.