如今是網(wǎng)站和應(yīng)用程序數(shù)量爆炸的時(shí)代。如果您是企業(yè),您需要一個(gè)相關(guān)的 Web 平臺(tái)。應(yīng)用程序使您能夠輕松地向目標(biāo)客戶(hù)營(yíng)銷(xiāo)和交付您的服務(wù)。
無(wú)論創(chuàng)建Web 應(yīng)用程序的原因如何,您都需要確定如何構(gòu)建它。在部署服務(wù)器時(shí),您有許多選項(xiàng)。您選擇的服務(wù)器部署方案將決定您如何運(yùn)行和管理環(huán)境中的所有內(nèi)容。
如何 為業(yè)務(wù)制定 服務(wù)器 部署方案 ?
首先,您需要考慮您的 Web 應(yīng)用程序有哪些要求,必須包含哪些功能。例如,應(yīng)用程序需要易于擴(kuò)展,或者,需要您的應(yīng)用程序在PC端和移動(dòng)設(shè)備上都可以順利工作。同時(shí),您的預(yù)算可能也是您最關(guān)心的問(wèn)題。
無(wú)論您的要求是什么,您都應(yīng)該知道,您可以為應(yīng)用程序制定自定義的方案策略。在本文中,恒創(chuàng)科技將探索 Web 應(yīng)用程序的各種類(lèi)型的服務(wù)器。我們將討論各種使用案例,以及何時(shí)最好使用某種部署方案。為幫助您決定是否適合您,我們還將提供每種服務(wù)器部署方案的一些優(yōu)點(diǎn)和缺點(diǎn)。
一、將所有環(huán)境放在 一臺(tái)服務(wù)器 中
您將整個(gè)環(huán)境加載到一臺(tái)服務(wù)器中。該環(huán)境將包括您的 Web 服務(wù)器、應(yīng)用服務(wù)器以及數(shù)據(jù)庫(kù)服務(wù)器。例如,LAMP(Linux、Apache、MySQL和PHP ) 堆棧配置。
● 適用場(chǎng)景:如果您時(shí)間不足,這種類(lèi)型的安排效果最好。這是最簡(jiǎn)單、最快速的部署方案,它適用于簡(jiǎn)單化的 Web 應(yīng)用程序。
● 優(yōu)點(diǎn):簡(jiǎn)單易懂,易于理解和實(shí)施;只需很少的時(shí)間即可部署全部?jī)?nèi)容。
● 缺點(diǎn):不允許水平可擴(kuò)展性;在組件隔離方面提供很少;由于處于同一臺(tái)服務(wù)器中,應(yīng)用程序和數(shù)據(jù)庫(kù)本質(zhì)上是在爭(zhēng)奪相同的資源;可能遇到不佳的應(yīng)用程序運(yùn)行表現(xiàn)。
二、獨(dú)立 數(shù)據(jù)庫(kù)服務(wù)器
使用單臺(tái)服務(wù)器的主要問(wèn)題是對(duì)有限資源的競(jìng)爭(zhēng)。這種部署方案旨在解決此問(wèn)題。在這里,數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)與應(yīng)用程序服務(wù)器保持獨(dú)立。數(shù)據(jù)庫(kù)服務(wù)器位于內(nèi)網(wǎng)中,并擁有自己的資源。這可以提高性能并提高安全性。
● 適用場(chǎng)景:如果您擔(dān)心數(shù)據(jù)庫(kù)和應(yīng)用程序在相同的資源上競(jìng)爭(zhēng),這是理想的解決方案。同樣,配置也非常簡(jiǎn)單。
● 好處:應(yīng)用程序和數(shù)據(jù)庫(kù)相互獨(dú)立,使用單獨(dú)專(zhuān)用的系統(tǒng)資源,包括 CPU、內(nèi)存、I/O 等;在任何一個(gè)應(yīng)用程序和數(shù)據(jù)庫(kù)層中都具有更大的可擴(kuò)展性潛力;您可以根據(jù)需要添加和刪除資源;即使您從公共互聯(lián)網(wǎng)上刪除數(shù)據(jù)庫(kù),您也可以保持安全性。
● 缺點(diǎn):比單臺(tái)服務(wù)器的部署稍微復(fù)雜一點(diǎn);兩臺(tái)服務(wù)器之間的低帶寬或高延遲網(wǎng)絡(luò)連接可能會(huì)產(chǎn)生性能問(wèn)題。
三、 反向代理或負(fù)載平衡
負(fù)載平衡器通常用于服務(wù)器環(huán)境,以提高性能和可靠性。他們通過(guò)"平衡負(fù)載"來(lái)做到這一點(diǎn):即在多臺(tái)服務(wù)器之間分配工作負(fù)載。
● 適用場(chǎng)景:負(fù)載平衡器對(duì)于您需要執(zhí)行水平縮放非常有用。水平縮放基本上意味著向環(huán)境中添加更多的服務(wù)器。您還可以使用應(yīng)用層反向代理同時(shí)使用一個(gè)域名和端口為多個(gè)應(yīng)用程序提供服務(wù)。Nginx就是性能非常好的反向代理服務(wù)器,用來(lái)做負(fù)載均衡。
● 好處:如果線(xiàn)路中的一臺(tái)服務(wù)器出現(xiàn)故障,其他服務(wù)器會(huì)通過(guò)平衡工作負(fù)載來(lái)補(bǔ)償其功能;允許您執(zhí)行水平縮放以增加或減少環(huán)境容量;它還可以限制提供防止 DDOS 攻擊的客戶(hù)端連接。
● 缺點(diǎn):如果系統(tǒng)資源不足,負(fù)載平衡器可能會(huì)限制應(yīng)用的性能;需要適當(dāng)?shù)呐渲脕?lái)確保適當(dāng)?shù)男阅?比單臺(tái)服務(wù)器或單獨(dú)的服務(wù)器部署復(fù)雜得多;您需要考慮諸如 SSL 終止和需要粘性會(huì)話(huà)的應(yīng)用程序等因素;使用負(fù)載平衡器的主要關(guān)注點(diǎn)是它是一個(gè)故障點(diǎn)。這意味著,如果負(fù)載平衡器無(wú)法工作,您的整個(gè)服務(wù)將下降。
四、 HTTP 加速器或緩存反向代理
您可以通過(guò)這種部署方案,來(lái)提高您為應(yīng)用程序用戶(hù)提供內(nèi)容的速度。當(dāng)用戶(hù)第一次請(qǐng)求時(shí),HTTP 加速器會(huì)保存其中的內(nèi)容。此后,當(dāng)任何類(lèi)似的請(qǐng)求進(jìn)來(lái)時(shí),它會(huì)快速為內(nèi)容提供服務(wù),而無(wú)需與應(yīng)用程序服務(wù)器交互。我們可以使用 Nginx 實(shí)現(xiàn) HTTP 緩存加速。
● 適用場(chǎng)景:這種部署方案最適合用戶(hù)非常頻繁地請(qǐng)求的文件和內(nèi)容。它也非常適用于內(nèi)容密集的動(dòng)態(tài) Web 應(yīng)用程序。
● 好處:緩存和壓縮可以顯著提高應(yīng)用程序和請(qǐng)求處理的速度;減少 CPU 的負(fù)載,也會(huì)提高站點(diǎn)性能;您也可以將此用作反向代理負(fù)載平衡器。
● 缺點(diǎn):你必須調(diào)整好它,以提取其最佳性能;如果緩存準(zhǔn)確率較低,您可能會(huì)遇到不良性能。
五、 數(shù)據(jù)庫(kù) 主從 復(fù)制 架構(gòu)
主從數(shù)據(jù)庫(kù)復(fù)制類(lèi)型的服務(wù)器架構(gòu),對(duì)于執(zhí)行讀數(shù)大于寫(xiě)入的系統(tǒng)通常非常有用。例如,內(nèi)容管理系統(tǒng)可以真正利用這樣的架構(gòu)。您需要一個(gè)主節(jié)點(diǎn)和一個(gè)或多個(gè)復(fù)制節(jié)點(diǎn)進(jìn)行復(fù)制。它將讀數(shù)分布在所有節(jié)點(diǎn)上。更新僅轉(zhuǎn)到主節(jié)點(diǎn)。
● 適用場(chǎng)景:正如我們提到的,基于復(fù)制的數(shù)據(jù)庫(kù)部署方案有助于提高系統(tǒng)的讀取性能。您可以將其用于CMS等應(yīng)用程序。
● 好處:它提高了數(shù)據(jù)庫(kù)的讀取性能,因?yàn)樗鼘⑵鋫鞑サ礁北局?如果您僅使用主節(jié)點(diǎn)進(jìn)行更新,您還可以提高寫(xiě)入性能。
● 缺點(diǎn):任何嘗試訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的應(yīng)用程序必須能夠決定向哪個(gè)節(jié)點(diǎn)發(fā)送更新和閱讀請(qǐng)求;如果主副本發(fā)生故障,則更新將停止。您必須解決問(wèn)題才能繼續(xù)更新;沒(méi)有故障轉(zhuǎn)移機(jī)制來(lái)適應(yīng)潛在的主節(jié)點(diǎn)故障。
六、 使用 多種組合部署 服務(wù)器
你也可以結(jié)合各種技術(shù)和架構(gòu),以獲得預(yù)期的結(jié)果。這意味著您可以在單個(gè)環(huán)境中加載應(yīng)用程序服務(wù)器負(fù)載均衡與緩存服務(wù)器,并復(fù)制數(shù)據(jù)庫(kù)。這樣做可以讓您利用兩臺(tái)服務(wù)器的功能。但是,它不會(huì)使部署更加復(fù)雜或麻煩。例如下圖所示環(huán)境:
在這樣的環(huán)境中,負(fù)載平衡器將向緩存服務(wù)器發(fā)送靜態(tài)請(qǐng)求。靜態(tài)內(nèi)容包括CSS、圖像和Javascript等。它將將任何其他類(lèi)型的內(nèi)容請(qǐng)求直接發(fā)送到應(yīng)用程序服務(wù)器。
假設(shè)用戶(hù)正在從環(huán)境中請(qǐng)求一些靜態(tài)內(nèi)容,服務(wù)器的反應(yīng)如下:
● 負(fù)載平衡器將首先確定內(nèi)容是緩存命中還是緩存誤用。緩存命中的內(nèi)容存在于緩存中,而緩存未命中的內(nèi)容不存在。它通過(guò)檢查緩存后端來(lái)做到這一點(diǎn)。
● 如果緩存命中,負(fù)載平衡器會(huì)將內(nèi)容發(fā)送給用戶(hù);
● 如果緩存錯(cuò)過(guò),緩存服務(wù)器將請(qǐng)求轉(zhuǎn)發(fā)到應(yīng)用程序的后端。
● 應(yīng)用后端將從數(shù)據(jù)庫(kù)中查找和發(fā)送內(nèi)容。
● 緩存后端接收負(fù)載平衡器中的內(nèi)容。它還在將其返回到負(fù)載平衡器之前緩存此內(nèi)容。
● 后者然后轉(zhuǎn)發(fā)給用戶(hù)的響應(yīng)。
另一方面,如果用戶(hù)請(qǐng)求動(dòng)態(tài)內(nèi)容,將會(huì)發(fā)生如下情況:
● 請(qǐng)求將從用戶(hù)到負(fù)載平衡器。
● 此請(qǐng)求請(qǐng)?jiān)L問(wèn)應(yīng)用后端。
● 應(yīng)用后端定位所請(qǐng)求的內(nèi)容并將其返回到負(fù)載平衡器。
● 用戶(hù)接收內(nèi)容。
這種綜合環(huán)境的主要好處之一是它更可靠。不僅如此,它還具有卓越的性能能力。但是,仍有兩個(gè)故障點(diǎn):負(fù)載平衡器和主數(shù)據(jù)庫(kù)服務(wù)器。
結(jié)論
您可以在您的環(huán)境中自行使用相應(yīng)的服務(wù)器部署方案。同時(shí),您也可以將其中幾個(gè)組合在一起,創(chuàng)建個(gè)性化的解決方案。這完全取決于您希望從架構(gòu)中獲得的功能。了解每種服務(wù)器部署方案的工作原理,將有助于您為自己的應(yīng)用程序做出決策。最好的辦法就是從小型架構(gòu)開(kāi)始做起,在獲得經(jīng)驗(yàn)時(shí)不斷增加設(shè)置的復(fù)雜性。
我們專(zhuān)注高端建站,小程序開(kāi)發(fā)、軟件系統(tǒng)定制開(kāi)發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開(kāi)發(fā)、各類(lèi)API接口對(duì)接開(kāi)發(fā)等。十余年開(kāi)發(fā)經(jīng)驗(yàn),每一個(gè)項(xiàng)目承諾做到滿(mǎn)意為止,多一次對(duì)比,一定讓您多一份收獲!