2012-11-30 220 views
6

我有一個網站codeigniter,mysql,其中有arrowchat安裝。 該網站(比如xyz.com)託管在亞馬遜環境中。它有S3實施圖像上傳,CDN實施提供靜態文件,RDS實施分貝,SES郵件發送。有一個計劃,整合自動縮放爲網站。我已經研究了在這種情況下如何實現arrowchat,因爲arrowchat已經緩存了模板和配置文件,因此必須對這些實例進行一些研究。我試過Arrowchat和亞馬遜實例

a)。創建了一個S3存儲桶並將其映射到arrowchat緩存文件夾 - 但它沒有做好,因爲arrowchat庫代碼包括緩存目錄中的文件,所以在s3中我們不能直接在我們的arrowchat代碼中包含文件。 b)。創建了一個子域chat.xyz.com並在該子域中安裝了arrowchat並將其用於實例中。 - 它解決了一些跨代碼問題,解決了一些代碼修復問題。問題是,我們必須在域和子域中管理相同的代碼。

請讓我知道我列出的方法是否是正確的方法。如果不是,請告訴我是否有其他建議。

+0

對不起,但你必須詳細說明一下,爲什麼你需要共享緩存?我的意思是,假設你設置你的DNS路由到你的ELB,你有自動縮放機器。沒有共享緩存,最糟糕的情況會發生什麼?在每個實例上創建緩存的副本?這是一個真正的問題?請詳細說明爲什麼要以上帝的名義分享這些緩存文件。 –

回答

1

您需要使用ElasticCache並在自動縮放組的所有實例中共享節點池。如果模板需要處理,則不能直接使用amazon S3。 (特定實例上的php代碼需要讀取模板,處理它並將其發回)。 僞代碼: 將唯一密鑰與每個模板(即數據/模板名稱)相關聯。 當請求模板時,請檢查Memcache是​​否存在此類密鑰。 否則從S3讀取它並將其加載到緩存中。一旦進入緩存,所有的實例將能夠使用該單個值。