您的位置:首页 > 编程语言 > Java开发

发现一款非常小巧的RPC

2017-01-11 19:57 204 查看
作者:iseeyou

链接:https://www.zhihu.com/question/25536695/answer/113449098

来源:知乎

著作权归作者所有,转载请联系作者获得授权。

RPC是系统间的一种通信方式,系统间常用的通信方式还有http,webservice,rpc等,一般来讲rpc比http和webservice性能高一些,常见的RPC框架有:thrift,Finagle,dubbo,grpc,json-rpc等。

一个通用的网络RPC框架,它应该包括如下功能:

1.具有服务的分层设计,借鉴Future/Service/Filter概念

2.具有网络的分层设计,区分协议层、数据层、传输层、连接层

3.独立的可适配的codec层,可以灵活增加HTTP,Memcache,Redis,MySQL/JDBC,Thrift等协议的支持。

4.将多年各种远程调用High availability的经验融入在实现中,如负载均衡,failover,多副本策略,开关降级等。

5.通用的远程调用实现,采用async方式来减少业务服务的开销,并通过future分离远程调用与数据流程的关注。

6.具有状态查看及统计功能

7.当然,最终要的是,具备以下通用的远程容错处理能力,超时、重试、负载均衡、failover……

QiuRPC是一个采用JAVA实现的小巧的RPC框架,一共3K多行代码,已在github开源出来,项目地址为:github地址,实现了RPC的基本功能,开发者也可以自定义扩展,可以供大家学习探讨或者在小项目中使用,目前QiuRPC具有如下特点:

1. 服务端基于注解,启动时自动扫描所有RPC实现,基本零配置

2. 客户端实现Filter机制,可以自定义Filter

3. 基于netty的Reactor IO多路复用网络模型

4. 数据层提供protobuff和hessian的实现,可以扩展ISerializer接口自定义实现其他

5. 负载均衡算法采用最少活跃调用数算法,可以扩展ILoadBlance接口自定义实现其他

6. 客户端支持服务的同步或异步调用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  github java RPC
相关文章推荐