2017-03-15 135 views
7

是否有任何无服务器技术允许构建无服务器websocket服务器?无服务器的网络套接字服务器?

我知道长时间运行的连接的本质是它们是有状态的,但是如果唯一的状态是连接本身在传输层,那么似乎可能有一个无服务器的产品将这个抽象出来,所以你只处理应用程序层。有没有允许这样做的云提供商(AWS,Azure等)?我看不到AWS Lambda或Azure功能实现此目标的方法。

任何人有任何想法?只是检查。

谢谢

回答

1

当前AWS Lambda和Azure函数不支持这一点。如果您打算使用websockets在AWS中设置可伸缩环境,则可以使用Application Load Balancer,并且可以在ECS集群或EC2实例之前使用Websocket支持的服务器,如NodeJS。

另一种解决方案是在您的体系结构中使用完全托管服务,如Google Firebase Service或​​来处理实时部分。

+0

由于@ashan。我不知道完全托管的 – ChrisBellew

1

如果唯一的国家是在传输层

这不是一个真正的情况下连接本身。 Web套接字连接exchange keep-alives作为第7层负载。其他人可能会争辩说,它被更准确地描述为第6层和第7层之间的子层......但无论如何,它都远高于传输层。

许多应用程序都以其他方式使用web套接字,这些方法也不是无状态的。一旦连接,然后进行身份验证,就不需要持续重新进行身份验证,因为套接字上的客户端现在将在15分钟后成为同一个客户端,而这是在无服务器环境中无法避免的开销 - websocket需要重新认证。再如,以恒定的数据流,服务器可能会跟踪哪些已发送或什么的流客户端感兴趣的特定子集。

如果不保持(或不需要)一个持久的连接到服务器,问题可能会问“你为什么使用web套接字?”

或许也与此有关:HAProxy的,常用的负载均衡与web套接字支持,维护每个当前的网络套接字连接到一个后端服务器的持久连接。如果后端服务器脱机,则平衡器中不会为现有连接选择另一个后端。客户端需要重新连接。

1

AWS物联网提供MQTT端点,它支持443端口这MQTT + WebSocket的可能是你可以得到作为AWS托管服务最接近。 选中此链接:AWS IoT Protocols 您可以定义触发AWS IoT上的Lambdas或将它们传递给Kinesis并通过Lambdas处理流的规则。