我正在努力弄清楚如何在Amazon AWS上部署TCP / IP和UDP服务的最佳方式。 我对我的问题做了一个先前的研究,我找不到任何东西。我发现其他协议如HTTP,MQTT但没有TCP或UDP
我需要重构现在在AMAZON EC2中运行的GPS跟踪服务。 GPS设备使用udp和tcp协议发送位置数据。每次收到消息时,服务器都必须使用ACKNOWLEDGE消息进行响应,并向gps设备发送接收确认。
我现在面临的问题是重构的动机是: 当流量增加时,服务器无法赶上所有消息。 我尝试使用负载均衡器和自动扩展来解决此问题,但不支持UDP。
我想知道是否有类似Api Gateway的东西,它给了我一个tcp或udp端点,将消息保留在SQS队列上并使用lambda函数进行处理。
提前致谢!
答案 0 :(得分:2)
你的问题确实没有多大意义 - 你问的是如何在不运行服务器的情况下运行服务。
如果您已达到单个实例的限制,并且需要增长,请查看将AWS Network Load Balancer与自动调整的EC2实例组配合使用。但是,这不支持UDP - 如果您确实需要UDP,那么您可能需要在AWS Marketplace中查看第三方支持。
编辑:无服务器架构专为基于http的应用程序而设计,您可以在其中发送请求并获得响应。由于您的应用程序是基于TCP的,并且使用持久连接,因此大多数现有的无服务器实现都不会支持它。您需要重写您的应用程序以支持http,或使用可支持持久连接的传统服务器基础架构。
编辑#2:自2018年12月起,API网关支持WebSockets。这可能对原始问题没有帮助,但如果你需要在长时间运行的连接后面运行lambda代码,那么就会启用其他选择。
答案 1 :(得分:0)
如果您想要更多的无服务器服务,我认为ECS容器服务具有接受TCP和UDP的实例。还可以看看通过Kubernetes运行Docker容器。我不确定它们是否支持这些协议,但我相信它们会支持。
如果没有,那么某些带有负载平衡的EC2实例可能是您最好的选择。