node.js - nestjs、GRPC 服务器和微服务架构
问题描述
我已经使用带有微服务的nestjs 开始了一个新项目,但这是我的第一个微服务项目,我没有足够的知识。在我的文档研究期间,我找不到同时使用带有 grpc 和 HTTP 的微服务的方法。
在我的架构中,我有一些微服务必须为客户端提供 REST API,但也必须为“内部”目的提供 grpc 请求,这是一个正确的决定吗?
解决方案
因为 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/),但最终解决方案取决于许多因素
推荐阅读
- carrot2 - 使用 Carrot2 时出现 Java 堆空间错误
- php - 尝试从 PHP git pull 时出现 known_hosts 文件权限问题
- html - 具有各种搜索参数的 HTML 网页查询
- css - 添加带有路径的SVG到css类不起作用
- javascript - 我如何将这些数据放在 html 中?
- typescript - React Native / typescript中的自定义警报
- plot - 如何在 Julia Plots Backend PGFPlotsX 中获得完整的黑色刻度线?
- python-3.x - 如何使用循环按部分拆分多行列表
- c++ - 如何将 std::is_convertible_v 应用于一组可变参数?
- java - 无法获得正确的手机内存大小(内部存储大小、总存储大小和总外部大小)