apache / pekko-http

The Streaming-first HTTP server/module of Apache Pekko
https://pekko.apache.org/
Apache License 2.0
149 stars 36 forks source link

http/3 support #322

Open pjfanning opened 11 months ago

pjfanning commented 11 months ago

Relates to https://github.com/akka/akka-http/issues/3692

jrudolph commented 11 months ago

This basically means a rewrite of the complete backend, including

It would be nice to have but this is an effort that basically would at least double the size of the backend implementation. In the best case, some of the layers could reuse available third-party components (TLS, transport layer) so that a first implementation could focus on the more HTTP-related parts.

jrudolph commented 11 months ago

For triaging it would be good to gather good motivation about why to do this in the first place. Also, whether client or server side might be more important.

In some way, it might be more interesting to implement QUIC as a general, low-latency, multiplexing connection solution, than HTTP/3 which is used mostly in communication between browsers and servers. Most backend servers are deployed behind a reverse proxy where HTTP/3 in the upstream backend server itself might be less of a requirement.

pjfanning commented 11 months ago

For triaging it would be good to gather good motivation about why to do this in the first place. Also, whether client or server side might be more important.

In some way, it might be more interesting to implement QUIC as a general, low-latency, multiplexing connection solution, than HTTP/3 which is used mostly in communication between browsers and servers. Most backend servers are deployed behind a reverse proxy where HTTP/3 in the upstream backend server itself might be less of a requirement.

That's a good point about reverse proxies (eg nginx). With the right network security topology, you could terminate the http/3 connection at the reverse proxy and forward plain http traffic to the pekko-http backends.

Users could also consider using Web Sockets if they want to avoid the overhead of separate HTTP(S) requests.