共计 1864 个字符,预计需要花费 5 分钟才能阅读完成。
阅读目录
- 特性一览
- 项目概况
- 下一步?
- 交流方式
不久前发布了一篇博文“.NET 轻量级 RPC 框架:Rabbit.Rpc”,当初只实现了非常简单的功能,也罗列了之后的计划,经过几天的不断努力又为 Rabbit.Rpc 增加了一大波新特性,今天主要介绍下项目近况。
特性一览
- Apache License 2.0 协议开源
- 支持客户端负载均衡(提供了轮询、随机算法的实现)
- 支持 ZooKeeper 和文件共享形式的服务协调
- 运行时客户端代理生成(基于 Roslyn)
- 预生成客户端代理
- 客户端代理预生成(基于 Roslyn)
- 抽象的编解码器(提供了 JSON、ProtoBuffer 协议的实现)
- 抽象的传输通道(提供了 DotNetty 与 Cowboy.Sockets 的移植实现)
- 异常信息传递(服务端运行时的本地异常可以传递至客户端)
- NET Core 项目架构
- 跨平台
项目概况
开源地址:https://github.com/RabbitTeam/Rpc
Rabbit.Rpc(支持跨平台)
Rpc 核心类库,有如下功能:
- 服务 Id 生成
- 传输消息模型
- 类型转换
- 服务路由抽象
- 序列化器抽象(默认提供 JSON 序列化器)
- 传输抽象
- 编解码器抽象(默认提供 JSON 的编解码器实现)
- 客户端运行时(地址解析器、地址选择器,远程调用服务)
- 服务端运行时(服务条目管理、服务执行器、服务发现抽象、RpcServiceAttribute 标记服务发现实现)
Rabbit.Rpc.ProxyGenerator(支持跨平台)
服务代理生成器,提供的功能:
- 服务代理实现生成
- 服务代理实例创建
extensions(相关扩展)
Rabbit.Rpc.Codec.ProtoBuffer(支持跨平台)
ProtoBuffer 协议的编解码器实现。
Rabbit.Rpc.Coordinate.Zookeeper(支持跨平台)
基于 ZooKeeper 的服务路由管理。
Rabbit.Transport.DotNetty(暂不支持跨平台)
基于 DotNetty 的传输实现。
ps: 官方以有将 DotNetty 支持 NET Core 的计划,大伙可以再等等,待官方支持后,会尽快进行适配。
Rabbit.Transport.Simple(支持跨平台)
由于 DotNetty 不支持跨平台运行,为了让 rpc 能在其它平台上跑通,故移植了“Cowboy.Sockets”实现了一个简单的传输实现。
tools
Rabbit.Rpc.Tests
单元测试项目。
Rabbit.Rpc.ClientGenerator(支持跨平台)
预生产服务代理的工具,提供了如下功能:
- 生成服务代理实现代码文件
- 生成服务代理实现程序集文件
性能测试
测试环境
OS | CPU | 内存 | 硬盘 | 网络环境 | 虚拟机 |
Windows 10 x64 | I7 3610QM | 16GB | SSD | 127.0.0.1 | 否 |
Ubuntu 16.04 x64 | I7 3610QM | 4GB | SSD | 127.0.0.1 | 是 |
Windows10+NETCoreApp1.0+JSON 协议 +Simple 传输
概述
平均用时:2601.6 毫秒
平均每次用时:0.26 毫秒
通过率:100%
Windows10+NETCoreApp1.0+ProtoBuffer 协议 +Simple 传输
概述
平均用时:2625.4 毫秒
平均每次用时:0.25 毫秒
通过率:100%
Ubuntu16.04-x64+NETCoreApp1.0+JSON 协议 +Simple 传输
概述
平均用时:3108.4 毫秒
平均每次用时:0.31 毫秒
通过率:100%
Ubuntu16.04-x64+NETCoreApp1.0+ProtoBuffer 协议 +Simple 传输
概述
平均用时:3580.4 毫秒
平均每次用时:0.35 毫秒
通过率:100%
ps:linux 性能与 windows 上的性能有一些差距,不知道是不是虚拟机的原因,但有个有趣的现象,protobuffer 在 linux 上的性能居然比 json 低,应该是 protobuffer 库的实现不够优秀。
测试代码
https://github.com/RabbitTeam/Rpc/tree/master/src/examples/performances
下一步?
等待 DotNetty 组件支持 NETCore,并进行适配。
继续写 Rabbit.Rpc 相关的文章。
下一篇应该是, 如何在 Ubuntu 上运行 Rabbit.Rpc。http://www.linuxidc.com/Linux/2016-11/137009.htm
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-11/137008.htm
