分享

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

 weijianian 2016-08-09


来源:KAnts

链接:http://www.cnblogs.com/ants/p/5652132.html


特性一览


  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. 跨平台


    项目概况



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


    Rabbit.Rpc(支持跨平台)


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


    1. 服务Id生成


    2. 传输消息模型


    3. 类型转换


    4. 服务路由抽象


    5. 序列化器抽象(默认提供JSON序列化器)


    6. 传输抽象


    7. 编解码器抽象(默认提供JSON的编解码器实现)


    8. 客户端运行时(地址解析器、地址选择器,远程调用服务)


    9. 服务端运行时(服务条目管理、服务执行器、服务发现抽象、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


      本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
      转藏 分享 献花(0

      0条评论

      发表

      请遵守用户 评论公约

      类似文章 更多