歡迎來(lái)到(dào)深圳市博易美科技有限公司網站(zhàβ<♥n)!
人(rén)
已閱讀(dú)

APP開(kāi)發如(rú)何做(zuò)好(hǎo)高(gāo)并<£發架構設計(jì)

來(lái)源:lexintech.com       發≤"δ布時(shí)間(jiān):2017-09-1↕♠φ‌9
大(dà)多(duō)數(shù)深圳APP開(kāi)發公司開(kāi)發項目時(shí),很(hěn)少(shǎo)有★™♣€(yǒu)考慮高(gāo)并發的(de)情況。¥±¶因為(wèi)找外(wài)包公司開(k♣∑©āi)發APP的(de),一(yī)般都(dōu)是(shì)¶®β産品的(de)初級階段,用(yòng)戶量不(bù)會(huì)很(hěn) ∏大(dà),成本也(yě)不(bù)會(huìλ§φ)花(huā)太多(duō),所以是(shì)根¥$本不(bù)用(yòng)考慮高(gāo)并發的(de)。但(dàn)是(sh✘♦ì),如(rú)果要(yào)做(zuò) σ好(hǎo)一(yī)款産品,在架構設計(jì)時★α(shí),是(shì)一(yī)定要(yào)考慮高(gāo)并發的®φ‌σ(de)情況的(de)。下(xià)面就♠→→(jiù)為(wèi)大(dà)家(jiā)簡單講解一(yī)下(ε✔£xià),關于如(rú)何做(zuò)高(gāo)并發架構設 &α計(jì)的(de)問(wèn)題。
 
APP開(kāi)發中的(de)高(gāo)并發架構設計(jì)圖
 
一(yī)、什(shén)麽是(shì)高(g₩™★āo)并發
高(gāo)并發(High Concurrency)是(shì‌✔)互聯網分(fēn)布式系統架構設計(jì)中必須考慮的↔$≥(de)因素之一(yī),它通(tōng)常是(shì)♥£指,通(tōng)過設計(jì)保證系統能(néng ±‌)夠同時(shí)并行(xíng)處理(lǐ)$δ✘✘很(hěn)多(duō)請(qǐng)求★↑↑。
 
高(gāo)并發相(xiàng)關常用(yòng)的(de)一(yī)些>♥₩(xiē)指标有(yǒu)響應時(shí)間(jiān€$↕ )(Response Time),吞吐量(Throughput),每秒(miǎ✘βλ↓o)查詢率QPS(Query Per S™©econd),并發用(yòng)戶數(shù)等。
 
響應時(shí)間(jiān):系統對(duì)請(qǐng€₽Ωφ)求做(zuò)出響應的(de)時(shí)間(jiān)。例如↔σ(rú)系統處理(lǐ)一(yī)個(gè)HTTP請(qǐng)求需要(yà≤€o)200ms,這(zhè)個(gè)200ms就(jπδiù)是(shì)系統的(de)響應時(shí)間(jiān)。
吞吐量:單位時(shí)間(jiān)內(nèi)處理(lǐ)的(de™ε)請(qǐng)求數(shù)量。
QPS:每秒(miǎo)響應請(qǐng)求數(shù)。在互聯網領域,這(σ zhè)個(gè)指标和(hé)吞吐量區(qū)分(fēn)的(∏¥☆de)沒有(yǒu)這(zhè)麽明(míng)顯。
并發用(yòng)戶數(shù):同時(shí)承載正常'♦使用(yòng)系統功能(néng)的(de)用(yòng)戶數(shù↕↓≤)量。例如(rú)一(yī)個(gè)即時(s↔ ÷‌hí)通(tōng)訊系統,同時(shí)在線量一(yī)定程度上(shàn₹™g)代表了(le)系統的(de)并發用(yò÷™ ₽ng)戶數(shù)。
 
