-
Notifications
You must be signed in to change notification settings - Fork 2k
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
Support gRPC/protobuf for RESTful APIs and node-to-node communication #1287
Comments
Would this also help with streaming rather than doc by doc or bulk indexing? |
Would gRPC also benefit node-to-node communication? |
Sure, this should help in both node to node communication (Internal) and client to server communication (External). |
@saratvemulapalli This becomes theoretically swappable via the extensions work, doesn't it? |
Based on my understanding of how the internal communication between the node works now, it's using a single transport layer and it should be easy to change how to works. @mch2 please keep me honest. |
@dblock Extensions are being built over transport (layer-4), GPRC/Protobuf operate atleast at layer 5. @anasalkouz that is correct. Netty4 transport is the module which implements transport in OpenSearch via NIO. This is swappable with new communication mechanisms. Netty4 also includes Layer 7 (HTTP) support. |
Shall we swap Netty4 with gPRC vs upgrading to Netty 5 ? |
Yes! I would enable that as an option/experiment and benchmark it. |
Opened up a RFC for Protobuf in OpenSearch: #6844 |
@dblock is there a separate issue to track the gRPC protocol integration in OpenSearch? or it is already done? |
@navneet1v there isn't one. We could use this issue to track. |
@saratvemulapalli if we are using this issue to track can we add more details in the description around what we are doing and all the tasks which are tracking for this. |
Just so as to clarify we are only evaluating the data serialisation protocol(protobuf/avro/ion) etc and not really the transport layers like Netty/gRPC etc |
@navneet1v as @Bukhtawar said there is no body working on transport protocol yet (like GPRC). @VachaShah is exploring different serialization/de-serialization mechanisms we can adopt for OpenSearch. Do you see a use case for gRPC? What are you looking for ? |
What I am looking for is a light weight protocol than HTTP. While doing a search we spend a significant amount to time at this HTTP layer so, my thinking was how we can replace this so that we can get better query latencies. |
@navneet1v to clarify, we use TCP for node to node communication, did you mean HTTP at the REST layer? Might be good to see some profiling results nonetheless based on your observation |
Ideally i would like to see support for Apache Arrow 0-copy via any http/2 transport |
@anasalkouz this way you remove the need for serDeSer but; this might need more extensive changes. |
@anirudha Netty(default HTTP/transport) already supports zero-copy. Lets not complicate this issue further |
I've renamed this issue to "Support gRPC/protobuf for RESTful APIs and node-to-node communication". I think we want it all, including |
Replace REST/JSON-based API with gRPC/protobuf to improve serialization/deserialization performance.
Ref: https://grpc.io/docs/what-is-grpc/introduction/
The text was updated successfully, but these errors were encountered: