您的位置:首页 > 其它

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

2016-07-09 06:40 585 查看
不久前发布了一篇博文“.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(支持跨平台)

预生产服务代理的工具,提供了如下功能:
生成服务代理实现代码文件

生成服务代理实现程序集文件

性能测试

测试环境
OSCPU内存硬盘网络环境虚拟机
Windows 10 x64I7 3610QM16GBSSD127.0.0.1
Ubuntu 16.04 x64I7 3610QM4GBSSD127.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

交流方式

QQ群:384413261(RabbitHub)
Email:majian159@live.com
相关文章:
ASP.NET Core 1.0 入门——了解一个空项目

ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)

.NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0简介

云服务器下ASP.NET Core 1.0环境搭建(包含mono与coreclr)

使用VS Code开发ASP.NET Core 应用程序

dotnet run是如何启动asp.net core站点的

ASP.NET Core提供模块化Middleware组件

“dotnet restore"和"dotnet run"都做了些什么?

探秘 dotnet run 如何运行 .NET Core 应用程序

.NET Portability Analyzer 已开源

ASP.NET Core的配置(1):读取配置信息

ASP.NET Core的配置(2):配置模型详解

.NET Core 1.0 RC2 历险之旅

使用VS Code开发 调试.NET Core 应用程序

让我们Core在一起:ASP.NET Core & .NET Core

.NET Core VS Code 环境配置

官方博客明确了 .NET Core RC2/RTM 时间表

.NET Core全新的配置管理[共9篇]

利用记事本创建一个ASP.NET Core RC2 MVC应用

微软.NET 正式劈腿成功,横跨所有平台

.NET Core 1.0 CentOS7 尝试

解读发布:.NET Core RC2 and .NET Core SDK Preview 1

[.NET Core].NET Core R2安装及示例教程

ASP.NET Core 开发-中间件(Middleware)

结合Jexus + Kestrel 部署 asp.net core 生产环境

通过Jexus 部署 dotnetcore版本MusicStore 示例程序

ASP.NET Core 中文文档 第一章 入门

用 Visual Studio Code 在 macOS 上创建首个 ASP.NET Core 应用程序

用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API

用 Visual Studio 发布一个 Azure 云 Web 应用程序

ASP.NET Core MVC 与 Visual Studio 入门

第二章指南(4.2)添加 Controller

DotNet Core 介绍

asp.net core 中间件详解及项目实战

教你实践ASP.NET Core Authorization(免看文档教程)

asp.net core 使用 Redis 和 Protobuf 进行 Session 缓存

asp.net core 中间件详解及项目实战

第二章 指南(4.3)添加 View

dotnet core开发体验之开始MVC

dotnet core 开发体验之Routing

聊聊ASP.NET Core默认提供的这个跨平台的服务器——KestrelServer

简析.NET Core 以及与 .NET Framework的关系

.NET Core 使用Dapper 操作MySQL

使用 CommandLineApplication 类创建专业的控制台程序

简析 .NET Core 构成体系

.NET Core也可以使用MongoDB了

.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布

.NET Core:面向未来的开源跨平台开发技术

微软说它深爱着Linux,现在它用行动证明了

移植.NET Core计划,整合各平台变得更简单了!

ASP.NET Core 介绍

通过几个Hello World感受.NET Core全新的开发体验

ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行

.NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

Asp.Net Core 发布和部署( MacOS + Linux + Nginx )

Asp.Net Core 发布和部署(Linux + Jexus )

学习ASP.NET Core,你必须了解无处不在的“依赖注入”

.NET Core应用类型(Portable apps & Self-contained apps)

.NET Core 1.0发布:微软开源跨平台大布局序幕

ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)

在Windows Server 2012 R2 Standard 部署 ASP.NET Core程序

ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First

原文地址:http://www.cnblogs.com/ants/p/5652132.html

.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注



赞赏

人赞赏
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: