Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Explore new serialization library used for communication between horaedb-server #1515

Closed
jiacai2050 opened this issue Apr 18, 2024 · 3 comments
Labels
feature New feature or request

Comments

@jiacai2050
Copy link
Contributor

Describe This Problem

Our RemoteEngineService use gRPC to communicate between different servers, and adopt protobuf as encode/decode methods, protobuf is not a very high performance library, and we observe high CPU usage in our production env.

Proposal

Explore new serialization library, which support following features:

  • Zero copy, which means its wire format is the same as memory layout.
  • Native rust binding
  • Support integration with tonic

Additional Context

Some choices:

@jiacai2050 jiacai2050 added the feature New feature or request label Apr 18, 2024
@jiacai2050
Copy link
Contributor Author

@zealchen

@zealchen
Copy link
Contributor

@zealchen

Okay. Those libs look super awesome, let me build a benchmark to demonstrate performance first.

@jiacai2050
Copy link
Contributor Author

jiacai2050 commented May 8, 2024

Our benchmarks show flatbuffers has the best perf, and it can be integrated with tonic, so let's refactor our remote service.

https://github.com/apache/incubator-horaedb/blob/6baf6df0445f085dba4c330e12d019104483f2ee/src/server/src/grpc/remote_engine_service/mod.rs#L950

Currently we can only refactor the write API, since the CPU cost of it is the most obvious.

@jiacai2050 jiacai2050 closed this as not planned Won't fix, can't repro, duplicate, stale Aug 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants