第 1 步:管理利益相關(guān)者對 WEB 應(yīng)用程序擴展的期望
如果您的 Web 應(yīng)用程序已經(jīng)根據(jù)您的業(yè)務(wù)計劃進行擴展,那么它已經(jīng)在支持您的業(yè)務(wù)增長需求。不要在不需要時嘗試提高可伸縮性。您應(yīng)該執(zhí)行以下操作:
收集數(shù)據(jù)以驗證您的 Web 應(yīng)用程序在可擴展性方面確實支持您的業(yè)務(wù)戰(zhàn)略。
向您的業(yè)務(wù)利益相關(guān)者解釋擴大和擴大項目的成本可能很高。
清楚地與利益相關(guān)者溝通,此類項目可能會增加系統(tǒng)的復(fù)雜性,并且將來添加功能可能會變得更加困難。
設(shè)置您的業(yè)務(wù)利益相關(guān)者的期望,這樣您就不會因為其他人都在談?wù)摽蓴U展的 Web 應(yīng)用程序而不必要地參與此類項目。
第 2 步:使用指標(biāo)定義您的 WEB 應(yīng)用程序可擴展性挑戰(zhàn)
讓我們繼續(xù)前進,我們將假設(shè)您的 Web 應(yīng)用程序確實遇到了可擴展性挑戰(zhàn)。您需要定義特定的可擴展性問題,因此,您需要使用正確的指標(biāo)。概括地說,有四個可擴展性指標(biāo)需要分析,如下所示:
內(nèi)存利用率;
CPU 使用率,高使用率通常表明應(yīng)用程序性能不佳;
網(wǎng)絡(luò) I/O;
磁盤 I/O。
第 3 步:使用正確的工具來監(jiān)控 WEB 應(yīng)用程序的可擴展性
現(xiàn)在您已經(jīng)決定了要關(guān)注的指標(biāo),您需要定期監(jiān)控您的應(yīng)用程序在這些指標(biāo)方面的性能。如果您正在管理自己的基礎(chǔ)架構(gòu),那么您需要投資一個好的“應(yīng)用程序性能監(jiān)控”(APM)解決方案。
第 4 步:使用正確的基礎(chǔ)架構(gòu)選項實現(xiàn)可擴展性
我建議您為您的 Web 應(yīng)用程序選用阿里提供商,因為這對企業(yè)家來說很有意義。阿里是一種云計算模型,其中托管云服務(wù)提供商負責(zé)許多方面,例如:
基礎(chǔ)設(shè)施;
聯(lián)網(wǎng);
服務(wù)器;
貯存;
中間件;
操作系統(tǒng)(OS);
運行環(huán)境;
數(shù)據(jù)庫;
輕松與三方服務(wù)提供商集成的能力。
第 5 步:為可擴展性選擇正確的架構(gòu)模式
大型 Web 應(yīng)用程序架構(gòu)是構(gòu)建可擴展 Web 應(yīng)用程序時的關(guān)鍵考慮因素。架構(gòu)問題會顯著影響可擴展性。有很多架構(gòu)模式,我在前面的“大型企業(yè) Java 項目架構(gòu)”中已經(jīng)解釋過它們。
第 6 步:使用正確的數(shù)據(jù)庫實現(xiàn)擴展
對于擴展,在解決了基礎(chǔ)架構(gòu)和架構(gòu)方面之后,數(shù)據(jù)庫是一個明顯的重點領(lǐng)域。請注意,在數(shù)據(jù)庫方面沒有“一刀切”的建議。您需要執(zhí)行以下操作:
仔細分析您的 Web 應(yīng)用程序需求??紤]您將存儲哪些類型的數(shù)據(jù)。它只是關(guān)系數(shù)據(jù)嗎?您是否還需要存儲“斷開連接”的數(shù)據(jù),即沒有事務(wù)關(guān)系的數(shù)據(jù)?您是否存儲兩種數(shù)據(jù)?
您將需要一個關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 來存儲您的關(guān)系數(shù)據(jù)。MySQL是具有高可擴展性的良好選項。
您將需要MySQL數(shù)據(jù)庫來存儲“斷開連接”的數(shù)據(jù)。MongoDB 是一個高度可擴展的MySQL數(shù)據(jù)庫。您可以在“滿足您的業(yè)務(wù)需求的最佳MySQL數(shù)據(jù)庫選項”。