1. 程式人生 > >談大規模交易系統架構設計方法--Stateless(無狀態web服務)

談大規模交易系統架構設計方法--Stateless(無狀態web服務)

大家都知道大規模系統中Web伺服器不止一臺,也不是幾十臺,很可能是成百上千臺。系統必須是可擴(Scalable)的;特別是Web伺服器必須是可擴的,因為大型系統的流量會是非常大的。

    最簡單最便宜的方法就是加Linux機器來作為Web伺服器。你設計的架構如果不能支援這種通過加機器來擴充系統的方法的話,以後隨著流量的增大,領導和群眾都會瘋掉;系統重構估計是不可避免的。

    顯然,要做到這一點,每臺Web伺服器上是不能儲存(交易/請求/session。。。)的狀態的。就是說每臺Web伺服器上是Stateless的。

    有人要說,我偏偏要在Web伺服器上保留狀態,咋啦?。我在Web伺服器的前面放一個分流伺服器,把每個請求按Cookie把請求分流到相應的有狀態的Web伺服器上,上一次Cookie去哪臺,這次請求我還是分流去那臺;不就解決問題了嗎?咋啦?

   得,您要這麼做。還是那句話,小系統可能沒問題。大系統你一定瘋掉。先不說你那個分流伺服器能承載多大壓力,會不會是瓶頸。就說那萬一上次去的那臺Web伺服器掛掉了,你這新的請求往哪兒送?傻眼了吧。。

   所以,一定要記住:Web伺服器,千千萬萬不要是有狀態的,不要保留(Session/交易)等資訊。這些資訊請保留到後臺資料庫伺服器裡去。

   這也是為什麼大型交易系統強調Session的管理的原因。Session要集中管理,供每個Web伺服器使用。這樣,任何一個Web伺服器掛掉,都不會影響交易的繼續進行。