ZeroMQ+Gevent RPC Implementation for Google Protobufs Services
Python implemenation of GoogleProtobuf Services(RPC). Uses ZeroMQ for transport layer. Server uses Gevent for threading.
https://developers.google.com/protocol-buffers/docs/proto#services
Requires:
- python2.7
- Virtualenv 1.11.6
- protoc 2.5.0 (https://code.google.com/p/protobuf/downloads/list)
Build:
make all
Build Protobufs:
This is done as part of make all
but to explicitly build protobufs:
make pb2_compile
Unit Tests:
make test
Run Test Server:
make test-server
Run Test Client:
make test-client
Build a python egg:
make package
Performance Results:
Ping-Pong hammer tests for 10K requets.
Environment: EC2, c1.medium instance, ubuntu-precise image:
See: protobuf-rpc/tests/load_test/hammer.py
make load-server-rpc &
sleep 1
make hammer
HTTP:
Total Elapsed time (sec): 24.0618028641
Average Request time (ms): 2.40618028641
RPC Direct Connections:
Total Elapsed time (sec): 2.44900202751
Average Request time (ms): 0.244900202751
RPC with ELB:
Total Elapsed time (sec): 3.47903800011
Average Request time (ms): 0.347903800011