回覆列表
-
1 # 猿小生
-
2 # 網際網路活化石
首先問題就是錯誤的。
多個使用者訪問tomcat,資料會不會受影響取決於你寫的程式碼。
如果說程式碼本身就是read only的,讀取一段文字,那無論多少人讀到的都是同一個檔案。那是否存在多個使用者讀到了檔案的一部分,資料錯亂這種情況呢?也不是不可能,但一般伺服器預設的設定都是一次性全部讀取出來,所以每個人讀到的都是完整的,相同的資料。每個使用者一個request ,每個request對應一個獨立的執行緒。如果一個請求分多次傳送,客戶端必須和伺服器端配合,來鑑別請求,保證有序對應。
如果程式碼有寫操作,能資料受不受影響,就得看你寫的程式碼是否是執行緒安全的了,如果有執行緒問題,那麼讀到和寫入的資料就可能出現串號等問題。
你感覺不出資料受影響,是因為框架已經幫你封裝了一些操作,來保證執行緒安全。
多個客戶端同時訪問一個tomcat伺服器,資料為什麼不會受影響呢?
首先了解一下session,首先tomcat本身有一塊空間存session,底層結構是ConcurrentHashMap,用來儲存每個會話連線的標誌。當多個客戶端訪問時,每個客戶端都有一個唯一的SessionID,當前後兩個SessionID一致時,則會認為是同一個回話!
sessionID在客戶端第一次請求服務端響應的時 候,服務端就會在響應頭上新增一個sessionID,並且放到cookie裡,當客服端再次請求的時候,就會帶著這個id去訪問伺服器。
而且服務程式也會對使用者進行業務資料隔離!所以說,每個多個使用者訪問一個程式時,資料並不會亂,如果出現越權訪問,那就是bug了!