Rabbit RPC
A lightweight cross-platform RPC.
Features
- Apache License 2.0 protocol open source
- Supports client load balancing (polling and random)
- Support ZooKeeper and file sharing the service coordination
- Runtime client proxy generation (based Roslyn)
- Pre-generated client agent (based Roslyn)
- Abstract codec (JSON and ProtoBuffer)
- Abstract transmission channel (DotNetty)
- Exception information transfer (Local exceptions to the server runtime can be passed to the client)
- NET Core Project structure
- Cross-platform
Overview
Rabbit.Rpc
- Rpc core class library, has the following functions:
- Service Id generation
- Transfer the message model
- Type conversion
- Service routing abstraction
- Serializer abstraction (the default provides JSON serializer)
- Transport abstraction
- Codec abstraction (default provides JSON codec implementation)
- Client runtime (address resolver, address selector, remote call service)
- Service-side runtime (service entry management, service executor, service discovery abstraction, RpcServiceAttribute tagging service discovery implementation)
Rabbit.Rpc.ProxyGenerator
Service Agent Builder, provides features:
- Service agent implementation generation
- Service agent instance creation
extensions
Rabbit.Rpc.Codec.ProtoBuffer
ProtoBuffer protocol codec implementation.
Rabbit.Rpc.Coordinate.Zookeeper
Service Routing Management Based on ZooKeeper.
Rabbit.Transport.DotNetty
Implementation of DotNetty Transmission.
tools
Rabbit.Rpc.Tests
Unit test project.
Rabbit.Rpc.ClientGenerator
Pre-production service agent tool, provides the following functions:
- Generate the service proxy implementation code file
- Generate the service agent to implement the assembly file
Performance Testing
Test environment
OS |
CPU |
Memory |
disk |
network |
VM |
Windows 10 x64 |
I7 3610QM |
16GB |
SSD |
127.0.0.1 |
no |
Ubuntu 16.04 x64 |
I7 3610QM |
4GB |
SSD |
127.0.0.1 |
yes |
Windows10 + NETCoreApp1.0 + JSON protocol
loop 10,000
first 2626ms
second 2597ms
third 2581ms
Windows10 + NETCoreApp1.0 + ProtoBuffer protocol
loop 10,000
first 2567ms
second 2617ms
third 2474ms
Ubuntu16.04-x64 + NETCoreApp1.0 + JSON protocol
loop 10,000
first 3205ms
second 3252ms
third 2837ms
Ubuntu16.04-x64 + NETCoreApp1.0 + ProtoBuffer protocol
loop 10,000
first 3391ms
second 3391ms
third 3574ms
related articles
communication