如今,網(wǎng)站和應(yīng)用程序的數(shù)量呈爆炸式增長。如果你是企業(yè),你需要一個(gè)相關(guān)的Web平臺。應(yīng)用程序使您能夠輕松地向目標(biāo)客戶營銷和交付服務(wù)。
無論創(chuàng)建Web應(yīng)用程序的原因是什么,您都需要決定如何構(gòu)建它。部署服務(wù)器時(shí),您有許多選擇。您選擇的服務(wù)器部署方案將決定您如何運(yùn)行和管理環(huán)境中的一切。
如何為企業(yè)制定服務(wù)器部署計(jì)劃?
首先,您需要考慮您的網(wǎng)絡(luò)應(yīng)用程序有什么需求,它必須包含什么功能。例如,您的應(yīng)用程序需要易于擴(kuò)展,或者您的應(yīng)用程序需要在pC和移動設(shè)備上都能順利工作。同時(shí),你的預(yù)算可能是你最關(guān)心的問題。
無論您的需求是什么,您都應(yīng)該知道您可以為您的應(yīng)用程序制定定制的方案策略。在本文中,恒創(chuàng)科技將探索各種類型的網(wǎng)絡(luò)應(yīng)用服務(wù)器。我們將討論各種用例以及何時(shí)最好使用部署場景。為了幫助您決定是否適合您,我們還將提供每種服務(wù)器部署方案的一些優(yōu)缺點(diǎn)。
首先,將所有環(huán)境放在一臺服務(wù)器中
您將整個(gè)環(huán)境加載到一臺服務(wù)器中。該環(huán)境將包括您的網(wǎng)絡(luò)服務(wù)器、應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器。例如LAMp(Linux、Apache、MySQL和pHp)堆棧配置。
適用場景:如果時(shí)間不夠,這種安排效果最好。這是最簡單、最快的部署方案,適用于簡化的Web應(yīng)用。
優(yōu)點(diǎn):易于理解,易于理解和實(shí)施;部署所有內(nèi)容只需要很少的時(shí)間。
缺點(diǎn):不允許橫向擴(kuò)展;在組件隔離方面提供很少;因?yàn)樗鼈冊谕粋€(gè)服務(wù)器上,所以應(yīng)用程序和數(shù)據(jù)庫本質(zhì)上是在爭奪相同的資源。您可能會遇到較差的應(yīng)用程序性能。
第二,獨(dú)立的數(shù)據(jù)庫服務(wù)器
使用單一服務(wù)器的主要問題是對有限資源的競爭。這個(gè)部署方案就是為了解決這個(gè)問題而設(shè)計(jì)的。這里,數(shù)據(jù)庫管理系統(tǒng)(DBMS)獨(dú)立于應(yīng)用服務(wù)器。數(shù)據(jù)庫服務(wù)器位于內(nèi)部網(wǎng)中,有自己的資源。這可以提高性能和安全性。
適用場景:如果擔(dān)心數(shù)據(jù)庫和應(yīng)用在同一個(gè)資源上競爭,這是一個(gè)理想的解決方案。同樣,配置也很簡單。
優(yōu)點(diǎn):應(yīng)用程序和數(shù)據(jù)庫相互獨(dú)立,使用單獨(dú)的專用系統(tǒng)資源,包括CpU、內(nèi)存、I/O等。它在任何應(yīng)用程序和數(shù)據(jù)庫層都有更大的可擴(kuò)展性潛力;您可以根據(jù)需要添加和刪除資源;即使你把數(shù)據(jù)庫從公共互聯(lián)網(wǎng)上刪除,你也能保證它的安全。
缺點(diǎn):比單個(gè)服務(wù)器的部署略復(fù)雜;兩臺服務(wù)器之間的低帶寬或高延遲網(wǎng)絡(luò)連接可能會導(dǎo)致性能問題。
第三,反向代理或負(fù)載平衡
負(fù)載平衡器通常用于服務(wù)器環(huán)境,以提高性能和可靠性。他們通過“平衡負(fù)載”來做到這一點(diǎn):在多臺服務(wù)器之間分配工作負(fù)載。
適用場景:負(fù)載均衡器對你進(jìn)行水平伸縮非常有用。橫向擴(kuò)展基本上意味著向環(huán)境中添加更多服務(wù)器。您還可以使用應(yīng)用層反向代理來同時(shí)服務(wù)多個(gè)具有一個(gè)域名和端口的應(yīng)用程序。Nginx是一個(gè)性能非常好的反向代理服務(wù)器,用于負(fù)載均衡。
好處:如果線內(nèi)一臺服務(wù)器出現(xiàn)故障,其他服務(wù)器會通過平衡工作量來補(bǔ)償其功能;允許您執(zhí)行水平擴(kuò)展以增加或減少環(huán)境容量;它還可以限制提供針對DDOS攻擊的保護(hù)的客戶端連接。
缺點(diǎn):如果系統(tǒng)資源不足,負(fù)載均衡器可能會限制應(yīng)用的性能;需要適當(dāng)?shù)呐渲脕泶_保適當(dāng)?shù)男阅?;它比單服?wù)器或單服務(wù)器部署復(fù)雜得多;您需要考慮SSL終止和需要粘性會話的應(yīng)用程序等因素;使用負(fù)載平衡器的主要問題是它是一個(gè)故障點(diǎn)。這意味著如果負(fù)載平衡器不起作用,您的整個(gè)服務(wù)將會下降。
第四,HTTp加速器或緩存反向代理
通過這種部署方案,您可以提高向應(yīng)用程序用戶提供內(nèi)容的速度。當(dāng)用戶第一次請求時(shí),HTTp加速器將保存內(nèi)容。之后,當(dāng)任何類似的請求到來時(shí),它將快速提供內(nèi)容,而無需與應(yīng)用服務(wù)器交互。我們可以使用Nginx來加速HTTp緩存。
適用場景:該部署方案最適合用戶經(jīng)常請求的文件和內(nèi)容。它也非常適合內(nèi)容密集型的動態(tài)Web應(yīng)用程序。
好處:緩存和壓縮可以顯著提高應(yīng)用和請求處理的速度;降低CpU負(fù)載也將提高站點(diǎn)性能;您也可以將其用作反向代理負(fù)載平衡器。
缺點(diǎn):必須調(diào)整才能提取出最佳性能;如果緩存精度較低,您可能會遇到性能不佳的情況。
動詞(verb的縮寫)數(shù)據(jù)庫主從復(fù)制體系結(jié)構(gòu)
主從數(shù)據(jù)庫復(fù)制類型的服務(wù)器體系結(jié)構(gòu)通常對執(zhí)行讀取大于寫入的系統(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)上。更新只到達(dá)主節(jié)點(diǎn)。
適用場景:正如我們提到的,基于復(fù)制的數(shù)據(jù)庫部署方案有助于提高系統(tǒng)的讀取性能。您可以將其用于CMS等應(yīng)用程序。
優(yōu)點(diǎn):提高了數(shù)據(jù)庫的讀取性能,因?yàn)樗鼘?shù)據(jù)庫傳播到副本;如果只使用主節(jié)點(diǎn)進(jìn)行更新,還可以提高寫入性能。
缺點(diǎn):任何試圖訪問數(shù)據(jù)庫的應(yīng)用程序都必須能夠決定向哪個(gè)節(jié)點(diǎn)發(fā)送更新和讀取請求;如果主拷貝失敗,更新將停止。您必須先解決問題,然后才能繼續(xù)更新;沒有故障轉(zhuǎn)移機(jī)制來適應(yīng)潛在的主節(jié)點(diǎn)故障。
不及物動詞部署各種組合的服務(wù)器
您還可以結(jié)合各種技術(shù)和體系結(jié)構(gòu)來實(shí)現(xiàn)期望的結(jié)果。這意味著您可以在單個(gè)環(huán)境中加載應(yīng)用服務(wù)器負(fù)載平衡和緩存服務(wù)器以及復(fù)制數(shù)據(jù)庫。這樣做可以讓您利用兩臺服務(wù)器的功能。但是,它不會使部署變得更加復(fù)雜或繁瑣。例如,下圖所示的環(huán)境:
在這樣的環(huán)境中,負(fù)載平衡器將向緩存服務(wù)器發(fā)送靜態(tài)請求。靜態(tài)內(nèi)容包括CSS、圖片、Javascript等。它將直接向應(yīng)用服務(wù)器發(fā)送任何其他類型的內(nèi)容請求。
假設(shè)用戶從環(huán)境中請求一些靜態(tài)內(nèi)容,服務(wù)器的反應(yīng)如下:
負(fù)載平衡器將首先確定內(nèi)容是緩存命中還是緩存濫用。緩存命中內(nèi)容存在于緩存中,而緩存未命中內(nèi)容不存在。它通過檢查緩存后端來做到這一點(diǎn)。
如果緩存命中,負(fù)載均衡器將內(nèi)容發(fā)送給用戶;
如果緩存丟失,緩存服務(wù)器會將請求轉(zhuǎn)發(fā)到應(yīng)用程序的后端。
應(yīng)用后端將從數(shù)據(jù)庫中找到并發(fā)送內(nèi)容。
緩存后端接收負(fù)載平衡器中的內(nèi)容。它還會在將內(nèi)容返回到負(fù)載平衡器之前緩存這些內(nèi)容。
后者隨后被轉(zhuǎn)發(fā)給用戶的響應(yīng)。
另一方面,如果用戶請求動態(tài)內(nèi)容,將會發(fā)生以下情況:
請求將從用戶發(fā)送到負(fù)載平衡器。
請?jiān)L問此請求的應(yīng)用程序后端。
應(yīng)用后端定位所請求的內(nèi)容,并將其返回給負(fù)載平衡器。
用戶接收內(nèi)容。
這種集成環(huán)境的主要好處之一是更可靠。不僅如此,它還具有出色的性能能力。但是,仍然有兩個(gè)故障點(diǎn):負(fù)載平衡器和主數(shù)據(jù)庫服務(wù)器。
結(jié)論
您可以在自己的環(huán)境中使用相應(yīng)的服務(wù)器部署方案。同時(shí),您也可以將其中的幾個(gè)結(jié)合起來,創(chuàng)建個(gè)性化的解決方案。這完全取決于您想要從架構(gòu)中獲得的功能。了解每種服務(wù)器部署方案的工作原理將有助于您為應(yīng)用程序做出決策。最好的方法是從一個(gè)小的架構(gòu)開始,隨著經(jīng)驗(yàn)的積累,增加設(shè)置的復(fù)雜性。