/rpc-java

Primary LanguageJava

参考项目链接:https://github.com/Snailclimb/guide-rpc-framework

介绍

这是一个基于 Netty+Kyro+Zookeeper 实现的 RPC 框架,主要是为了检验自己对RPC的掌握程度

基本的 RPC 框架设计

  1. 注册中心 :注册中心主要用来保存相关的信息比如远程方法的地址,这里使用Zookeeper管理相关服务地址信息。
  2. 网络传输 :这里使用 NIO 的 Netty 框架来进行网络传输,Netty 重用 Channel 避免重复连接服务端。
  3. 序列化 :由于JDK 自带的序列化效率低并且有安全漏洞。 所以这里使用开源的序列化机制 Kyro替代 JDK 自带的序列化机制。
  4. 动态代理 :使用动态代理屏蔽远程接口调用的细节比如网络传输。
  5. 负载均衡 :客户端调用远程服务的时候进行负载均衡,这里使用随机负载均衡算法。
  6. 心跳机制 :增加 Netty 心跳机制保证客户端和服务端的连接不被断掉,避免重连。
  7. 集成 Spring 通过注解注册服务。
  8. 使用注解进行服务消费

目前架构

服务提供端 Server 向注册中心注册服务,服务消费者 Client 通过注册中心拿到服务相关信息,然后再通过网络请求服务提供端 Server。