二、如(rú)何提升系統的(de)并發能(néng)> →力
互聯網分(fēn)布式架構設計(jì),提​♦σ☆高(gāo)系統并發能(néng)力的(de)方式,方法論≈←上(shàng)主要(yào)有(yǒu)兩種:垂直擴展(Sca€©le Up)與水(shuǐ)平擴展(Scale Outα±  )。
垂直擴展:提升單機(jī)處理(lǐ)能(néng)力。♥φ∑​垂直擴展的(de)方式又(yòu)有(yǒu)兩種:
(1)增強單機(jī)硬件(jiàn)性能(né÷♠ng),例如(rú):增加CPU核數(shù)"∏>如(rú)32核,升級更好(hǎo)的(de)網卡如(rú)萬兆,升級更好(h×↑♥ǎo)的(de)硬盤如(rú)SSD,擴充硬盤容量如(r≤♥'÷ú)2T,擴充系統內(nèi)存如(rú)128G;
(2)提升單機(jī)架構性能(néng),例如(rú→<₩≥):使用(yòng)Cache來(lái)減少(shǎo)IO次‌§ ↔數(shù),使用(yòng)異步來(lái)增加單服務吞吐量,使用(yòng ™↔')無鎖數(shù)據結構來(lái)減少(shǎo)響應時(shí)間(jiāε★n);
 
在互聯網業(yè)務發展非常迅猛的(de)早期,如(rú)果預算(sπ'™uàn)不(bù)是(shì)問(wèn)題,強烈建議(y≈πφφì)使用(yòng)“增強單機(jī)硬件(jià☆πσ₽n)性能(néng)”的(de)方式提升系統并發能(néπ§ε↓ng)力,因為(wèi)這(zhè)個(gèγΩ)階段,公司的(de)戰略往往是(shì)發展業(yè)務搶時(shí)間(₽✔jiān),而“增強單機(jī)硬件(jiàn)∑​σβ性能(néng)”往往是(shì)最快(kuài)φ‍δ✔的(de)方法。
 
不(bù)管是(shì)提升單機(jī)硬件(jiàn)性能(nγ​éng),還(hái)是(shì)提升單機(j"§♠ī)架構性能(néng),都(dōu)有(yǒu)一(yī)個(gè)緻命的♠↕☆₩(de)不(bù)足:單機(jī)性能(néng)總是(shì₩₹♣$)有(yǒu)極限的(de)。所以互聯網分(fēn)布式架構設計↓♥(jì)高(gāo)并發終極解決方案還(h♣☆≤₩ái)是(shì)水(shuǐ)平擴展。
 
水(shuǐ)平擴展:隻要(yào)增加×®↑服務器(qì)數(shù)量,就(jiù)能(néng)線性擴充系統性能(nσ₹♦↓éng)。水(shuǐ)平擴展對(duì)系統架構>↑£ 設計(jì)是(shì)有(yǒu)要(yào)求的≈ β(de),如(rú)何在架構各層進行(xí'‍"εng)可(kě)水(shuǐ)平擴展的(de±≤)設計(jì),以及互聯網公司架構各層常見←÷♠(jiàn)的(de)水(shuǐ)平擴展實踐,是(shì÷∑™)本文(wén)重點討(tǎo)論的(de)內(nèi)容。
 
高(gāo)并發(High Concurrency)是(shì©" )互聯網分(fēn)布式系統架構設計(jì)中必須考慮的(de >₽‍)因素之一(yī),它通(tōng)常是(shì)指,÷<¥通(tōng)過設計(jì)保證系統能(néng)夠同時(shí)并行(xβ¶íng)處理(lǐ)很(hěn)多(duō)請(qǐng)求。 ±
提高(gāo)系統并發能(néng)力的(de)方式,±ε方法論上(shàng)主要(yào)有(yǒu)兩種:垂直擴展(Scale U☆'λ÷p)與水(shuǐ)平擴展(Scale Out)。前者 &∞≤垂直擴展可(kě)以通(tōng)過提升單機(jī)硬件(ji÷↓àn)性能(néng),或者提升單機(jī)架'÷構性能(néng),來(lái)提高(gāo)并發性,但←≥₽ε(dàn)單機(jī)性能(néng)總¶↔→是(shì)有(yǒu)極限的(de),互★ 聯網分(fēn)布式架構設計(jì)高(gāo ∏☆)并發終極解決方案還(hái)是(shì)後¶Ω者:水(shuǐ)平擴展。
互聯網分(fēn)層架構中,各層次水(shuǐ¥↔∑)平擴展的(de)實踐又(yòu)有(yǒu)所不©♣(bù)同:
(1)反向代理(lǐ)層可(kě)以通(tōng)過“DNS輪詢₹↔”的(de)方式來(lái)Ω∞≤進行(xíng)水(shuǐ)平擴展;
(2)站(zhàn)點層可(kě)以通(tōng)過ng↑♦$inx來(lái)進行(xíng)水(shuǐ↓§£™)平擴展;
(3)服務層可(kě)以通(tōng)過服務連接池來(lái)進行 ¶(xíng)水(shuǐ)平擴展;
(4)數(shù)據庫可(kě)以按照(zhào)數(shù)據範圍,₩₽♣或者數(shù)據哈希的(de)方式來(lái) ✘®進行(xíng)水(shuǐ)平擴展;
各層實施水(shuǐ)平擴展後,能(néng)夠通(tōng​ε↑)過增加服務器(qì)數(shù)量的(de)方式來(láφ♣i)提升系統的(de)性能(néng),做(zuò)到₩‌∞(dào)理(lǐ)論上(shàng)的(de)性能(néng)無限。