2017-03-15 137 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處理流的規則。