回覆列表
  • 1 # 網路圈

    OpenResty和Tomcat分工不同,像這種異構模式,如果要共用Session會話,用傳統的Cookie模式實現成本是很大的。

    那對於這種異構或者叢集分散式環境、又或者是不同域名間的Session共享該如何實現呢?要弄清楚這個問題,我們得先清楚Session的工作原理。

    Session儲存於伺服器端,儲存方式一般是記憶體、檔案形式。伺服器端可以存放很多Session,在眾多的Session中如果需要對特定使用者的Session進行操作,我們就必須要知道這個Session的唯一標識。這個標識就是SessionID,不同伺服器/容器生成SessionID的演算法不同,啟用Session後,瀏覽器發出請求,SessionID就被寫入使用者瀏覽器的Cookie中,瀏覽器後續請求都會把Cookie附加在請求頭中傳遞到伺服器端,伺服器端根據這個SessionID就能找到伺服器端對應的Session進行操作了。

    這樣一來,只要我們能讓SessionID實現共享,那Session就能共用了,所以我們可以採用以下方案來實現:

    1、Session入庫儲存

    將Session存入資料庫,這樣不管是OpenResty還是Tomcat都可以操作資料庫,能輕鬆取出資料庫中的Session。

    2、Session存入NoSQL

    此種方案和Session入庫差不多,原理都一樣,只不過我們用NoSQL(如:Redis),這樣乾的目的就是降低頻繁操作資料庫造成的效能開銷。

    綜上,OpenResty中我們可以直接操作Redis,然後應用程式端也來操作Redis即可,這樣可以實現Session共享。

  • 中秋節和大豐收的關聯?
  • 古詩《絕句(遲日江山麗)》的全文解釋?