有狀態和無狀態服務器

來源:互聯網
上載者:User

1、無狀態與有狀態的伺服器

      伺服器維護的、跟進行中的用戶端互動活動有關的資訊稱為狀態資訊。不儲存狀態資訊的伺服器稱為無狀態服務器,反之稱為具狀態服務器。

      對高效率的要求,促使設計者再伺服器內儲存狀態資訊。在伺服器中儲存少量資訊可以減少客戶和伺服器之間交換報文的大小,並使得伺服器快速相應請求。從本質上講,狀態資訊能讓伺服器記住用戶端以前的請求,並在新的請求到來時計算出漸進的相應。相比之下,採用無狀態服務器在於協議的可靠性:如果報文丟失、重複、傳送失序或者用戶端的電腦崩潰並重啟,狀態資訊就會出錯。如果伺服器在計算響應時使用了錯誤的狀態資訊,則有可能作出錯誤的響應。

      在理想狀態下(即網路可靠傳輸所有的報文而且電腦永不崩潰),在伺服器中儲存每個進行中互動的狀態資訊可以減少報文的大小,並使處理更簡單。

      一般來說,只有使用了複雜的協議解決了不可靠傳輸和系統重啟的問題,才能維護正確的狀態資訊。概括的說:

      在實際的互連網中,機器有可能崩潰和重啟,報文可能丟失、延遲、重複或者傳送失序,採用有狀態的伺服器會導致應用協議的複雜,而這種協議是很難設計、理解和正確實現。

2、無狀態是一個協議問題

      一個伺服器究竟是無狀態的還是有狀態的,這取決於應用協議而不是實現。如果應用協議規定某個報文的含義在某種程度上取決於先前的報文,那麼就不可能提供無狀態的互動。

      從本質上講,無狀態的問題的焦點在於應用協議是否承擔可靠傳輸的責任。為了避免問題發生,確保互動的可靠性,應用協議的設計者必須確保每個報文絕無二義性。也就是說,報文既不能依賴是否被按序交付,也不能依賴先前已經被交付的報文。從本質上講,協議設計者必須確保:無論請求什麼時候到達以及到達幾次,伺服器都給出相同的相應。數學家用術語等冪(idempotent)來指一個總是產生相同結果的數學運算。用這個術語來稱呼這樣一些協議:無論報文到達幾次,它們都能確保伺服器給出相同的響應。

      如果一個互連網中的下層網路可能使報文重複、延遲,或者傳送失序,或者運行客戶應用的電腦可能意外崩潰,那麼伺服器必須是無狀態的。如果應用協議被設計成各個操作是等冪的,則伺服器只能是無狀態的

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.