Description
Background:
Apache IoTDB uses Thrift as its RPC layer. However, there are some voices in the community: do we need to support gPRC?
We noticed:
- thrift has to apply memory for each RPC call (get data from the network into a byte array, and then convert the bytes to objects), and it is hard to control the whole memory cost for large RPC.
- thrift connection may be broken when there are too many concurrent connections.
- thrift does not support stream mode
So, we'd like to know whether gRPC is better.
Tasks:
- implement IoTDB's RPC layer using gRPC.
- including the sync/async mode
- sub-tasks: the C++, c#, python API wrappers are also desired.
- have a performance test
- throughput, memory cost and jitter, etc..
- write a report to compare them
References:
iotdb's current thrift RPC specification:
- https://github.com/apache/iotdb/tree/master/thrift
- there are some on-going thrift apis: thrift-datanode, thrift-confignode, thrift-cluster, thrift-sync