理解可擴(kuò)展性--第一部分:克隆

可擴(kuò)展的web服務(wù)的公共服務(wù)器隱藏在負(fù)載均衡器后面。這個(gè)負(fù)載均衡器將負(fù)載(來(lái)自用戶的請(qǐng)求)均勻地分配到應(yīng)用服務(wù)器組/集群上。這意味著,例如,如果用戶Steve與你的服務(wù)交互,他的第一個(gè)請(qǐng)求可能被服務(wù)器2服務(wù),然后他的第二個(gè)請(qǐng)求可能被服務(wù)器9服務(wù),然后可能在他的第三個(gè)請(qǐng)求時(shí)再次被服務(wù)器2服務(wù)。

Steve應(yīng)該總是得到相同的請(qǐng)求返回結(jié)果,不管他被哪個(gè)服務(wù)器服務(wù)。這就是可擴(kuò)展性的第一條黃金法則:每個(gè)服務(wù)器都包含完全相同的代碼庫(kù),并且不在本地磁盤或內(nèi)存上存儲(chǔ)任何用戶相關(guān)的數(shù)據(jù),比如會(huì)話或個(gè)人資料圖片。

會(huì)話需要存儲(chǔ)在一個(gè)集中的數(shù)據(jù)存儲(chǔ)中,所有應(yīng)用程序服務(wù)器都可以訪問(wèn)該存儲(chǔ)。它可以是一個(gè)外部數(shù)據(jù)庫(kù)或外部持久緩存,就像Redis。外部持久緩存比外部數(shù)據(jù)庫(kù)具有更好的性能。這里所說(shuō)的外部是指數(shù)據(jù)存儲(chǔ)并不駐留在應(yīng)用服務(wù)器上。相反,它位于應(yīng)用程序服務(wù)器的數(shù)據(jù)中心中或附近的某個(gè)地方。

但是部署呢?如何確保代碼更改被發(fā)送到所有服務(wù)器,而沒(méi)有一個(gè)服務(wù)器仍然服務(wù)于舊的代碼?幸運(yùn)的是,這個(gè)棘手的問(wèn)題已經(jīng)被偉大的工具Capistrano解決了。這需要一些學(xué)習(xí),特別是如果你不喜歡Ruby on Rails。

在“外包”你的會(huì)話并從所有服務(wù)器上提供相同的代碼庫(kù)之后,現(xiàn)在可以從這些服務(wù)器之一創(chuàng)建一個(gè)圖像文件(AWS稱之為AMI - Amazon Machine image)。使用這個(gè)AMI作為“超級(jí)克隆”,您的所有新實(shí)例都基于它。每當(dāng)您啟動(dòng)一個(gè)新的實(shí)例/克隆時(shí),只需對(duì)您最新的代碼進(jìn)行初始部署,您就準(zhǔn)備好了!

引用:
https://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容