lrpc 是一种高性能,高可扩展性的Java RPC框架,RPC,即 Remote Procedure Call(远程过程调用),调用远程计算机上的服务,就像调用本地 方法一样。RPC可以很好的解耦系统,对于服务开发者来说,屏蔽了底层网络通信细节,从而更专注于业务自身逻辑实现。
此项目目前架构如图:
服务提供端 Server 向注册中心注册服务,服务消费者 Client 通过注册中心拿到服务相关信息,然后再通过网络请求服务提供端 Server。
- 注释较为详细,并在注释中添加了些知识点,适合阅读学习(实际项目上不建议写这么啰嗦的注释,代码尽量表明自己用意就好。)
- 客户端使用TCP长连接(在多次调用共享连接)
- TCP心跳连接检测
- 支持多种网络传输方式(支持基于javaIO方式的阻塞式传输,支持基于Netty的Reactor模型,推荐用后者)
- 支持流控
- 异步调用,支持Future机制,使用CompletableFuture接受服务提供端返回结果,优化了接收服务端返回值的过程
- 支持不同的load balance策略(目前实现了一种随机方式,其他方式待实现)
- 支持不同的序列化/反序列化(目前实现了Kryo方式,其他方式待实现)
- 运用了SPI机制,具有高扩展性,同时降低耦合性,可根据需要轻松改进功能
- 支持使用注解注册服务
- 支持使用注解进行服务消费
...