【发布时间】:2020-04-16 19:04:59
【问题描述】:
我在一个 Ec2 实例上运行多个 Node.js 服务器,当我需要调用在同一实例的不同端口上运行的任何 API 时,我需要使用 AXIOS 进行调用,我想知道这是唯一的方法我可以调用我的 API,知道它在同一个 EC2 上运行,这是有效的解决方案吗?请问我需要指导
提前谢谢你
【问题讨论】:
标签: node.js express amazon-ec2 microservices
我在一个 Ec2 实例上运行多个 Node.js 服务器,当我需要调用在同一实例的不同端口上运行的任何 API 时,我需要使用 AXIOS 进行调用,我想知道这是唯一的方法我可以调用我的 API,知道它在同一个 EC2 上运行,这是有效的解决方案吗?请问我需要指导
提前谢谢你
【问题讨论】:
标签: node.js express amazon-ec2 microservices
我想从两个方面来回答这个问题,
1) 您的应用程序与其他应用程序的通信方式
你可以有两种方法。第一个是同步的,如果您必须等待第二个应用程序的结果并完成第一个应用程序中的逻辑,那么请使用这种方法。是的,您可以使用 REST 调用(使用 AXION 或任何 REST 客户端)。如果您打算流式传输数据,gRpc 是另一种选择。
下一个是异步通信,您的应用程序不等待第二个应用程序的结果(即发即弃)。这可以使用消息队列来实现
2) 应用程序的部署方式和引用方式。
假设您使用 IP:PORT 或 localhost:PORT 调用应用程序(因为它在同一个 VM 中),我可以说这不是好方法。
考虑一个场景,您需要将其中一个应用程序移动到不同的盒子,或者您希望单独扩展应用程序。在这些情况下,您将很难管理。
您的应用程序前面是否有任何 API 网关或反向代理或负载平衡器?如果是,请通过这些服务调用您的应用程序。
如果您不确定以上内容,请点击以下链接,
https://hub.packtpub.com/6-common-use-cases-of-reverse-proxy-scenarios/ https://www.redhat.com/en/topics/api/what-does-an-api-gateway-do https://microservices.io/microservices/news/2015/03/15/deployment-patterns.html
【讨论】: