【问题标题】:How can I tell which gRPC server I am talking to?如何判断我正在与哪个 gRPC 服务器通信?
【发布时间】:2019-07-13 20:27:15
【问题描述】:

前言:有一个名为LND 的项目使用了两个gRPC 服务器。使用 WalletUnlocker 服务在启动时开始监听。这些方法与解锁 LND 节点以供使用有关。然后一旦解锁,LND 进程会终止 gRPC 服务器,并在完全相同的端口上创建一个具有 Lightning 服务的新服务器。 (完全不同的方法)

我想以编程方式对 LND 节点的 gRPC 进行 ping 操作,并询问它“您当前正在提供哪些服务,这样我就可以确定是否需要解锁您并等待,或者是否可以使用您的 Lightning 服务开展我的业务。 "

加载包定义和创建凭据都取决于我尝试连接的服务,因为两台服务器的配置不同,但在同一个端口上......所以我假设我想出的任何方法都不会依赖完全在包定义或 macaroon 凭据上。如果我错了,请告诉我。

谢谢。

【问题讨论】:

    标签: node.js grpc


    【解决方案1】:

    根据相关服务和服务器的某些具体情况,可能有多种方法可以确定这一点。如果服务器支持server reflection service,那么您可以查询该服务以确定服务器正在提供哪些服务/方法。如果他们不支持,那么下一个最好的办法是简单地尝试向其中一项服务的其中一种方法发出请求;如果方法成功,您知道服务器当前正在为该服务提供服务,如果它失败并出现UNIMPLEMENTED 错误,您知道它正在为其他服务提供服务。

    特别是关于包定义,这里最简单的策略是简单地为两个服务加载它们,然后根据正在运行的服务使用您需要的任何一个。

    【讨论】:

    • 如何查询Node.js中的服务器反射服务?
    • 目前 Node 库中对该服务没有特殊处理。您必须使用this proto file(我认为)设置客户端并编写自己的代码来解释响应。
    • 感谢您的指点。有没有我可以依赖的标准分发机制,还是应该从 Github 获取文件?
    • .proto 文件没有任何特殊的分发系统,所以您应该直接在 GitHub 上获取。而且您可能应该保留自己的副本,而不是假设它会保留在 GitHub 上的特定 URL 上。
    猜你喜欢
    • 2020-10-18
    • 1970-01-01
    • 2014-03-14
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 2019-10-06
    • 1970-01-01
    相关资源
    最近更新 更多