You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe
Please describe the end goal of this project
Tracking some optimizations which are specific (or may be more easily applied) to a gRPC server alternative of the OpenSearch API.
Features
Pass through optimization
Initial search and index services deserialize protobuf messages into POJO before handing off to internal client to execute a request on the transport layer. We can potentially optimize this process by passing the client protobuf objects necessary to execute the request directly to the client and further propagating these objects across the transport layer. Delegating deserialization work to the shard level.
Streaming endpoint alternatives
Protobuf + gRPC enables the simple transformation of regular indexing/search services into streaming alternatives by separating per-request metadata from bulk response body. Maybe most applicable applied to bulk indexing requests and search responses.
message StreamingSearchResponse {
oneof response {
// First message will contain metadata
SearchMetadata metadata = 1;
// Subsequent messages will contain individual hits
SearchHitChunk hit = 2;
}
}
// Streaming search service definition
service StreamingSearchService {
// Stream search results as they become available
rpc StreamingSearch(SearchRequest) returns (stream StreamingSearchResponse) {}
}
Describe the solution you'd like
Experimental benchmarking of potential gRPC optimizations.
Is your feature request related to a problem? Please describe
Please describe the end goal of this project
Tracking some optimizations which are specific (or may be more easily applied) to a gRPC server alternative of the OpenSearch API.
Features
Pass through optimization
Initial search and index services deserialize protobuf messages into POJO before handing off to internal client to execute a request on the transport layer. We can potentially optimize this process by passing the client protobuf objects necessary to execute the request directly to the client and further propagating these objects across the transport layer. Delegating deserialization work to the shard level.
Streaming endpoint alternatives
Protobuf + gRPC enables the simple transformation of regular indexing/search services into streaming alternatives by separating per-request metadata from bulk response body. Maybe most applicable applied to bulk indexing requests and search responses.
Describe the solution you'd like
Experimental benchmarking of potential gRPC optimizations.
Related component
Plugins
Describe alternatives you've considered
No benchmarking.
Additional context
Supporting References
Experimental grpc-transport pr - #16534
Ecosystem meta issue
The text was updated successfully, but these errors were encountered: