go - 如何响应多个 gRPC 客户端?

标签 go distributed-computing grpc grpc-go

我正在构建一个应用程序,它可以有多个 gRPC 服务器,并且肯定会有多个 gRPC 客户端,我想知道,如何在服务器端识别这是我正在交谈的客户端,并且只向该客户端发送数据。我正在使用双向流 RPC,现在数据被广播到每个客户端,但我不希望这样。 go gRPC 中的哪些功能使其成为可能或者如何实现它?

最佳答案

有两种方法可以阅读此问题。一种方法是将其视为之前回答的身份验证问题。第二种方式是我如何阅读它,作为连接/ session 问题。

当客户端连接时,grpc 服务器将调用一个函数来在自己的 goroutine 中实现调用,并且该函数将仅与发起该调用的客户端进行通信。因此,您注册为 grpc 服务器的结构将在许多连接之间共享,但每个连接将在自己的 goroutine 中运行,并且只会与启动它的客户端通信。这也意味着您必须确保 grpc 服务器实现是线程安全的。

您提到数据正在广播给每个客户端? grpc 中没有广播,您确定是这样吗?

关于go - 如何响应多个 gRPC 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57982006/

相关文章:

java - 大型集群上的 Ehcache 性能

golang protobuf 从生成的 json 标签中删除 omitempty 标签

go - 是否可以向 protobuf 服务添加自定义方法类型?

c# - Go 例程与任务并行库的实现

multithreading - 不同主机上的 OpenMP 程序

model - 在 Go 中构建模型

java - RMI 表中没有此类对象,服务器通信错误

api - 如何查询 gRPC 端点?

pointers - 将 *os.File 作为 *io.Reader 传递

go - 使用客户端为每个 HTTP 请求添加 header