雲計算的可伸縮性迫使App服務無狀態化

2022-03-26 05:04:27 字數 1029 閱讀 3715

雲計算因其軟體上的按需付費模式而大獲成功,它創造了一種伸縮性模型:

你可以把這種概念擴充套件到整個平台成本上——應用程式伺服器,資料庫和應用。

關於伸縮性的最重要的一點就是——根據負載的情況,白天給公司提供服務的9臺機器在夜間自動縮減到1臺。而這一台之外的其它8臺機器開始給其它公司提供服務。雲計算的這種能夠允許兩個租戶(或更多)共享業務處理能力的特性就叫做過程共享的多重租賃。

假設個場景,就說白天時間有1000個使用者分布在10臺機器上,每台機器大概服務100個使用者。在乙個有狀態的系統結構中,每台機器都只為在本機登入並產生了會話(session)的那100個使用者服務。這個由http負載均衡來實現,叫做會話粘連(session stickiness)。

解決這個問題的乙個方法就是把10臺機器的所有會話狀態都複製到一起。這樣一來,任何一台機器都可以為這些使用者服務。但每台機器就會用掉10倍的記憶體來保留所有使用者的會話狀態。這些會降低伺服器的可用性,因為一旦有更多的使用者使用時,集群中就需要加入更多的伺服器。當你共享多重租賃的應用中的租戶突然暴增時,你就沒法應付了。

在無狀態的應用中,你可以在任何乙個地方執行使用者的請求——會話粘連(session stickness)不再是個問題。當使用者從1000減到100後,你可以立即釋放9臺伺服器,調給其它公司使用,只用1台為這100個使用者服務。.

這聽起來很簡單。而實際操作起來卻不是那麼容易。所有的應用都需要狀態。如果應用伺服器不去處理這些狀態,你就必須想其它的辦法。資料庫就是乙個明顯的問題。當前的資料庫已經在擴充套件問題上遇到了足夠的麻煩了,再加上狀態管理,那是絕對不可行的。所以nosql才要「分布式」儲存。

在paas服務商中你會看到這是一種常見的架構模式:

microsoft azure – web角色 + azure儲存/sql

當然了,還有我們公司 – orangescape,它是執行在gae/amazon ec2 之上的。

我估計vmforce也是這樣的 – spring stateless session beans + force.com db

那就都雲計算吧!有狀態的應用+sql資料庫已成昨日黃花了。(抱歉!實在忍不住。)

資料庫的可伸縮性的探索

資料庫的可伸縮性的探索 author skate time 2009 5 30 資料庫在當今社會越來越重要,尤其對於乙個發展迅速的企業,其資料是 式的發展,為了適應其資料的發展,對資料庫的架構體系設計要求也越來越高,它要可以方便的線形擴充套件 對於資料庫的一般優化思路 1.優化前端的邏輯,把一些不必...

資料系統的可靠性,可伸縮性,可維護性

資料密集型應用設計讀書筆記第一章。現在的資料密集型應用,趨勢是元件化。乙個系統裡,快取,資料庫,索引,和訊息佇列等都解耦開來,每個部分再針對需求選擇對應的元件。而應用業務 則負責維護元件之間的一致性。而乙個資料系統,非功能性需求的基礎目標有三個,可靠性,可伸縮性,可維護性。可靠性 reliabili...

應用伺服器集群的伸縮性設計

應用伺服器應該設計成無狀態的,也就是說應用伺服器不儲存請求上下文資訊,如果將部署有相同的應用伺服器組成乙個集群,每次使用者的請求都可以傳送到集群中任意一台伺服器上去處理,任何一台伺服器的處理結果都是相同的。這樣只要能將使用者請求按照某種規則分發到集群中的不同伺服器上,就可以構成乙個伺服器集群了,每個...