有狀態服務和無狀態服務

2021-10-02 16:07:20 字數 708 閱讀 9726

伺服器端需要保留請求的相關資訊,每個請求可以預設的使用以前的請求資訊

相比無狀態的 web 伺服器請求,狀態化的伺服器似乎有更為廣闊的應用場景,比如網路遊戲伺服器等。無狀態的服務可以在伺服器中維護每乙個連線的狀態資訊,當服務端接收到每個連線請求時候,可以從本地儲存的資訊來重現上下文。基於有狀態的服務服務端可以很容易進行狀態管理,比如說當乙個使用者成功登陸之後,服務端可以根據其使用者名稱獲取一切相關資訊,後續操作中也很簡單直接調取該使用者的相關資訊

優點是顯而易見,功能實現很方便,但由於需要維護大量的狀態資訊,效能方面會比無狀態伺服器差

伺服器端所能處理的全部基於該請求的所有資訊,以及伺服器自己儲存的可以被所有請求公用的資訊

如 web 伺服器請求,每次 http 請求和以前請求都沒關係,一旦伺服器響應完客戶請求之後,就斷開連線,客戶端的下一次請求將重新建立網路連線,在後來的發展中,出現了 cookie 技術,cookie 就是狀態資訊,客戶端向服務端請求之後,服務端向客戶端傳送乙個 cookie 資訊,cookie 中含有服務端上的一些資訊,客戶端在後續請求時可以攜帶這個 cookie,伺服器依據這個 cookie 就可以判斷請求的上下文。cookie 的存在可以說是無狀態向有狀態乙個過渡的手段,就是通過 cookie 來維護上下文關係,cookie 可以說是狀態資訊的外部拓展手段

優點也是顯而易見,伺服器中不用維護大量的狀態資訊,但是在做即時通訊伺服器時候,無狀態伺服器將不堪其重,他需要不斷建立連線,這幾乎是不實際的

無狀態服務 VS 有狀態服務

對伺服器程式來說,究竟是有狀態服務,還是無狀態服務,其判斷依舊是指兩個來自相同發起者的請求在伺服器端是否具備上下文關係。如果是狀態化請求,那麼伺服器端一般都要儲存請求的相關資訊,每個請求可以預設地使用以前的請求資訊。而對於無狀態請求,伺服器端所能夠處理的過程必須全部來自於請求所攜帶的資訊,以及其他伺...

無狀態服務VS有狀態服務

在網易蜂巢的服務管理中存在兩種服務 無狀態服務和有狀態服務。無狀態服務 stateless service 是指該服務執行的例項不會在本地儲存需要持久化的資料,並且多個例項對於同乙個請求響應的結果是完全一致的。這類服務在網易蜂巢雲平台建立後,借助k8s內部的負載均衡,當訪問該服務的請求到達服務一端後...

有狀態服務還是無狀態服務

無狀態服務 就是沒有特殊狀態的服務,各個請求對於伺服器來說統一無差別處理,請求自身攜帶了所有服務端所需要的所有引數 服務端自身不儲存跟請求相關的任何資料,不包括資料庫儲存資訊 有狀態服務 與之相反,有狀態服務在服務端保留之前請求的資訊,用以處理當前請求,比如session等 如何選擇 有狀態服務常常...