node.js - 如何将请求转发到其他微服务
问题描述
我已经在 NodeJS 上工作了 5 年。我目前的任务是在 ExpressJS 中开发微服务。
在微服务架构中,我们知道网关将请求转发到从客户端接收到的相应微服务。现在我当前的应用程序有 4 个微服务。- 网关 - 认证 - 用户 - 产品
网关的主要职责是接收来自客户端的请求并将其转发给身份验证微服务或其他微服务。最近我遇到了代理 npm express-http-proxy 模块,它具有相同的请求转发功能。
我有两种方法可以将请求转发到其他微服务。
使用简化的 HTTP 客户端,将请求从网关重定向到相应的微服务。在这里,我列出了其中的一些 npm 模块。
- 要求
- axios
- 得到
另一种方法是使用代理包。我觉得 express-http-proxy 最适合将请求转发给其他微服务。下面列出了很少的其他 npm 模块。
- 快递-http-代理
- http-proxy-middleware
过去,我使用 request 和 axios 模块将请求转发给其他微服务。
今天我发现 express-http-proxy 也是它的替代品。它还将请求转发给其他微服务。但是其他模块(http-proxy、http-proxy-middleware、node-http-proxy)比 express-http-proxy 更受欢迎,但它们没有按预期工作。
转发请求不仅是上下文,我们还需要处理来自微服务的响应或错误。
我无法决定哪个是转发微服务的更有效、更强大的解决方案?
希望我能解释一下我的观点。
解决方案
推荐阅读
- javascript - 在我的 Next.js 应用程序中使用 getServerSideProps 时,Firebase 引发的权限不足
- typescript - 试图定义一个可变参数/相互关联类型的数组
- swift - swift 4 - Mac - 获取 kMDItemUserTags 属性
- php - PHP如何修复无法修改标头信息
- api - 有没有办法使用 etherscan API 或 eth_getlogs 从以太坊交易中获取“输入数据”?
- mysql - 在sql中创建一个分类列
- python - 我想从 pyinstaller 制作的 exe 文件中获取 pyc 文件
- javascript - 找到两个数字之间的最近距离(寻求改进)
- vb.net - “Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册。” 尝试运行表单时抛出异常。例如购买表格
- javascript - 加载页面时打开与 MongoDB 的连接