-
Notifications
You must be signed in to change notification settings - Fork 214
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
gRPC HTTP/2 Channel Connection Pooling #345
Comments
Initially I thought the I'd like to eventually take a shot at on implementing this using the methods described in the following articles:
I probably won't look more into this until Jan/Feb 2024. 😄 |
Alongside connection pooling, it would be great to have load balancing. It should be relatively easy to implement it on top of a routing pool, just need to diversify the pool with connections from different hosts. |
Closed by #350 |
Is your feature request related to a problem? Please describe.
Consumers of
elixir-grpc
could run into scalability issues if they don't handle the multiplexing capabilities of the HTTP/2 connectionselixir-grpc
exposes; instead they will probably create a single channel and re-use it for every connection. Mint defaults:max_concurrent_streams
to 100; this can be configured but doesn't seem ideal. While looking into strategies to deal with this, I found an old GH issue related to gRPC connection pooling. Two of the comments mention that pooling isn't ideal for HTTP2 connections:Describe the solution you'd like
Since the maintainer consensus is "avoid pooling" I think it would be wise to cover this in the form of some docs, preferably with a few examples. Do others agree? Are there any thoughts on what it could/should cover?
Describe alternatives you've considered
If the maintainers are comfortable delegating the "how do I pool gRPC HTTP/2 connections in Elixir" question to another library, there is
conn_grpc
, which exposes a@behaviour
for handling backoff.Yordis on the Elixir Slack also pointed out to me that a package called
spear
implements its own HTTP/2 connection pooling.The text was updated successfully, but these errors were encountered: