天天看點

.Net分布式架構(二):基于Redis的Session共享

一:Session簡介

  Session是什麼呢?簡單來說就是伺服器給用戶端的一個編号。當一台web伺服器運作時,可能有若幹個使用者浏覽正在運正在這台伺服器上的網站。當每個使用者首次與這台web伺服器建立連接配接時,他就與這個伺服器建立了一個Session,同時伺服器會自動為其配置設定一個SessionID,用以辨別這個使用者的唯一身份。這個SessionID是由web伺服器随機産生的一個由24個字元組成的字元串,我們會在下面的實驗中見到它的實際樣子。

二:Asp.Net中Session的集中模式和配置

  (1):InProc,Session存儲在程序内,這也是ASP.Net中的存儲方式,也是預設值

  (2): StateServer,Session存儲在獨立的狀态服務即ASP.NET State Service中

  (3):SQLServer,Session存儲在SQL Server資料庫中

  (4):Custom,自定義儲存方式,可以儲存在Oracle、SQLServer、MongoDb、Redis中

  本片文章主要講述Session在Redis中的存儲和共享

三:基于Redis的Session Provider配置

 (1)分别對站點A和B的HomeController做如下更改,如下圖所示,增加了建立Session和擷取Session功能

  

.Net分布式架構(二):基于Redis的Session共享
.Net分布式架構(二):基于Redis的Session共享

  分别對應的View視圖

.Net分布式架構(二):基于Redis的Session共享

   

.Net分布式架構(二):基于Redis的Session共享

   (2)RedisProvider配置:Microsoft.Web.RedisSessionStateProvider

    用Nuget安裝Microsoft.Web.RedisSessionStateProvider,如下圖:

   

.Net分布式架構(二):基于Redis的Session共享

        修改配置檔案:

.Net分布式架構(二):基于Redis的Session共享

四:負載均衡Session測試

  (1)浏覽器中輸入:http://192.168.152.128/   建立Session

.Net分布式架構(二):基于Redis的Session共享

     (2)浏覽器中輸入:http://192.168.152.128/home/getsessionvalue, 打開兩個Tab,一定要在同一個浏覽器視窗中打開,否則SessionID肯定是不一樣

.Net分布式架構(二):基于Redis的Session共享

  從圖中可以看到站點A共享站點B建立的Session。

  從redis中也可以看出剛剛建立的Session,如下圖

.Net分布式架構(二):基于Redis的Session共享