【问题标题】:gRPC java client channel pooling and server concurrent request handlinggRPC java客户端通道池和服务器并发请求处理
【发布时间】:2021-03-25 08:18:19
【问题描述】:

我们正在使用 SpringBootJAVA 中开发基于 grpc 的服务。

我们关注https://github.com/LogNet/grpc-spring-boot-starter

@GrpcService :用于服务器端服务

@GrpcClient : 用于客户端存根

我可以测试这个应用程序。

问题:在生产中,我们每秒将收到大约 5000 个请求,每个请求可能需要 25 毫秒到 1 秒。

客户端:如何实现连接(通道)池化?

服务器端:如何让服务器像任何网络服务器一样同时处理多个请求?

【问题讨论】:

    标签: grpc grpc-java


    【解决方案1】:

    客户端:如何实现连接(通道)池化?

    请描述您期望的池类型 - 是使用池中的子通道/连接的多个通道还是通道本身的更高级别的池机制?

    服务器端:如何让服务器像任何网络服务器一样同时处理多个请求?

    已经是这样了。查看ServerBuilder.executor(),它允许您指定自己的执行程序来并发处理请求。

    【讨论】:

    • 根据我的理解,单通道代表单个 TCP 连接下划线。因此,如果我们假设每秒有 5000 个请求,我们希望拥有 Pool of Channel 来处理如此规模的流量,这就是为什么要寻找 Pooling over Channel。
    • @dReAmEr 您找到创建频道池的方法了吗?你能分享更多细节吗?
    • 查看stackoverflow.com/questions/63749113/…了解频道、子频道和连接
    • 我们有一个相同的频道池内部库。但现在我们希望摆脱这种情况,并为 grpc 客户端使用单个 ManagedChannel。到目前为止,我知道的原因是“GRPC 能够利用将许多请求多路复用到流中的能力,通过相同的底层 HTTP/2 连接处理所有 RPC 请求。”。因此,我正在寻找更多关于为什么只使用单个频道的答案。但这里的意思是,我们可以考虑是否真的需要通道池或者一个就足够了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 2021-10-19
    • 2017-05-14
    • 2020-09-09
    • 2018-04-12
    • 2020-06-03
    相关资源
    最近更新 更多