session是有狀態的,一般存放於記憶體,資料庫或檔案中。
當伺服器採用分布式或者集群的時候session就會面臨負載均衡的問題。
解決session的負載均衡:負載均衡多伺服器的時候無法確定當前使用者是否登陸,因為多伺服器是不共享session的。其中的一種方法是將session存放於乙個伺服器中,根據請求源的 ip 的雜湊(hash)來選擇要**的伺服器,這種方式可以一定程度上保證特定使用者能連線到相同的伺服器。。如果你的應用需要處理狀態而要求使用者能連線到和之前相同的伺服器,可以考慮採取這種方式。
但這種方式還是沒有徹底的解決負載均衡問題,如果後端有伺服器宕機,那麼這台伺服器的session丟失,被分配到這台服務請求的使用者還是需要重新登入。
而token是無狀態的。token字串中儲存了所有的使用者資訊。
客戶端登陸傳遞資訊給服務端,服務端收到後把使用者資訊加密(token)傳給客戶端,
客戶端將token存放於localstroage等容器中。客戶端每次訪問都傳遞token,服務端解密token,就知道這個使用者是誰了.
jwt跨域認證方案:
jwt就是乙個加密的字串,作為驗證資訊在計算機之間傳遞。jwt是伺服器生成的,通過請求傳遞給客戶端,客戶端可以任意方式存放,所以伺服器就不需要存放jwt資訊,這樣就避免了當使用者基數大,session對記憶體消耗。也加快了認證速度。
負載均衡參考:
分布式環境下的session共享
session共享在當前這個網際網路背景下,已經不是乙個新鮮的話題了,而且如何解決session共享其實也有很多非常成熟的方案 伺服器實現的session複製或session共享,這型別的共享session是和伺服器緊密相關的 我們在web伺服器之間增加了會話資料的同步,通過同步就保證了不同web伺...
分布式session共享
為什麼會出現session共享問題?客戶端與伺服器互動時會產生唯一的sessionid用於標記使用者,但是在分布式架構中,如果還是採用 session 的方式,使用者發起請求,通過 nginx 做請求 時,並不知道是 到伺服器1還是伺服器2,所以就會出現session共享問題。今天主要記錄使用 sp...
session分布式處理
在支援session複製的web伺服器上,通過修改web伺服器的配置,可以實現將session同步到其他web伺服器上,達到每個web伺服器上都儲存一致的session。1.優點 上不需要做支援和修改。2.缺點 需要依賴支援的web伺服器,一旦更換成不支援的web伺服器就不能使用了,在資料量很大的情...