1.要解決的問題
當生成動態內容時,常常需要使用包含用戶特有的狀態信息(HTTP會話信息)。然而,當利用負載均衡對多個網站/應用服務器的運行進行控制時,如果讓每一個服務器都各自保存狀態信息,那麼一旦某個服務器失效或者人爲地減少服務器數量,這就會導致狀態信息的丟失。
2.雲模式的說明
這個模式讓你能在橫向擴展架構中維護狀態信息。它可以保證在服務器數量增加時狀態信息的繼承以及防止服務器數量減少(包括失效)時狀態信息的丟失。狀態信息將被存放於高持久性的共享數據存儲(內存/磁盤)中,這些信息將被多個服務器引用。這使得服務器可以“無狀態”,即無需保存狀態信息。即使添加了一個新的服務器,但只要讓它訪問共享數據存儲就能繼承狀態信息。
3.實施
AWS數據存儲包括“ElastiCache”、“SimpleDB(KVS)”和“DynamoDB(KVS)”這些都可以用來保存狀態信息。根據需要選擇其中一項。
準備一個數據存儲來保存狀態信息。
使用一個識別用戶的ID(會話ID或用戶ID)作爲數據存儲中的主鍵,並將用戶信息保存爲對應的值。
使用數據存儲代替web/AP服務器來對狀態信息進保存、引用和更新。
4.配置
5.好處
這讓你在使用橫向擴展模式時無需擔心狀態信息的繼承或丟失問題。
6.注意事項
由於多個web/AP服務器訪問狀態信息都集中在一個節點位置,所以你必須防止數據存儲的性能成爲瓶頸。如果性能要求較高,可以考慮選擇很少成爲瓶頸的DynamoDB。
根據需要,亞馬遜關係型數據庫服務(RDS)(一個關係型數據庫管理系統)或亞馬遜簡單存儲服務(S3)(網絡存儲)也能用於數據存儲。