@@ -24,18 +24,18 @@ category: 知识星球
24
24
25
25
** 为什么要把可优化点列出来?** 主要是想给哪些希望优化这个 RPC 框架的小伙伴一点思路。欢迎大家 fork 本仓库,然后自己进行优化。
26
26
27
- - [x] ** 使用 Netty(基于 NIO)替代 BIO 实现网络传输; **
28
- - [x] ** 使用开源的序列化机制 Kyro(也可以用其它的)替代 JDK 自带的序列化机制; **
29
- - [x] ** 使用 Zookeeper 管理相关服务地址信息**
30
- - [x] Netty 重用 Channel 避免重复连接服务端
31
- - [x] 使用 ` CompletableFuture ` 包装接受客户端返回结果(之前的实现是通过 ` AttributeMap ` 绑定到 Channel 上实现的) 详见: [ 使用 CompletableFuture 优化接受服务提供端返回结果 ] ( ./docs/使用CompletableFuture优化接受服务提供端返回结果.md )
27
+ - [x] ** 使用 Netty(基于 NIO)替代 BIO 实现网络传输; **
28
+ - [x] ** 使用开源的序列化机制 Kyro(也可以用其它的)替代 JDK 自带的序列化机制; **
29
+ - [x] ** 使用 Zookeeper 管理相关服务地址信息; **
30
+ - [x] ** Netty 重用 Channel 避免重复连接服务端; **
31
+ - [x] ** 使用 ` CompletableFuture ` 包装接受客户端返回结果** (之前的实现是通过 ` AttributeMap ` 绑定到 Channel 上实现的);
32
32
- [x] ** 增加 Netty 心跳机制** : 保证客户端和服务端的连接不被断掉,避免重连。
33
33
- [x] ** 客户端调用远程服务的时候进行负载均衡** :调用服务的时候,从很多服务地址中根据相应的负载均衡算法选取一个服务地址。ps:目前实现了随机负载均衡算法与一致性哈希算法。
34
34
- [x] ** 处理一个接口有多个类实现的情况** :对服务分组,发布服务的时候增加一个 group 参数即可。
35
- - [x] ** 集成 Spring 通过注解注册服务**
36
- - [x] ** 集成 Spring 通过注解进行服务消费** 。参考: [ PR # 10 ] ( https://github.com/Snailclimb/guide-rpc-framework/pull/10 )
35
+ - [x] ** 集成 Spring 通过注解注册服务; **
36
+ - [x] ** 集成 Spring 通过注解进行服务消费; **
37
37
- [x] ** 增加服务版本号** :建议使用两位数字版本,如:1.0,通常在接口不兼容时版本号才需要升级。为什么要增加服务版本号?为后续不兼容升级提供可能,比如服务接口增加方法,或服务模型增加字段,可向后兼容,删除方法或删除字段,将不兼容,枚举类型新增字段也不兼容,需通过变更版本号升级。
38
- - [x] ** 对 SPI 机制的运用**
38
+ - [x] ** 对 SPI 机制的运用; **
39
39
- [ ] ** 增加可配置比如序列化方式、注册中心的实现方式,避免硬编码** :通过 API 配置,后续集成 Spring 的话建议使用配置文件的方式进行配置
40
40
- [x] ** 客户端与服务端通信协议(数据包结构)重新设计** ,可以将原有的 ` RpcRequest ` 和 ` RpcReuqest ` 对象作为消息体,然后增加如下字段(可以参考:《Netty 入门实战小册》和 Dubbo 框架对这块的设计):
41
41
- ** 魔数** : 通常是 4 个字节。这个魔数主要是为了筛选来到服务端的数据包,有了这个魔数之后,服务端首先取出前面四个字节进行比对,能够在第一时间识别出这个数据包并非是遵循自定义协议的,也就是无效数据包,为了安全考虑可以直接关闭连接以节省资源。
0 commit comments