参考项目链接:https://github.com/Snailclimb/guide-rpc-framework
这是一个基于 Netty+Kyro+Zookeeper 实现的 RPC 框架,主要是为了检验自己对RPC的掌握程度
- 注册中心 :注册中心主要用来保存相关的信息比如远程方法的地址,这里使用Zookeeper管理相关服务地址信息。
- 网络传输 :这里使用 NIO 的 Netty 框架来进行网络传输,Netty 重用 Channel 避免重复连接服务端。
- 序列化 :由于JDK 自带的序列化效率低并且有安全漏洞。 所以这里使用开源的序列化机制 Kyro替代 JDK 自带的序列化机制。
- 动态代理 :使用动态代理屏蔽远程接口调用的细节比如网络传输。
- 负载均衡 :客户端调用远程服务的时候进行负载均衡,这里使用随机负载均衡算法。
- 心跳机制 :增加 Netty 心跳机制保证客户端和服务端的连接不被断掉,避免重连。
- 集成 Spring 通过注解注册服务。
- 使用注解进行服务消费
服务提供端 Server 向注册中心注册服务,服务消费者 Client 通过注册中心拿到服务相关信息,然后再通过网络请求服务提供端 Server。