一、fastCall基本介绍
- fastCall是一个基于Java语言的分布式RPC框架demo,供RPC初学者学习使用
- fastCall框架目前基于netty+zookeeper实现
- fastCall的设计架构主要参考了gRPC以及dubbo,分为客户端、服务端和注册中心,未来可能会加入服务治理监控中心,以及支持Restful API
二、fastCall RPC分布式框架的实现基础
- Call ID映射,在远程调用的过程中,每个方法都需要对应一个具有唯一性的ID,这个ID在客户端和服务端中都是唯一确定的,客户端在做远程调用时必须附上这个ID,fastCall框架使用方法签名作为ID
- 序列化和反序列化,在参数传递和结果返回的过程中需要将传输的数据进行序列化和反序列化,以字节流的形式进行传输,fastCall采用protocol buffer作为序列化方式
- 网络传输,使用一套网络传输协议进行网络传输,例如HTTP、TCP、UDP等,fastCall采用netty框架实现网络传输
- 分布式实现,fastCall采用ZooKeeper作为注册中心实现分布式,分布式集群中的所有服务都要在ZooKeeper中进行注册,向ZooKeeper提供IP地址、端口等一系列信息,当发送方发送请求时,会从ZooKeeper注册中心中获取服务提供方的IP、端口,再向服务提供方请求服务
三、目前已完成
- client、server、callcenter(注册中心)的基本功能实现
- 基于protobuf的序列化传输
- 最小活跃数负载均衡算法
- 服务器流量监控
四、未来待完成
- 基于事件响应的end point状态监控
- 扩展负载均衡算法
- 注册中心与服务治理监控中心解耦
- side car模式
- restful gateway
- 限流削峰工具
- 分布式锁
五、其他
- 该框架由我本人在携程集团实习期间业余时间编写,希望有更多的小伙伴能够一起交流技术心得,一起学习进步
- GitHub仓库地址:https://github.com/HelloWorld-Ian/fastCall
|