elastic / elasticsearch

Free and Open Source, Distributed, RESTful Search Engine
https://www.elastic.co/products/elasticsearch
Other
1.17k stars 24.84k forks source link

support HTTP/2.0 #10981

Open inotnako opened 9 years ago

inotnako commented 9 years ago

Is ElasticSearch planning to add support (or maybe plugin for) protocol HTTP/2.0? Like in https://github.com/grpc/grpc(used HTTP/2.0) or may be with grpc

dakrone commented 8 years ago

This is now possible since we have moved to Netty 4, since Netty supports HTTPP/2.0 in 4.1+ /cc @jasontedor

jasontedor commented 8 years ago

To be clear, Netty 4 supports HTTP/2 but there is effort required to make Elasticsearch use it, and ensure that it works properly.

KodrAus commented 7 years ago

Is there any new thinking on supporting h2? It seems like a fruit hanging so high it'll probably take a magic beanstalk to reach, but I'm interested in any thoughts you might have on the cost-benefit equation. I imagine there are bigger wins in first-class client support and alternative APIs that take advantage of more stream-oriented connections in supporting h2 within Elasticsearch itself over just exposing through a h2-enabled proxy.

mantasindrasius commented 5 years ago

Any updates on this? With the deprecated TransportClient, there should for sure be HTTP/2 or/and gRPC support.

jasontedor commented 5 years ago

At this time there is no update on this other than that we are not currently working on it; this not to say that we will not, only that we feel there are higher priority projects. I do not agree that the deprecation of the transport client implies that there should be HTTP/2 support. Can share why you think that the two are tied together?

mantasindrasius commented 5 years ago

Thanks for a quick answer.

HTTP/1.1 is limited in the sense that any concurrent operations cannot happen on the same connection and creating a new connection is a huge performance trade-off.

HTTP/2 or gRPC which is based on the former is multiplexing by nature, so is closer to the non-blocking TransportClient.

If we want to keep the transport overhead low, we can't go with REST+HTTP/1.1.

jasontedor commented 5 years ago

@mantasindrasius Thanks for the feedback. I agree with you on the benefits of HTTP/2.

I do think it's worth noting that with HTTP/1.1 keep alive behavior and a connection pool that you can mitigate some of the disadvantages of HTTP/1.1 versus HTTP/2.0. The best that HTTP/1.1 can offer related to multiplexing is pipelining. Yes, this suffers from head-of-line blocking but it does allow some connection reuse too.

That said, even weighing these advantages and disadvantages, I would prefer that we continue to not tie removal of the transport client to the introduction of HTTP/2. Removing the transport client will bring us major advantages in continuing to develop the server side of Elasticsearch without maintaining a client that is so intimately tied to the internal protocol. These advantages outweigh the loss of benefits of the transport client.

Rest assured that HTTP/2 is on our roadmap, just not at the top of the list at the moment.

mantasindrasius commented 5 years ago

Thanks for that. Do you also think there could be gRPC support for elastic or it's not on the table?

jasontedor commented 5 years ago

@mantasindrasius gRPC is not on the table at the moment.

Asgoret commented 5 years ago

@jasongoodwin ELK don't work in OKD 3.11 (Openshift) correctly because there is no support of H2\grpc protocols. See: https://github.com/elastic/kibana/issues/7104 and https://github.com/openshift/origin-aggregated-logging/issues/1465

UPD#1: Yeah...i disable h2 and kibana work perfectly. Enable and stop working) Is there ant information when kibana will support h2?

ayushsangani commented 5 years ago

Any updates on the support of Http 2.0 in ES?

cangiremir commented 4 years ago

Any actions to support gRPC or HTTP/2?

weitzjdevk commented 4 years ago

Are there any news here? AWS NLB has finally ALPN support for the TLS Listener, which would help for the gRPC handshake/http2 connection

https://www.reddit.com/r/aws/comments/gsdo3w/nlb_now_supports_alpn_on_tls_listeners/

bachden commented 4 years ago

Waiting for http2 (gRPC maybe) supporting.

bradquarry commented 4 years ago

A team at Verizon is asking for gRPC support. +1

YohanSciubukgian commented 4 years ago

Do you have any update to share about HTTP/2 support please ?

gokcesurenkok commented 4 years ago

