【问题标题】:How to call an API running on same EC2 instance but on different port number如何调用在同一 EC2 实例上但在不同端口号上运行的 API
【发布时间】:2020-04-16 19:04:59
【问题描述】:

我在一个 Ec2 实例上运行多个 Node.js 服务器,当我需要调用在同一实例的不同端口上运行的任何 API 时,我需要使用 AXIOS 进行调用,我想知道这是唯一的方法我可以调用我的 API,知道它在同一个 EC2 上运行,这是有效的解决方案吗?请问我需要指导

提前谢谢你

【问题讨论】:

    标签: node.js express amazon-ec2 microservices


    【解决方案1】:

    我想从两个方面来回答这个问题,

    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

    【讨论】:

    • 嗨,Sam,感谢您的详细回复,是的,请记住我在 EC2 实例前使用负载均衡器的可扩展性
    • 确保您使用 Loadbalancer url 来访问您的其他应用程序。并在部署到同一台服务器之前分析您的应用程序预期负载
    • Sam,我在负载均衡器前使用 route53,所以没有这样的问题
    • Route53 只是一个 DNS,与您的应用程序负载无关。我说的是您的应用程序负载和扩展
    • “确保您使用 Loadbalancer url 来访问您的其他应用程序”是的山姆,我知道它只是一个 DNS 解析器,只是回答您的第一部分问题,顺便感谢您的回答,但我'我仍然怀疑我为在同一实例上运行的服务调用 Axios api's 的方法,必须有另一种有效的方法我正在寻找而不是调用 rest api's
    猜你喜欢
    • 2014-11-23
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    相关资源
    最近更新 更多