人
已閱讀
已閱讀
APP開發(fā)如何做好高并發(fā)架構(gòu)設(shè)計
來源:lexintech.com ?? ?? 發(fā)布時間:2017-09-19
大多數(shù)深圳APP開發(fā)公司開發(fā)項目時,很少有考慮高并發(fā)的情況。因為找外包公司開發(fā)APP的,一般都是產(chǎn)品的初級階段,用戶量不會很大,成本也不會花太多,所以是根本不用考慮高并發(fā)的。但是,如果要做好一款產(chǎn)品,在架構(gòu)設(shè)計時,是一定要考慮高并發(fā)的情況的。下面就為大家簡單講解一下,關(guān)于如何做高并發(fā)架構(gòu)設(shè)計的問題。
一、什么是高并發(fā)
高并發(fā)(High Concurrency)是互聯(lián)網(wǎng)分布式系統(tǒng)架構(gòu)設(shè)計中必須考慮的因素之一,它通常是指,通過設(shè)計保證系統(tǒng)能夠同時并行處理很多請求。
高并發(fā)相關(guān)常用的一些指標(biāo)有響應(yīng)時間(Response Time),吞吐量(Throughput),每秒查詢率QPS(Query Per Second),并發(fā)用戶數(shù)等。
響應(yīng)時間:系統(tǒng)對請求做出響應(yīng)的時間。例如系統(tǒng)處理一個HTTP請求需要200ms,這個200ms就是系統(tǒng)的響應(yīng)時間。
吞吐量:單位時間內(nèi)處理的請求數(shù)量。
QPS:每秒響應(yīng)請求數(shù)。在互聯(lián)網(wǎng)領(lǐng)域,這個指標(biāo)和吞吐量區(qū)分的沒有這么明顯。
并發(fā)用戶數(shù):同時承載正常使用系統(tǒng)功能的用戶數(shù)量。例如一個即時通訊系統(tǒng),同時在線量一定程度上代表了系統(tǒng)的并發(fā)用戶數(shù)。
二、如何提升系統(tǒng)的并發(fā)能力
互聯(lián)網(wǎng)分布式架構(gòu)設(shè)計,提高系統(tǒng)并發(fā)能力的方式,方法論上主要有兩種:垂直擴展(Scale Up)與水平擴展(Scale Out)。
垂直擴展:提升單機處理能力。垂直擴展的方式又有兩種:
(1)增強單機硬件性能,例如:增加CPU核數(shù)如32核,升級更好的網(wǎng)卡如萬兆,升級更好的硬盤如SSD,擴充硬盤容量如2T,擴充系統(tǒng)內(nèi)存如128G;
(2)提升單機架構(gòu)性能,例如:使用Cache來減少IO次數(shù),使用異步來增加單服務(wù)吞吐量,使用無鎖數(shù)據(jù)結(jié)構(gòu)來減少響應(yīng)時間;
在互聯(lián)網(wǎng)業(yè)務(wù)發(fā)展非常迅猛的早期,如果預(yù)算不是問題,強烈建議使用“增強單機硬件性能”的方式提升系統(tǒng)并發(fā)能力,因為這個階段,公司的戰(zhàn)略往往是發(fā)展業(yè)務(wù)搶時間,而“增強單機硬件性能”往往是最快的方法。
不管是提升單機硬件性能,還是提升單機架構(gòu)性能,都有一個致命的不足:單機性能總是有極限的。所以互聯(lián)網(wǎng)分布式架構(gòu)設(shè)計高并發(fā)終極解決方案還是水平擴展。
水平擴展:只要增加服務(wù)器數(shù)量,就能線性擴充系統(tǒng)性能。水平擴展對系統(tǒng)架構(gòu)設(shè)計是有要求的,如何在架構(gòu)各層進(jìn)行可水平擴展的設(shè)計,以及互聯(lián)網(wǎng)公司架構(gòu)各層常見的水平擴展實踐,是本文重點討論的內(nèi)容。
高并發(fā)(High Concurrency)是互聯(lián)網(wǎng)分布式系統(tǒng)架構(gòu)設(shè)計中必須考慮的因素之一,它通常是指,通過設(shè)計保證系統(tǒng)能夠同時并行處理很多請求。
提高系統(tǒng)并發(fā)能力的方式,方法論上主要有兩種:垂直擴展(Scale Up)與水平擴展(Scale Out)。前者垂直擴展可以通過提升單機硬件性能,或者提升單機架構(gòu)性能,來提高并發(fā)性,但單機性能總是有極限的,互聯(lián)網(wǎng)分布式架構(gòu)設(shè)計高并發(fā)終極解決方案還是后者:水平擴展。
互聯(lián)網(wǎng)分層架構(gòu)中,各層次水平擴展的實踐又有所不同:
(1)反向代理層可以通過“DNS輪詢”的方式來進(jìn)行水平擴展;
(2)站點層可以通過nginx來進(jìn)行水平擴展;
(3)服務(wù)層可以通過服務(wù)連接池來進(jìn)行水平擴展;
(4)數(shù)據(jù)庫可以按照數(shù)據(jù)范圍,或者數(shù)據(jù)哈希的方式來進(jìn)行水平擴展;
各層實施水平擴展后,能夠通過增加服務(wù)器數(shù)量的方式來提升系統(tǒng)的性能,做到理論上的性能無限。