登录
首页 >  Golang >  Go问答

处理多个 gRPC 客户端的方法

来源:stackoverflow

时间:2024-03-02 15:36:25 360浏览 收藏

一分耕耘,一分收获!既然都打开这篇《处理多个 gRPC 客户端的方法》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!

问题内容

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


解决方案


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

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

您提到数据正在广播给每个客户端? grpc 中没有广播,您确定发生了这种情况吗?

这听起来像是一个常见的身份验证/授权问题,最终与 gRPC 或 Go 没有太大关系。

您需要一种方式让客户表明他们是谁。就我个人而言,我很喜欢 JWTs。在标准 HTTP 请求中,有授权标头可以指示谁在发出请求。同样,gRPC 支持附加到每个远程调用的元数据。在我当前的工作项目中,每个调用都必须在元数据中包含 JWT,否则我不会处理请求。除登录端点外的每个调用。

我还没有研究如何获取 gRPC 客户端的 IP 地址或有关客户端连接的其他信息等详细信息,但 gRPC 生成的代码提供的任何内容很可能是客户端可能伪造的。如果架构正确,JWT 可以提供加密信心,让客户确信客户就是他们所声称的那个人。

今天关于《处理多个 gRPC 客户端的方法》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>