gpt4 book ai didi

server - gRPC 服务器是否为每个请求启动一个新线程?

转载 作者:行者123 更新时间:2023-12-01 19:38:25 24 4
gpt4 key购买 nike

我尝试分析 gRPC java 服务器。我主要看到下面一组线程池。

  • grpc-default-executor 线程:为每个传入请求创建 1 个线程。
  • grpc-default-worker-ELG 线程:可能是监听传入的 gRPC 请求并分配给上述“grpc-default-executor”线程。

总体来说,gRPC java服务器是Netty风格还是Jetty/Tomcat风格?或者它可以配置为以两种方式运行?

最佳答案

gRPC Java 服务器的暴露方式更接近 Jetty/Tomcat 风格,只不过它是异步的。也就是说,在普通 Servlet 中,每个请求都会消耗一个线程直到完成。虽然较新的 Servlet 版本允许您脱离专用线程并继续异步工作(释放线程以供其他使用),但这种情况更为罕见。在 gRPC 中,您可以自由地以任何一种方式工作。请注意,gRPC 默认使用cachedThreadPool 来重用线程;在服务器端,最好通过 ServerBuilder.executor() 用您自己的、通常固定大小的池替换默认执行器。 .

gRPC Java内部使用Netty风格。这意味着完全非阻塞。您可以使用ServerBuilder.directExecutor()在 Netty 线程上运行。尽管在这种情况下您可能需要指定 NettyServerBuilder.bossEventLoopGroup() , workerEventLoopGroup() ,以及兼容性 channelType() .

关于server - gRPC 服务器是否为每个请求启动一个新线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47505022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com