【问题标题】:Java GRPC ServerBuilder vs NettyServerBuilderJava GRPC ServerBuilder 与 NettyServerBuilder
【发布时间】:2020-09-09 01:33:06
【问题描述】:

谁能告诉我ServerBuilder和NettyServerBuilder有什么区别? 最新说明

帮助简化基于 Netty 的 GRPC 服务器构建的构建器。

两者都服务于 http2/grpc。两者都可以提供 GRPC 服务。 这是否意味着第二个(Netty)在协议/传输级别上比前一个拥有更多的控制权?

【问题讨论】:

    标签: java grpc


    【解决方案1】:

    ServerBuilder 是一个抽象类,不能直接使用,而NettyServerBuilder 是一个具体类(使用forPortforAddress 实例化)。

    gRPC-java 带有各种传输实现(参见gRPC transport),Netty 是主要的传输实现。

    【讨论】:

    • 这是不正确的。虽然ServerBuilder 是抽象的,但ServerBuilder.forPort() 允许创建具体实例。
    【解决方案2】:

    ServerBuilder 是具有稳定 API 的通用构建器。一般推荐。

    NettyServerBuilder 特定于 Netty 传输并具有更多高级选项。但是,它是不稳定的 API。任何特定于 Netty 的方法都可能随时更改,尽管在实践中它相对稳定,因为 gRPC 开发人员意识到它被广泛使用。但破损可能来自其他来源。例如,如果 gRPC 从 Netty 4 升级到 Netty 5(尚不存在,但正在开发中),gRPC 可能会删除整个 io.grpc.netty.NettyServerBuilder 类并添加一个新的 io.grpc.netty5.NettyServerBuilder 类。 gRPC 甚至可以选择完全放弃 Netty 并使用 SomeOtherNetworkingLibrary。

    库绝不能使用不稳定的 API,因为它们不控制正在使用的 gRPC 的版本。应用程序可以使用不稳定的 API,但应注意 API 无法得到保证,并且它们可能需要在未来支付额外费用才能保持最新状态。

    【讨论】:

    • 有没有办法使用ServerBuilder设置maxconnectionage和maxconnectionagegrace?
    • @Abhay,我今天不这么认为。随时在github.com/grpc/grpc-java 上提出功能请求
    猜你喜欢
    • 1970-01-01
    • 2017-07-13
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    相关资源
    最近更新 更多