我想創建一個無狀態服務器,以便如果任何服務器停機,負載均衡器可以將請求重定向到其他服務器。但是,如果會話是在一臺服務器上創建的,並且它停滯了,那麼如何保存它。我正在使用mysqlstore將會話保存在數據庫中,但是對於每臺服務器,它會在數據庫中創建一個新記錄,因此會話ID不會跨不同的服務器所以,需要一種使服務器無狀態的機制。如何在nodejs中跨服務器共享會話?
0
A
回答
1
我猜你正在使用express-session
,因爲它沒有其他說明。
你在mysqlstore的正確軌道上。解決Node的單線程問題的方法是消除express-session
,然後加密會話數據並將其放入客戶端Cookie中。然後,您可以在GET請求上解密會話數據,並使用cookie中的隔離鍵在數據庫中對其進行驗證(如果不存在,則創建新的會話/ cookie對)。
爲此,最流行的Node.js中間件是cookie-session.
偉大的文檔,以及。
https://github.com/expressjs/cookie-session
作爲一個側面說明,因爲它聽起來就像你在一個非常可擴展的地方,現在有多個服務器,這是值得開溝express-session
反正。 express-session
使用MemoryStore,它存在內存泄漏的已知問題。很好用於較小的項目,但可能應該重新考慮更大的項目。
相關問題
- 1. 在rails服務器和php服務器之間共享會話
- 2. 如何跨子域共享symfony2會話
- 3. 在共享服務器上安裝nodejs
- 4. Node.js - 如何在http服務器和網絡服務器之間共享會話?
- 5. Web服務中的會話共享
- 6. 共享會話使用會話狀態服務器
- 7. 跨多個WCF服務共享會話託管在同一臺機器上
- 8. 在Angular2中跨服務共享數據
- 9. WCF服務之間的共享會話
- 10. 會話在同一服務器上的多個域上共享
- 11. 在同一臺服務器上的域之間共享會話
- 12. 與Symfony 2.8在ovh共享服務器上丟失的會話
- 13. Node.js Express - 在不同服務器上共享Passport會話
- 14. 跨節點應用共享Redis會話
- 15. 跨域的PHP共享會話
- 16. Tomcat6.0.20上的跨域共享會話
- 17. rails 4共享會話跨子域
- 18. 如何在本地IIS跨端口共享會話?
- 19. 跨多個客戶端服務器請求和多個服務器之間共享會話
- 20. 如何在java服務器上共享套接字連接會話
- 21. 如何使用web服務共享Web應用程序會話
- 22. 狀態服務器不共享會話的IIS 7.5服務器場
- 23. 共享會話
- 24. 共享會話
- 25. ASP.NET會話ID - 跨服務器唯一
- 26. 檢查跨服務器的會話
- 27. 與erlang服務器共享導軌會話
- 28. Amazon EC2多個服務器共享會話狀態
- 29. 服務器端共享會話的場景是什麼?
- 30. 2臺服務器之間的共享會話
根據定義,無狀態應用程序不會維護會話。會話是狀態。你確定你問的是正確的問題嗎? – Paul
如果服務器出現故障,您不必擔心重定向。 AWS ELB自動將其標記爲不健康,並將流量發送到連接到負載平衡器的另一臺運行狀況服務器。 – error2007s
使用應用程序控制會話粘性http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-sticky-sessions.html#enable-sticky-sessions-application – error2007s