NET Core,跨平台的輕量級RPC


NET Core,跨平台的輕量級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. 跨平台

項目概況

image

開源地址: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傳輸

image

概述

平均用時:2601.6毫秒

平均每次用時:0.26毫秒

通過率:100%

Windows10+NETCoreApp1.0+ProtoBuffer協議+Simple傳輸

image

概述

平均用時:2625.4毫秒

平均每次用時:0.25毫秒

通過率:100%

Ubuntu16.04-x64+NETCoreApp1.0+JSON協議+Simple傳輸

image

概述

平均用時:3108.4毫秒

平均每次用時:0.31毫秒

通過率:100%

Ubuntu16.04-x64+NETCoreApp1.0+ProtoBuffer協議+Simple傳輸

image

概述

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM