英文:
Will 2 unidirectional identical gRPC calls open 2 HTTP/2 connections or will they reuse a single connection?
问题
在我的聊天应用程序中(Nest.js + gRPC 微服务),我需要尽可能快地发送请求(用于创建消息),并担心重新打开连接(如果有的话)可能会花费太多时间和资源。
我尝试搜索文档,但没有找到明确的答案。每次我进行单向调用时,连接会重新打开吗?
英文:
In my chat app (Nest.js + gRPC microservices) I need to send requests (to create messages) as fast as possible and I worry that reopening the connection (if it is the case) can take too much time and resources.
I tried searching the docs but didn't find any clear answer. Will the connection reopen each time I make a unidirectional call?
答案1
得分: 1
HTTP/2支持多路复用,允许在单个连接上同时发送和接收多个请求和响应。这意味着即使它们几乎同时启动,也可以在同一HTTP/2连接上同时执行多个gRPC调用。
但是,需要注意行为可能会根据具体的gRPC库实现和配置而有所不同。某些库可能具有连接池机制或其他优化连接使用的策略。此外,服务器可能会限制单个连接上的并发流数量,如果达到限制,可能会导致打开其他连接。
英文:
HTTP/2 supports multiplexing, which allows multiple requests and responses to be sent and received over a single connection concurrently. This means that multiple gRPC calls can be performed over the same HTTP/2 connection simultaneously, even if they are initiated almost simultaneously.
Though, it's essential to note that the behavior may vary based on the specific gRPC library implementation and configurations. Some libraries might have connection pooling mechanisms or other strategies to optimize connection usage. Additionally, the server may limit the number of concurrent streams on a single connection, which could result in opening additional connections if the limit is reached.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论