A light-weight RPC implementation of Google's protobuf RPC framework.
Wiki: https://github.com/baidu/sofa-pbrpc/wiki
- High performace.
- Easy to use. Refer to sample code in './sample'.
- Supports sync call and async call. Refer to './sample/echo'.
- Supports three level (service/method/request) timeout. Refer to './sample/timeout_sample'.
- Supports transparent compression. Refer to './sample/compress_sample'.
- Supports mock test. Refer to './sample/mock_sample'.
- Supports network flow control.
- Supports auto connecting and reconnecting.
- Supports keep alive time of idle connections.
- Supports statistics for profiling.
- Supports multi-server load balance and fault tolerance.
- Supports http protocol.
- Provides web monitor.
- Provides python client library.
- Supports opentracing with Jaeger backend
This lib depends on boost(only need header), protobuf3, snappy and zlib:
- boost - http://www.boost.org/
- protobuf - http://code.google.com/p/protobuf/
- snappy - http://code.google.com/p/snappy/
- zlib - http://zlib.net/
ATTENTION: boost header is only needed when compiling the lib, but is not needed for user code.
Extrally, './unit-test' and './sample/mock_sample' also depends on gtest:
- git clone https://github.com/billowqiu/sofa-pbrpc.git
- cd sofa-pbrpc
- git submodule update --init
- mkdir _build
- cd _build && cmake ..
- make
For sample code, please refer to './sample' and the wiki Quick Start.
For Profiling feature, please refer to the wiki Profiling.
For performace details, please refer to the wiki Performance.
For implementation details, please refer to the wiki and file doc/sofa-pbrpc-document.md.
- Follow this guide
- cd _build
- cp ../sample/echo/config.yml .
- ./echoserver
- Open an new terminal, ./echoclient_async
- Open http://127.0.0.1:16686