Openresty怎麼跟後端tomcat共用session?

MILKLA


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共享。

以上就是我的觀點,對於這個問題大家是怎麼看待的呢?歡迎在下方評論區交流 ~ 我是科技領域創作者,十年互聯網從業經驗,歡迎關注我瞭解更多科技知識!


分享到:


相關文章: