首页 > 解决方案 > nestjs、GRPC 服务器和微服务架构

问题描述

我已经使用带有微服务的nestjs 开始了一个新项目,但这是我的第一个微服务项目,我没有足够的知识。在我的文档研究期间,我找不到同时使用带有 grpc 和 HTTP 的微服务的方法。

在我的架构中,我有一些微服务必须为客户端提供 REST API,但也必须为“内部”目的提供 grpc 请求,这是一个正确的决定吗?

标签: node.jsmicroservicesgrpcnestjs

解决方案


因为 GRPC 使用 HTTP ,所以说“我找不到同时使用带有 grpc 和 HTTP 的微服务的方法”是不正确的。GRPC 不是一种协议,它是一种序列化消息的方式,通过公开 HTTP 端点,您可以在不同的替代方案(例如 XML)之间进行选择;REST/JSON 或 GRPC。

通常遵循“六边形架构”理念(https://en.wikipedia.org/wiki/Hexagonal_architecture_(software)),您应该能够将逻辑与适配器分离,并且您的项目可以为相同的逻辑实现多个适配器,例如例如 HTTP/REST 中的一个适配器和 HTTP/GRPC 中的另一个适配器。另一方面,避免必须实现多个端口的一种方法是始终选择 HTTP/GRPC 并使用 Envoy 作为 HTTP/REST 和 HTTP/GRPC 之间的代理(请参阅https://grpc.io/docs/tutorials/basic /web/),但最终解决方案取决于许多因素


推荐阅读