基于Netty实现的RPC框架,可以让客户端直接调用服务端方法就像调用本地方法一样简单。
推荐书籍:分布式服务框架原理与实践_李林锋
服务提供端Server向注册中心注册服务,服务消费者Client通过注册中心拿到服务相关信息,然后再通过网络请求服务提供端 Server。
- 基于BIO实现网络传输
- 实现Kyro、Json和Hessian三种序列化机制
- 客户端与服务端通信协议重新设计
- 基于jdk动态代理实现客户端代理
- 使用Netty(基于NIO)实现网络传输
- 使用注解自动注册服务
- 使用Zookeeper和Nacos作为管理相关服务地址信息的注册中心(zk支持单机模式、集群模式,nacos支持单机模式)
- Netty重用Channel避免重复连接服务端
- 增加Netty心跳机制
- 客户端调用远程服务的时候进行负载均衡(目前已实现随机、轮询和一致性哈希三种算法)
- 支持同一个接口多个实现类
- 使用SPI机制实现松耦合
- 实现gzip压缩机制
- 客户端重用相关服务地址信息列表
- 支持Protobuf序列化机制
- CompletableFuture实现异步服务调用
- 集成Spring,通过注解注册服务、消费服务
- 支持配置文件的方式进行配置
- 容错机制
- 兼容Http2.0协议
- 服务性能监控和报警中心(流量控制、服务熔断和降级等)