在亚马逊 AWS 上部署 TCP/IP 和 UDP 服务的最佳架构(没有 EC2 实例)

aep*_*man 7 amazon-ec2 amazon-web-services aws-lambda

我正在尝试弄清楚在 Amazon AWS 上部署 TCP/IP 和 UDP 服务的最佳方式是什么。我之前对我的问题进行了研究,但找不到任何内容。我发现了其他协议,如 HTTP、MQTT 但没有 TCP 或 UDP

我需要重构现在在 AMAZON EC2 中运行的 GPS 跟踪服务。GPS 设备使用 udp 和 tcp 协议发送位置数据。每次收到消息时,服务器都必须以 ACKNOWLEDGE 消息响应,向 gps 设备提供接收确认。

我现在面临的问题是重构的动机是:当流量增加时,服务器无法赶上所有消息。我尝试使用负载平衡器和自动缩放来解决此问题,但不支持 UDP。

我想知道是否有像 Api Gateway 这样的东西,它给了我一个 tcp 或 udp 端点,将消息留在 SQS 队列中并使用 lambda 函数进行处理。

提前致谢!

chr*_*ris 2

你的问题确实没有多大意义 - 你问的是如何在不运行服务器的情况下运行服务。

如果您已达到单个实例的限制并且需要增长,请考虑将 AWS 网络负载均衡器与自动缩放的 EC2 实例组结合使用。但是,这不支持 UDP - 如果您确实需要,那么您可能需要查看 AWS Marketplace 中的第 3 方支持。

编辑:无服务器架构是为基于 http 的应用程序设计的,您可以在其中发送请求并获取响应。由于您的应用程序基于 TCP,并使用持久连接,因此大多数现有的无服务器实现根本不支持它。您将需要重写您的应用程序以支持 http,或使用可以支持持久连接的基于传统服务器的基础设施。

编辑#2:截至 2018 年 12 月,API 网关支持 WebSocket。这可能对解决最初的问题没有帮助,但如果您需要在长时间运行的连接后面运行 lambda 代码,则可以提供其他选择。