有狀態和無狀態的架構風格分析

2021-08-30 18:19:33 字數 737 閱讀 5353

rest,表述性狀態轉移(representational state transfer)的簡稱。是當前比較熱門的一種web架構風格。

rest的特徵如下:

1,所有的東西都稱為資源,通過uri來定義,只也是資源的唯一id;

2,使用標準的http方法對資源進行操作;

3,所有的通訊都是無狀態的;

雖然rest包含無狀態性(statelessness)的觀念,但是在實際的應用中,只是要求伺服器端不能保持除了單次請求之外的,任何與其通訊的客戶 端的通訊狀態。

如果要獲取乙個使用者的資訊,那麼uri可能就會是/user/12317,並使用get方法獲取資訊。當我們修改使用者資訊是uri可能還是user/12317,但是使用的是put方法來進行操作。所以,在rest風格的架構中,定義uri是非常關鍵且重要的事情。

這樣的風格使得無狀態約束的伺服器的變化對客戶端是不可見的,在系統伸縮性上有很大的好處。

傳統的架構中喜歡使用有狀態的通訊,即客戶端或伺服器端會保留使用者的一些資訊,客戶端的叫cookie,伺服器端的叫session。關於cookie和session的更多資訊,參見本博收藏的《**http的無狀態性》。

系統的無狀態性或有狀態性其實可以共存的,這是根據具體的特點來決定的,只有最合適的架構才是最好的架構 。比如說對個人資訊的管理最好是無狀態的;如果是購物車的話,使用session或是cookie會更好一些。

通過soa的理念,我們可以把有狀態和無狀態的服務分開實現和部署,這樣的系統架構應該更加的合理一些。

Web有狀態無狀態分析

參考 http協議和web應用有狀態和無狀態 http協議 無連線 無狀態 1 ip是無狀態的,只負責將乙個ip包傳送到指定ip位址,不考慮前後傳輸的聯絡。2 tcp是有狀態的,它是可靠的傳輸,面向連線,三次握手保證可靠連線。3 udp是無狀態的,只是在ip上加了個port,不是可靠傳輸,面向無連線...

有狀態元件和無狀態元件

react 基礎知識 有狀態元件和無狀態元件 注意 使用class關鍵字建立的元件,有自己的私有資料 this.state 和生命週期函式 注意 使用function建立的元件,只有props,沒有自己的私有資料和生命週期函式 有狀態元件 用class關鍵字建立出來的元件 用的最多 無狀態元件 用建...

有狀態服務和無狀態服務

伺服器端需要保留請求的相關資訊,每個請求可以預設的使用以前的請求資訊 相比無狀態的 web 伺服器請求,狀態化的伺服器似乎有更為廣闊的應用場景,比如網路遊戲伺服器等。無狀態的服務可以在伺服器中維護每乙個連線的狀態資訊,當服務端接收到每個連線請求時候,可以從本地儲存的資訊來重現上下文。基於有狀態的服務...