2011-01-31 72 views
0

假設我有一個簡單的體系結構,其中會話將通過數據庫共享,多個前端(如F1和F2)與同一個後端對話。多個前端,共享後端和處理併發請求連接到一個會話

我的問題是兩個前端會收到對應於同一個會話的請求:一個天真的實現會導致會話相互覆蓋(我看着django似乎屬於這種情況)。我可以嘗試設計後端,例如保證不超過一個前端可以處理給定的會話,但這似乎很難正確執行,特別是如果我想處理前端故障。

我不禁首先想到病例是病態的(任何時候對於一個特定的會話都不應該有一個以上的請求),並且不值得處理,但我沒有很多網絡開發經驗,所以也許我錯過了一些東西。人們通常如何處理這種情況?

可能的解決方案,我想避免:

  • 粘性會話:這就是我目前使用的解決方案,並且是難以支撐,一旦你有幾個負載均衡,多顯著違揹負載的精神平衡首先。
  • 將數據放入Cookie中:出於技術原因,我無法使用Cookie。
+0

語言/平臺? – leppie 2011-01-31 09:44:53

+0

我不明白爲什麼它應該重要? FWIW,我使用python + mysql來創建一些東西。 – 2011-01-31 12:02:33

回答

0

一個常見的解決方案稱爲會話持久性。無論您向f1或f2發出的請求是什麼路徑,都可確保只要會話處於活動狀態,具有該會話的客戶端就只能訪問一個前端。

這是幾乎所有負載均衡器的一個常見功能。例如,nginx有ip_hash http://wiki.nginx.org/NginxHttpUpstreamModule

相關問題