拥抱.NET Core,跨平台的轻量级RPC:Rabbit.Rpc
不久前發(fā)布了一篇博文“.NET輕量級(jí)RPC框架:Rabbit.Rpc”,當(dāng)初只實(shí)現(xiàn)了非常簡(jiǎn)單的功能,也羅列了之后的計(jì)劃,經(jīng)過幾天的不斷努力又為Rabbit.Rpc增加了一大波新特性,今天主要介紹下項(xiàng)目近況。
特性一覽
Apache License 2.0協(xié)議開源
支持客戶端負(fù)載均衡(提供了輪詢、隨機(jī)算法的實(shí)現(xiàn))
支持ZooKeeper和文件共享形式的服務(wù)協(xié)調(diào)
運(yùn)行時(shí)客戶端代理生成(基于Roslyn)
預(yù)生成客戶端代理
客戶端代理預(yù)生成(基于Roslyn)
抽象的編解碼器(提供了JSON、ProtoBuffer協(xié)議的實(shí)現(xiàn))
抽象的傳輸通道(提供了DotNetty與Cowboy.Sockets的移植實(shí)現(xiàn))
異常信息傳遞(服務(wù)端運(yùn)行時(shí)的本地異常可以傳遞至客戶端)
NET Core項(xiàng)目架構(gòu)
跨平臺(tái)
項(xiàng)目概況
開源地址:https://github.com/RabbitTeam/Rpc
Rabbit.Rpc(支持跨平臺(tái))
Rpc核心類庫,有如下功能:
服務(wù)Id生成
傳輸消息模型
類型轉(zhuǎn)換
服務(wù)路由抽象
序列化器抽象(默認(rèn)提供JSON序列化器)
傳輸抽象
編解碼器抽象(默認(rèn)提供JSON的編解碼器實(shí)現(xiàn))
客戶端運(yùn)行時(shí)(地址解析器、地址選擇器,遠(yuǎn)程調(diào)用服務(wù))
服務(wù)端運(yùn)行時(shí)(服務(wù)條目管理、服務(wù)執(zhí)行器、服務(wù)發(fā)現(xiàn)抽象、RpcServiceAttribute標(biāo)記服務(wù)發(fā)現(xiàn)實(shí)現(xiàn))
Rabbit.Rpc.ProxyGenerator(支持跨平臺(tái))
服務(wù)代理生成器,提供的功能:
服務(wù)代理實(shí)現(xiàn)生成
服務(wù)代理實(shí)例創(chuàng)建
extensions(相關(guān)擴(kuò)展)
Rabbit.Rpc.Codec.ProtoBuffer(支持跨平臺(tái))
ProtoBuffer協(xié)議的編解碼器實(shí)現(xiàn)。
Rabbit.Rpc.Coordinate.Zookeeper(支持跨平臺(tái))
基于ZooKeeper的服務(wù)路由管理。
Rabbit.Transport.DotNetty(暫不支持跨平臺(tái))
基于DotNetty的傳輸實(shí)現(xiàn)。
ps:官方以有將DotNetty支持NET Core的計(jì)劃,大伙可以再等等,待官方支持后,會(huì)盡快進(jìn)行適配。
Rabbit.Transport.Simple(支持跨平臺(tái))
由于DotNetty不支持跨平臺(tái)運(yùn)行,為了讓rpc能在其它平臺(tái)上跑通,故移植了“Cowboy.Sockets”實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的傳輸實(shí)現(xiàn)。
tools
Rabbit.Rpc.Tests
單元測(cè)試項(xiàng)目。
Rabbit.Rpc.ClientGenerator(支持跨平臺(tái))
預(yù)生產(chǎn)服務(wù)代理的工具,提供了如下功能:
生成服務(wù)代理實(shí)現(xiàn)代碼文件
生成服務(wù)代理實(shí)現(xiàn)程序集文件
性能測(cè)試
測(cè)試環(huán)境
OS | CPU | 內(nèi)存 | 硬盤 | 網(wǎng)絡(luò)環(huán)境 | 虛擬機(jī) |
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協(xié)議+Simple傳輸
概述
平均用時(shí):2601.6毫秒
平均每次用時(shí):0.26毫秒
通過率:100%
Windows10+NETCoreApp1.0+ProtoBuffer協(xié)議+Simple傳輸
概述
平均用時(shí):2625.4毫秒
平均每次用時(shí):0.25毫秒
通過率:100%
Ubuntu16.04-x64+NETCoreApp1.0+JSON協(xié)議+Simple傳輸
概述
平均用時(shí):3108.4毫秒
平均每次用時(shí):0.31毫秒
通過率:100%
Ubuntu16.04-x64+NETCoreApp1.0+ProtoBuffer協(xié)議+Simple傳輸
概述
平均用時(shí):3580.4毫秒
平均每次用時(shí):0.35毫秒
通過率:100%
ps:linux性能與windows上的性能有一些差距,不知道是不是虛擬機(jī)的原因,但有個(gè)有趣的現(xiàn)象,protobuffer在linux上的性能居然比json低,應(yīng)該是protobuffer庫的實(shí)現(xiàn)不夠優(yōu)秀。
測(cè)試代碼
https://github.com/RabbitTeam/Rpc/tree/master/src/examples/performances
下一步?
等待DotNetty組件支持NETCore,并進(jìn)行適配。
繼續(xù)寫Rabbit.Rpc相關(guān)的文章。
下一篇應(yīng)該是,如何在Ubuntu上運(yùn)行Rabbit.Rpc。
交流方式
QQ群:384413261(RabbitHub)
Email:majian159@live.com
相關(guān)文章:
ASP.NET Core 1.0 入門——了解一個(gè)空項(xiàng)目
ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)
.NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0簡(jiǎn)介
云服務(wù)器下ASP.NET Core 1.0環(huán)境搭建(包含mono與coreclr)
使用VS Code開發(fā)ASP.NET Core 應(yīng)用程序
dotnet run是如何啟動(dòng)asp.net core站點(diǎn)的
ASP.NET Core提供模塊化Middleware組件
“dotnet restore"和"dotnet run"都做了些什么?
探秘 dotnet run 如何運(yùn)行 .NET Core 應(yīng)用程序
.NET Portability Analyzer 已開源
ASP.NET Core的配置(1):讀取配置信息
ASP.NET Core的配置(2):配置模型詳解
.NET Core 1.0 RC2 歷險(xiǎn)之旅
使用VS Code開發(fā) 調(diào)試.NET Core 應(yīng)用程序
讓我們Core在一起:ASP.NET Core & .NET Core
.NET Core VS Code 環(huán)境配置
官方博客明確了 .NET Core RC2/RTM 時(shí)間表
.NET Core全新的配置管理[共9篇]
利用記事本創(chuàng)建一個(gè)ASP.NET Core RC2 MVC應(yīng)用
微軟.NET 正式劈腿成功,橫跨所有平臺(tái)
.NET Core 1.0 CentOS7 嘗試
解讀發(fā)布:.NET Core RC2 and .NET Core SDK Preview 1
[.NET Core].NET Core R2安裝及示例教程
ASP.NET Core 開發(fā)-中間件(Middleware)
結(jié)合Jexus + Kestrel 部署 asp.net core 生產(chǎn)環(huán)境
通過Jexus 部署 dotnetcore版本MusicStore 示例程序
ASP.NET Core 中文文檔 第一章 入門
用 Visual Studio Code 在 macOS 上創(chuàng)建首個(gè) ASP.NET Core 應(yīng)用程序
用 Visual Studio 和 ASP.NET Core MVC 創(chuàng)建首個(gè) Web API
用 Visual Studio 發(fā)布一個(gè) Azure 云 Web 應(yīng)用程序
ASP.NET Core MVC 與 Visual Studio 入門
第二章指南(4.2)添加 Controller
DotNet Core 介紹
asp.net core 中間件詳解及項(xiàng)目實(shí)戰(zhàn)
教你實(shí)踐ASP.NET Core Authorization(免看文檔教程)
asp.net core 使用 Redis 和 Protobuf 進(jìn)行 Session 緩存
asp.net core 中間件詳解及項(xiàng)目實(shí)戰(zhàn)
第二章 指南(4.3)添加 View
dotnet core開發(fā)體驗(yàn)之開始MVC
dotnet core 開發(fā)體驗(yàn)之Routing
聊聊ASP.NET Core默認(rèn)提供的這個(gè)跨平臺(tái)的服務(wù)器——KestrelServer
簡(jiǎn)析.NET Core 以及與 .NET Framework的關(guān)系
.NET Core 使用Dapper 操作MySQL
使用 CommandLineApplication 類創(chuàng)建專業(yè)的控制臺(tái)程序
簡(jiǎn)析 .NET Core 構(gòu)成體系
.NET Core也可以使用MongoDB了
.NET Core & ASP.NET Core 1.0在Redhat峰會(huì)上正式發(fā)布
.NET Core:面向未來的開源跨平臺(tái)開發(fā)技術(shù)
微軟說它深愛著Linux,現(xiàn)在它用行動(dòng)證明了
移植.NET Core計(jì)劃,整合各平臺(tái)變得更簡(jiǎn)單了!
ASP.NET Core 介紹
通過幾個(gè)Hello World感受.NET Core全新的開發(fā)體驗(yàn)
ASP.NET Core 運(yùn)行原理剖析1:初始化WebApp模版并運(yùn)行
.NET Core系列 : 1、.NET Core 環(huán)境搭建和命令行CLI入門
Asp.Net Core 發(fā)布和部署( MacOS + Linux + Nginx )
Asp.Net Core 發(fā)布和部署(Linux + Jexus )
學(xué)習(xí)ASP.NET Core,你必須了解無處不在的“依賴注入”
.NET Core應(yīng)用類型(Portable apps & Self-contained apps)
.NET Core 1.0發(fā)布:微軟開源跨平臺(tái)大布局序幕
ASP.NET Core 運(yùn)行原理剖析2:Startup 和 Middleware(中間件)
在Windows Server 2012 R2 Standard 部署 ASP.NET Core程序
ASP.NET Core 開發(fā)-Entity Framework (EF) Core 1.0 Database First
原文地址:http://www.cnblogs.com/ants/p/5652132.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注
贊賞
人贊賞
總結(jié)
以上是生活随笔為你收集整理的拥抱.NET Core,跨平台的轻量级RPC:Rabbit.Rpc的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core 开发-Enti
- 下一篇: .NET 框架兼容性简介