go - 用于服务间通信的基于 gRPC 的微服务架构

标签 go kubernetes microservices protocol-buffers grpc

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

2年前关闭。




Improve this question




我试图理解在使用 gRPC 实现这些服务时,服务间通信是如何工作的。虽然有很多文章涵盖了有关 gRPC 入门以及如何将其编译为多种不同语言的基础知识。我仍然缺少一些关于微服务架构中的每个服务应该如何最好地通信的指导方针。

我的一般理解,经过这样的事情后:https://www.oreilly.com/library/view/practical-grpc/9781939902580/

如果我需要在微服务架构中使用 gRPC,其中服务间通信将基于 gRPC,每个服务本质上(并且根据需要)应该执行服务器和客户端 stub 实现以与其他服务通信。

所以对我来说它看起来像这样
enter image description here

如果是上述情况,那么将这些服务中的每一个部署在 K8s 环境中似乎需要付出很大的努力,尤其是。使每个服务在整个集群中都是可发现的。

一些附加说明
我主要使用 Go 进行开发,并使用 protobuf 来定义 proto 文件。

如果有人可以对此发表评论或有我可以通过的资源来更好地理解,那将非常有帮助。

谢谢!

最佳答案

你的理解是正确的。如果您想在 Kubernetes 中拥有可以远程相互通信的单独服务,则必须部署它们(helm 可以在这里提供帮助)并且您必须为集群发现创建服务。

关于go - 用于服务间通信的基于 gRPC 的微服务架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61121353/

相关文章:

windows - 使用Golang在Windows的端口上启动服务器可执行文件

kubernetes - 将 Statefulset 绑定(bind)到本地持久卷 - 卷节点关联冲突错误

Java - Kubernetes 按标签查找服务

architecture - 业务逻辑是否应该包含在微服务生态系统中的各个服务中?

windows - 获取固定驱动器列表

go - 未反射(reflect)在实例上替换的字符串数组

asp.net-mvc - 通过 .net MVC 调用 Go 命令

kubernetes - 连接拒绝到 Kubernetes 中的 GCP LoadBalancer

azure - 删除 eventhub 和删除命名空间有什么区别?

Kubernetes - 发现和访问另一个集群服务,如自托管