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