為(wèi)什(shén)麽北(běi)京軟件(jiàn)公司在項目開(kā★↓∑i)發中考慮系統的(de)可(kě)擴展★σδ∏性?_北(běi)京軟件(jiàn)開(♣∑kāi)發公司
從(cóng)曆史上(shàng)看(kàn),δ×₩
北(běi)京軟件(jiàn)公司認為(wèi),梳理(lǐ)其軟件(jiàn)項≈α♦©目的(de)所有(yǒu)開(kāi)發細節過度的(de)>Ωα。由于軟件(jiàn)開(kāi)發人(rén)員(yuán)對(duì)可 >(kě)變技(jì)術(shù)和(hé)系統需求的(de)複雜(zá)÷<§解釋,軟件(jiàn)開(kāi)發公司認為(wèi)這(zhè)一(yīφ≈)過程非常乏味。因此,在系統可(kě)擴展₽≥性方面,企業(yè)代表希望與軟件(jiàn)開¶∞(kāi)發人(rén)員(yuán)進行(xíng)一(yīφ₽ )般業(yè)務需求討(tǎo)論,同時(shí)不(¥₹♣bù)討(tǎo)論所有(yǒu)的(de)技(jì)術(sh↑×¥ù)上(shàng)的(de)細節。如(rú)果企業(y±λè)主開(kāi)始使用(yòng)開(kāi)發人(rén)員 (yuán)的(de)語言,系統的(de)質量會(huì)倍增。特别是(sh>σσ∑ì),這(zhè)将有(yǒu)助于避免許多(duō)問(w↓✔ èn)題,而開(kāi)發人(rén)員(yuán)創建'$複雜(zá)的(de)基于服務器(qì)的(de)解決方案。
企業(yè)如(rú)何與軟件(jiàn)開(kāi)發人(✔α✘rén)員(yuán)保持密切聯系,了(le)解系統可("™¥&kě)擴展性的(de)細節?
讓我們考慮一(yī)個(gè)開(kāi)發新系統δφ "的(de)項目開(kāi)始的(de)情況。我們設計(j∑±₩ì)了(le)5個(gè)問(wèn)題♥∑,有(yǒu)助于簡化(huà)談判并将其引↓ 導到(dào)正确的(de)軌道(dào)上§(shàng)。
5個(gè)主要(yào)系統的(de)可(kě)©♦α擴展性問(wèn)題,從(cóng)我們的(de)經驗來(π"✔lái)看(kàn),開(kāi)發人(ré •↑n)員(yuán)在談論系統可(kě)擴展性時(shí)通♣★÷(tōng)常會(huì)提出5個(gè)主要(yào)問(wèn± ★)題:
1.做(zuò)企業(yè)了(le)解計(jì)劃的(de)系統→σ≤≠的(de)特點是(shì)什(shén)麽?
2.系統用(yòng)戶的(de)典型操作(zuò)是(shì)什♠δ$✔(shén)麽?
3.系統是(shì)否有(yǒu)什(shén)麽瓶頸?系統的(de)哪•®一(yī)部分(fēn)負載較重?
4.系統更重要(yào)的(de)是(shì):容錯(cuò)還(há≠∑↑♥i)是(shì)高(gāo)性能(néng)?
5.可(kě)擴展性的(de)需求在哪裡(lǐ)出現(Ω↓"✔xiàn)?
我們想仔細看(kàn)看(kàn)五個(gè)問(wèn)題中δ ¥的(de)每一(yī)個(gè),并找出業(yè)務代表綜合答(d≤₩αβá)案的(de)好(hǎo)處。
業(yè)務是(shì)否了(le)解計(→±×€jì)劃系統的(de)功能(néng)?
幕後:
可(kě)擴展性是(shì)系統通(tōng)過升級 ♦現(xiàn)有(yǒu)硬件(jiàn)或添加額外(wài)的(de)®&新資源來(lái)應對(duì)日(rì)益增長(cháng)的(de)✔✘負載的(de)能(néng)力。系統必須保持适當•©的(de)架構以允許後者。換句話(huàελ©)說(shuō),當後端開(kāi)發人(☆π ₽rén)員(yuán)開(kāi)始系統開 γ©(kāi)發時(shí),他(tā)們需要(yào)了(le)解是(shì)∑≥否有(yǒu)可(kě)能(néng)将來(lá§≥↔i)擴展系統,這(zhè)意味著(zhe)其操作(zuò)功能(nσφéng)的(de)增加。因此,他(tā)們需要(yào)知(zhī)道(dàε≥₹≤o)企業(yè)主對(duì)系統特征和(hé)進一(yī)>&§¥步發展的(de)計(jì)劃。例:
讓我們想象一(yī)下(xià),購(gα♣₽★òu)買機(jī)票(piào)的(de)在♦←∞線服務的(de)所有(yǒu)者會(huì)制(zhì)定計(jì)劃的↑ ₽(de)網站(zhàn)流量的(de)時(shí)間(jiān)"©Ω±表。時(shí)間(jiān)表可(kě)以是(shì)一(yī>↕ )天,一(yī)周,一(yī)個(gè)月(±•™yuè),四分(fēn)之一(yī)或一(yī)年(nφβián)。它可(kě)以覆蓋用(yòng)戶和(h↕>↓é)用(yòng)戶活動的(de)類型,作(zuò)為(wèi)系統回答♥∞(dá)所需的(de)時(shí)間(jiān)。使用(yòng)這(zhè)γ→₹£個(gè)計(jì)劃,開(kāi)發人(rén)•∞"±員(yuán)可(kě)以揭示網站(zhàn)上(sh♠↕àng)的(de)負載變得(de)更加密集的(de)時•₹α§(shí)代。例如(rú),它可(kě)能(néng)會(α¥₹huì)更接近(jìn)一(yī)個(gè)周末。此外 →(wài),業(yè)務代表可(kě)以在時(shí)間(≠↕jiān)表中包括峰值負荷的(de)點,如(rú)假期✘",學校(xiào)假期和(hé)促銷活動。
架構中的(de)峰值負載不(bù)應影(yǐn→λg)響系統的(de)性能(néng),所以重要(y¶δ£ào)的(de)是(shì)規劃它們。較好←φ(hǎo)的(de)方法之一(yī)是(shì)系統負載的(de)圖形顯€★>示。
小(xiǎo)貼士:
制(zhì)定明(míng)确的(de)項目目标,制(zhì)定預測網站(z♠∏✘✘hàn)流量的(de)計(jì)劃或圖表。還(hái)要(y€®σào)指出時(shí)間(jiān)間(ji∞♠φān)隔。開(kāi)發人(rén)員(yuán)詢問(wèn)× ←有(yǒu)關系統能(néng)力的(de)問(wèn)題,而不(≤÷♣↓bù)是(shì)因為(wèi)它們隻是(shì)好(hǎo)奇。他(t<£φ"ā)們必須預見(jiàn)服務器(qì)增長(cháng)的(de)機(jī ↕)會(huì)。如(rú)果一(yī)個(gè&↑©)企業(yè)計(jì)劃赢得(de)世✘界,那(nà)就(jiù)有(yǒu)必要★→(yào)明(míng)确說(shuō)明(míng)目标。假設當←ε€10,000位獨特訪問(wèn)者訪問(wèn)了₽™(le)一(yī)個(gè)平均每天300名用(yòng)戶的(de)網站(↕φzhàn)時(shí),系統必須生(shēng)存♥"∞€下(xià)去(qù)。
系統用(yòng)戶的(de)典型動作(zu>±∏ò)是(shì)什(shén)麽?
幕後:
預測典型的(de)操作(zuò)允許開(kāi)發人(rén)員(yu∏Ωán)分(fēn)析系統上(shàng)的(de)負載 €✘ 。這(zhè)也(yě)是(shì)一(yī)個(♣ gè)機(jī)會(huì),看(kàn)ε♠ 看(kàn)系統用(yòng)戶是(shì)否會(huì)上(shàφ≥ng)傳大(dà)文(wén)件(jiàn),或者需要(yào)實時(shí)÷ 聊天支持和(hé)其他(tā)功能(néng)。Web服務•σ器(qì)之間(jiān)的(de)功能(néng)如(rú)何•∞傳播取決于用(yòng)戶操作(zuò)的γ↓♣φ(de)典型流程。
例:
我們可(kě)以參考推出移動應用(yòng)的(de)例子(zǐ)。用(yò≤✔₹ng)于安排會(huì)議(yì)的(de)基于網絡的(de)↓✘移動應用(yòng)程序包括上(shàng)傳照(zδ$₩δhào)片的(de)選項。開(kāi)發人(rén)員(yuán)使±"用(yòng)中型用(yòng)戶照(zhà€☆©≤o)片加載測試。然而,隻要(yào)應用(yòng)程 ←λ←序啓動,用(yòng)戶開(kāi)始以原始大(dà)小(xi←∑ǎo)上(shàng)傳圖片。當用(yòng)戶和(hé)圖片的(✔✔≥de)數(shù)量超過了(le)Web服務器(qì)的(dγ♠ e)數(shù)據存儲和(hé)處理(lǐ)能(néng)力時(shí÷♦☆✔),系統無法承受負載并開(kāi)始崩潰。
小(xiǎo)貼士:
如(rú)果您想防止系統不(bù)穩定的(de)不(bù)利影("∏yǐng)響,請(qǐng)詳細描述典型操作(zuò)的(de)場(c δ×↓hǎng)景。特别要(yào)考慮兩點:
您希望用(yòng)戶如(rú)何與系統進行(xíng)交互
它将如(rú)何實現(xiàn)
系統有(yǒu)什(shén)麽瓶頸?系統的(de)哪一(yī)部φ'™ 分(fēn)負載較重?
幕後:
任何複雜(zá)的(de)信息系統都(dōu)可(kě)能(n∏♦éng)包含至少(shǎo)兩個(gè)瓶頸。瓶頸是(shì)一(yī)個↑± ↕(gè)壓力點,在特定時(shí)刻經曆系統中較高(gāo)的(de)負載。✔×當開(kāi)發人(rén)員(yuán)知(zhī)道(®σ<dào)系統中可(kě)能(néng)存在的(de)瓶頸時(shí'☆↑ ),如(rú)果服務器(qì)崩潰,他(tā)/她(tā)可(kě)以調<↑整系統的(de)工(gōng)作(zuò)。這(zhè)有(yǒu)助于避免↓φ§>高(gāo)峰負載時(shí)潛在用(yòng)戶的(de)損失。
找到(dào)瓶頸的(de)問(wèn)題與系統可(kě)✘™∞擴展性無關。不(bù)過,較好(hǎo)不(bù)要♣•(yào)忘記。如(rú)果一(yī)個(gè)開(kāi) $發人(rén)員(yuán)沒有(yǒu)定義瓶頸在哪裡(lǐ),那(nà)麽 ✔它可(kě)以在任何可(kě)擴展性方面取得(de)進展。即使在系統$♣λ可(kě)擴展性方面一(yī)切順利,有(←λyǒu)必要(yào)分(fēn)析架構,以防止出現(xiàn)瓶頸
例:
入口點可(kě)能(néng)是(shì)瓶頸。例如₩∞>≤(rú),如(rú)果大(dà)量用(yòng)戶同時(shí)打開(kāi™÷φ♣)網站(zhàn),則無法承受高(gāo)負載,沒有(y✘ε€ǒu)人(rén)繼續使用(yòng)該網站(zhàn)。
信息系統的(de)瓶頸
另一(yī)個(gè)瓶頸示例是(shì)通(tōng)道₩≥∏≈(dào)寬度不(bù)足。想象一(yī)下(xià),照(zhào)片≤♣≥♣存儲中的(de)照(zhào)片之一(yī πφα)迅速普及。數(shù)以千計(jì)的(de)用₹δ(yòng)戶打開(kāi)這(zhè)個(gè)£≤®流行(xíng)的(de)照(zhào)片,但(dàn)是(shì)Wσ÷$₩eb服務器(qì)的(de)容量不(bù)是(shì)為(wèi)了(l$Ω♣e)這(zhè)個(gè)數(shù)量。因此,上(shàn©₩¶☆g)傳的(de)照(zhào)片停滞并對(duì)用(yòng)戶産生(s≥≠≈"hēng)負面影(yǐng)響。
小(xiǎo)貼士:
隻有(yǒu)有(yǒu)目的(de)的(de)測試可(kě• )以詳細解答(dá)瓶頸在哪裡(lǐ)的(d ♦↕'e)問(wèn)題。然而,這(zhè)并不(bù)意味著(zhe)不('↑bù)可(kě)能(néng)評估潛在的(de)瓶頸。
列出系統的(de)基本部分(fēn)。根據您≠♥γβ的(de)經驗,突出顯示較脆弱的(de)地(dì)方。
與開(kāi)發團隊討(tǎo)論清單。技(jì)∏¥λ≈術(shù)人(rén)員(yuán)的(de)經驗很(hěn)有(yǒu)可↔δ(kě)能(néng)幫助您提供新的(de)想法。
對(duì)系統更重要(yào)的(de)是(shì):
容錯(cuò)還(hái)是(shì)高(gāo)¶ ♥性能(néng)?
幕後:
不(bù)同系統需要(yào)不(bù)←<同的(de)方法。開(kāi)發人(rén)員(yuán)需要(yào)知 ₽(zhī)道(dào)主要(yào)任務是(shì):容錯(cuò'$)或高(gāo)性能(néng),或者兩者都(dōuσ↑ε)是(shì)必需的(de)。容錯(cuò&"σ™)問(wèn)題非常嚴重,沒有(yǒu)一(yī)個(σ₩≠↑gè)獨特的(de)解決方案。它涉及系統在服務器(&•γqì)遭受故障時(shí)每次響應的(de)能(n≠∞éng)力。換句話(huà)說(shuō),用(yòng)戶沒 ∏×"有(yǒu)達到(dào)理(lǐ)想的(€≥₽de)結果。例如(rú),他(tā)或她(tā)不(bù)能(néng)訪≥♣問(wèn)網站(zhàn)的(de)其他(t↓•₽ā)頁面或通(tōng)過應用(yòng)程序支付服務費(fèi)用(<δ'$yòng)。如(rú)果不(bù)清楚發生(s≥&hēng)了(le)什(shén)麽,用(≥±yòng)戶将很(hěn)可(kě)能(néng)拒絕再←≥次使用(yòng)該服務。為(wèi)了(le)避免用(yòng)戶丢失,較ε♠§好(hǎo)保護系統。例如(rú),如(rú©♦↓ε)果網站(zhàn)沒有(yǒu)對(duì★$™≈)用(yòng)戶請(qǐng)求做(zuò)出反應或會(huì≠≈™★)話(huà)被中斷,那(nà)麽可(k€÷™£ě)能(néng)會(huì)向用(yòng)戶發送有(yǒu✔∏)關該事(shì)件(jiàn)的(de)簡要(yào)信息的(de)消息以∑↑φε及有(yǒu)關該做(zuò)什(shén)麽的(de)一(yī)些(xiē♦€≈ )建議(yì)。高(gāo)性能(néng)涉及系統承受•♥數(shù)千用(yòng)戶并同時(shí)顯示良好(λ¶®>hǎo)響應時(shí)間(jiān)的(de)能(néng)力。換句話δ<σ↑(huà)說(shuō),系統速度很(hěn)重要(yào)。如(r₩∞★≥ú)果用(yòng)戶花(huā)費(fèi)大(dà)量時(shí)間(γ≈jiān)填寫表單,并且每次等待頁面加載緩慢(màn),都(dōu&←≤λ)會(huì)對(duì)其對(duì)公司的(de)态≈™§度産生(shēng)負面影(yǐng)響。
例:
我們假設一(yī)家(jiā)銀(yín)行(xí÷★★✔ng)經營者為(wèi)接收貸款而運行(xíng)客戶查詢,并填寫系統中的♣§ (de)數(shù)據。會(huì)話(huà)崩潰,系統同時(shí)停止¥✘€♦對(duì)操作(zuò)員(yuán)的(de☆¶≤)應答(dá)。數(shù)據丢失,操作(zuò)員(yuá♥n)沒有(yǒu)其他(tā)方式訪問(wèn)系統。因此,¥∏λγ操作(zuò)員(yuán)要(yào)求客戶等待"♣系統恢複或第二天回來(lái)。客戶花(huā)了←φ☆α(le)很(hěn)多(duō)時(shí)間(jiānΩ×),現(xiàn)在對(duì)這(zhè)種情況不(bλ★ù)滿意。這(zhè)意味著(zhe)系₹∞♠統中出現(xiàn)故障。而客戶忠誠度取決于系統對(d∑★uì)類似故障的(de)抵制(zhì)。
容錯(cuò)
如(rú)果預見(jiàn)到(dào)容錯(cuò),可↕§(kě)以以不(bù)同的(de)方式解決可(kě)能(néng)故障的β₹$(de)問(wèn)題。例如(rú),數(shù)據可(×' ¶kě)以保存在系統的(de)重複服務器(qì)上(shàng)。然後銀(★✘>yín)行(xíng)操作(zuò)員(yuán)可(kě)以簡單¥✘↓™地(dì)連接到(dào)備份服務器(qì)并繼續工(gōng↕≥)作(zuò)。另一(yī)種方式是(shì)數(shù)據未被保✘σ↔ε存,但(dàn)是(shì)有(yǒu)機(jī)₽∏≤γ會(huì)開(kāi)始一(yī)個(gè)新的(de)會(huì)話(hu©✔™à)。因此,銀(yín)行(xíng)經營者提供客戶再次填寫信息。這£₩₹★(zhè)些(xiē)情況有(yǒu)數(shù)十億種解決方案。确定會(Ωλ≈αhuì)話(huà)期間(jiān)的(de)數(shù)據丢失是(s©→hì)重要(yào)的(de)還(hái)是(shì)系統需要(yào)哪↕ ±些(xiē)任務要(yào)容易得(de)多(duō)。
小(xiǎo)貼士:
确定什(shén)麽問(wèn)題更重要(yào)≠÷,因為(wèi)它有(yǒu)助于開(kāi)¥≤發人(rén)員(yuán)事(shì)先知(zhī)道(d×↔ào)應該首先考慮什(shén)麽。當開(kāi)發人(rén§Ω)員(yuán)明(míng)确目的(dσ♥e)時(shí),他(tā)們可(kě)以列出客戶的(de)建議(yì→)。
可(kě)擴展性的(de)需求在哪裡(lǐ)<₽出現(xiàn)?
幕後:
企業(yè)主希望開(kāi)發人(rén)員(©✘±yuán)能(néng)夠很(hěn)好(hǎo)地(dì)了(le≈♠÷)解他(tā)們的(de)業(yè)務利基,從(có≥γng)一(yī)開(kāi)始就(jiù)•$↕©明(míng)白(bái)他(tā)們的(de)信息系統是Ω (shì)否需要(yào)可(kě)擴展性。通(tōng)常這(zh ≠™∞è)些(xiē)期望是(shì)假的(de)。實際上(shàng),✘ Ω開(kāi)發人(rén)員(yuán)将重點放(fà₽$ng)在軟件(jiàn)項目的(de)具體(tǐ)目标上(shàng↑←★)。他(tā)們想定義出現(xiàn)系統可(kě)擴展性需求的(de)♣∏≤位置。它可(kě)以是(shì)大(dà)量的(de)∏→數(shù)據,應該在某個(gè)地(d♦λì)方進行(xíng)保存和(hé)處理(lǐ)π★← ,或者在特定時(shí)刻需要(yào)的(de)複雜(zá)計✘↕(jì)算(suàn)過程和(hé)多(duō)階段操作★£₹→(zuò)。
例:
假設社交網絡計(jì)劃增加用(yòng)戶數(shù)量,并開'✘≤∞(kāi)始在互聯網上(shàng)進行✘$→(xíng)營銷活動。社交網絡代表看(kàn)到(dào),他•$→(tā)們需要(yào)考慮到(dào)同>β↔£時(shí)訪問(wèn)網絡的(de)次數(sh≠•→ù),并在活動期間(jiān)增加了(le)負載。訪客數( &shù)量的(de)大(dà)幅增加可(kě)能(néng)會(huì)影↑¶β(yǐng)響系統性能(néng)。當需求的(de)來✔(lái)源變得(de)清晰時(shí),開(kā€₽i)發人(rén)員(yuán)可(kě)以轉向具體 ∑(tǐ)任務的(de)解決方案。
小(xiǎo)貼士:回答(dá)當前軟件(jiàn)項目中↔✘ 系統可(kě)擴展性的(de)含義是(shì)什(shén)麽₩ ?區(qū)分(fēn)意義:
基地(dì)有(yǒu)10,000名用(yòng)戶,β®→↕您需要(yào)擴展服務器(qì)的(de)數(shù)據存儲能(néng§★α)力
大(dà)約10,000名用(yòng)戶同時(shí)訪問(wèn)±>♠£您的(de)網站(zhàn),服務器(qì)需♣" ✘要(yào)擴展信息資源
需要(yào)可(kě)擴展性
您可(kě)以根據您的(de)答(dá)案選擇哪₩←±種方法更适合系統集群。換句話(huà)說(shuō),軟件(jiàn)開(kā✘×i)發人(rén)員(yuán)可(kě)以根據業(y π→è)務需要(yào)在不(bù)同的(de)服務器(qì)₽£∏σ之間(jiān)分(fēn)配負載。系統可(kě)擴展性是(shì)業(÷ →★yè)務增長(cháng)時(shí)增加負載問₩£(wèn)題的(de)必要(yào)解決方案。這(zhè)種具體(₩ ≠tǐ)能(néng)力使用(yòng)新的(≠γ↑de)信息資源提供了(le)系統功能(néng)的(de)擴展。事(shì>±β)實上(shàng),可(kě)擴展性允許支持反應速度以及越來÷↑(lái)越多(duō)的(de)操作(zuò),事(shì)務或用(y★→òng)戶的(de)系統的(de)一(yī)般性能(né ♥ng)。
對(duì)可(kě)擴展性的(de)需求激勵
北(běi)京軟件(jiàn)開(kāi)發公司和(hé)開(kāi)發人(rén)員(yuán)找到(dγεào)有(yǒu)效討(tǎo)論的(de)方法。如(rú)果第一(yī§ ≥)和(hé)第二語言是(shì)一(yī)種語言,他(tā)們對(duì)φ ☆₩發展戰略,功能(néng)增長(cháng)和(hé)系★¥αφ統技(jì)術(shù)特性的(de)增加有π∞≠∏(yǒu)一(yī)個(gè)共同的(de☆∑)認識。