阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

拥抱.NET Core,跨平台的轻量级RPC:Rabbit.Rpc

159次阅读
没有评论

共计 1864 个字符,预计需要花费 5 分钟才能阅读完成。

阅读目录

  • 特性一览
  • 项目概况
  • 下一步?
  • 交流方式

不久前发布了一篇博文“.NET 轻量级 RPC 框架:Rabbit.Rpc”,当初只实现了非常简单的功能,也罗列了之后的计划,经过几天的不断努力又为 Rabbit.Rpc 增加了一大波新特性,今天主要介绍下项目近况。

特性一览

  1. Apache License 2.0 协议开源
  2. 支持客户端负载均衡(提供了轮询、随机算法的实现)
  3. 支持 ZooKeeper 和文件共享形式的服务协调
  4. 运行时客户端代理生成(基于 Roslyn)
  5. 预生成客户端代理
  6. 客户端代理预生成(基于 Roslyn)
  7. 抽象的编解码器(提供了 JSON、ProtoBuffer 协议的实现)
  8. 抽象的传输通道(提供了 DotNetty 与 Cowboy.Sockets 的移植实现)
  9. 异常信息传递(服务端运行时的本地异常可以传递至客户端)
  10. NET Core 项目架构
  11. 跨平台

项目概况

拥抱.NET Core,跨平台的轻量级 RPC:Rabbit.Rpc

开源地址:https://github.com/RabbitTeam/Rpc

Rabbit.Rpc(支持跨平台)

Rpc 核心类库,有如下功能:

  1. 服务 Id 生成
  2. 传输消息模型
  3. 类型转换
  4. 服务路由抽象
  5. 序列化器抽象(默认提供 JSON 序列化器)
  6. 传输抽象
  7. 编解码器抽象(默认提供 JSON 的编解码器实现)
  8. 客户端运行时(地址解析器、地址选择器,远程调用服务)
  9. 服务端运行时(服务条目管理、服务执行器、服务发现抽象、RpcServiceAttribute 标记服务发现实现)

Rabbit.Rpc.ProxyGenerator(支持跨平台)

服务代理生成器,提供的功能:

  1. 服务代理实现生成
  2. 服务代理实例创建

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(支持跨平台)

预生产服务代理的工具,提供了如下功能:

  1. 生成服务代理实现代码文件
  2. 生成服务代理实现程序集文件

性能测试

测试环境

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 传输

拥抱.NET Core,跨平台的轻量级 RPC:Rabbit.Rpc

概述

平均用时:2601.6 毫秒

平均每次用时:0.26 毫秒

通过率:100%

Windows10+NETCoreApp1.0+ProtoBuffer 协议 +Simple 传输

拥抱.NET Core,跨平台的轻量级 RPC:Rabbit.Rpc

概述

平均用时:2625.4 毫秒

平均每次用时:0.25 毫秒

通过率:100%

Ubuntu16.04-x64+NETCoreApp1.0+JSON 协议 +Simple 传输

拥抱.NET Core,跨平台的轻量级 RPC:Rabbit.Rpc

概述

平均用时:3108.4 毫秒

平均每次用时:0.31 毫秒

通过率:100%

Ubuntu16.04-x64+NETCoreApp1.0+ProtoBuffer 协议 +Simple 传输

拥抱.NET Core,跨平台的轻量级 RPC:Rabbit.Rpc

概述

平均用时: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

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计1864字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中