发现一款非常小巧的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. 客户端支持服务的同步或异步调用
链接: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. 客户端支持服务的同步或异步调用
相关文章推荐
- SQLite数据库是一款非常小巧的嵌入式开源数据库软件
- 刚刚发现一款非常好玩的小游戏耶~~人人网版农场
- 为大家推荐一款非常不错的MarkDown编辑器——stackEdit
- karloop介绍--hello world大家好,今天为大家介绍一款非常轻量级的的web开发框架,karloop框架。使用python开发 首先我们下载karloop源码进行安装。 源码地址 下载成
- 【问题记录】uwsgi部署并启动俩个几乎一样的python flask web app,发现有一个app响应时间非常长
- 毒霸不经意的提醒,才发现Google非常厚道可靠……
- 一款非常实用的在线代码分享站点
- CuteEditor是一款功能非常强大的Asp.net HTML编辑器
- 我的浏览器1.0 [非常小巧的浏览器, 有地址加一减一的功能]
- 发现一款超级好用的办公软件啊啊啊啊
- 持续集成并不能消除 Bug,而是让它们非常容易发现和改正(转)
- 【PHPRS】一款小巧精悍的PHP RESTful开源框架
- 在看官方的例子时候由一个grid实例,在每一行之前有个加号,展开可以显示内容,在实际应用中还是非常有用的,照搬例子的代码,发现老是提示对象不存在,查阅资料后发现是没有加载插件,这里和大家分享下Ext.grid.RowExpander插件的使用,
- 一款非常炫酷的CSS3垂直手风琴菜单
- FileCut一款小巧易用但功能强大的大文件切割程序
- aspjpeg是一款非常强大的图片处理组件
- 推荐一款绿色小巧的超大文本文件查看编辑器
- 一款能帮助程序员发现问题的软件
- 一款小巧的截图软件-xmoon snap
- 搜索3天没有发现好的解决方案,一个非常棘手的问题