Do you have any plan to do that in near future ? i would like to see it if it is in your roadmap. Thanks

weitzj commented 4 years ago

Any updates here?

AWS ALB has finally gRPC support built in GCP had it all the time

cyberfifi commented 3 years ago

+1 from Compass. We need this feature.

emcpadden commented 3 years ago

This is definitely needed!

Farenheith commented 3 years ago

I endorse http2 too!

One solution for me at this moment, if anyone is interested, is to avoid elasticsearch oficcial client (in a nodejs service that only uses _search), and to use superagent + agentkeepalive, with, in my case of use, maxSockets uninformed, assuming the default value of Infinity. This way I have the connection pool working under the hood, mitigating the http1 limitation as @jasontedor well said.

gguillen commented 3 years ago

+1 Upvote

JhennerTigreros commented 3 years ago

A team at Platzi is asking for gRPC support. +1

Dyqer commented 3 years ago

+1 Upvote

blackheaven commented 2 years ago

+1 Upvote

JoeGilkey commented 2 years ago

+1 as a nice to have.

Jaimenms commented 2 years ago

+1 Upvote

cjmcgraw commented 2 years ago

+1 this would be very helpful to my company

kkdeok commented 2 years ago

+1 please

marinrusu1997 commented 2 years ago

+1 Upvote

KennyLindahl commented 2 years ago

+1 Upvote

BiditPakrashi commented 2 years ago

Any update on GRPC support ?

mhlee-lee commented 2 years ago

+1 please

fsedano commented 2 years ago

+1 please

nakulpathak3 commented 2 years ago

+1 Faire would like this too

raff-s commented 2 years ago

+1 Upvote

DaemonSnake commented 2 years ago

+1 Upvote

yanchanglj commented 1 year ago

+1 please

vineelyalamarthy commented 1 year ago

@clintongormley are there discussions happening some where like in wiki pages/ discord etc on this topic roadmap/implementation. Are open source contributors welcome to participate in those? I would love to contribute to this feature.

lukasojd commented 1 year ago

+1

henningandersen commented 1 year ago

This is not a high priority to us internally at the moment. There is no to little actual benefits from http/2 over what we have today. We would welcome a contribution, but would like to remind of our contributions guidelines, highlighting that this change is likely to require considerable test additions.

otrosien commented 1 year ago

@henningandersen thanks for the feedback. Out of curiosity: "There is no to little actual benefits from http/2 over what we have today" - how was that evaluated?

loeffel-io commented 1 year ago

+1

magicleo commented 1 year ago

Any update on GRPC support ?

patpatpat123 commented 1 year ago

Upvoting this many year old idea

firebook commented 9 months ago

Any update? We really need it!

DaveCTurner commented 9 months ago

Unfortunately there's nothing in the discussion above to say why this is so important. HTTP/2.0 (and now HTTP/3.0) offer significant advantages for certain applications, particularly those involving web browsers or web-browser-like interaction patterns, but we cannot see the benefits over HTTP/1.1 in the specific context of an application like ES whose clients are expected to use a pool of long-lived connections (and possibly pipelining) to achieve the same results. We just don't encounter cases where the use of HTTP/1.1 is the limiting factor for either performance or expressivity in a meaningful way right now. I'm sorry if we're missing something obvious, but without some more concrete motivation for addressing this request it's unlikely we'll take on the significant amount of work involved in doing so in the foreseeable future.

trycoon commented 9 months ago

@DaveCTurner HTTP/2 is of little importance to me… But I was hoping that gRPC could lower the transmission latency that JSON and REST adds to the querying. We use Elastic as a smarty cache to filter information and answer user requests, several thousend per second. If we could shave of some additional 10ms for each 100KB JSON response by using gRPC, that would be a nice improvement. And to be able to use gRPC we need HTTP/2… 🤗

DaveCTurner commented 9 months ago

If we could shave off some additional 10ms for each 100KB JSON response by using gRPC, that would be a nice improvement.

That would indeed be very nice, but I don’t see how it could happen. The current wire protocol doesn’t add anything like that much latency.

mselmansezgin commented 7 months ago

@DaveCTurner the wire protocol doesn't add anything for additional latency but it also detracts from the ability to use protobuf instead of JSON. This eliminates our chance to reduce the overall size of the payload.