抗住百萬高并發(fā)的 6 個關鍵技術!

Java技術棧
www.javastack.cn
關注閱讀更多優(yōu)質文章
作者:阿凡盧
出處:http://www.cnblogs.com/luxiaoxun/
一、什么是高并發(fā)
高并發(fā)(High Concurrency)是互聯(lián)網(wǎng)分布式系統(tǒng)架構設計中必須考慮的因素之一,它通常是指,通過設計保證系統(tǒng)能夠同時并行處理很多請求。
高并發(fā)相關常用的一些指標有響應時間(Response Time),吞吐量(Throughput),每秒查詢率QPS(Query Per Second),每秒事務處理量TPS(Transaction Per Second),并發(fā)用戶數(shù)等。
響應時間:系統(tǒng)對請求做出響應的時間。
吞吐量:單位時間內(nèi)處理的請求數(shù)量。
QPS:每秒響應查詢請求數(shù)。
TPS:每秒響應事務請求數(shù)。
并發(fā)用戶數(shù):同時承載正常使用系統(tǒng)功能的用戶數(shù)量。
互聯(lián)網(wǎng)分布式架構設計,提高系統(tǒng)并發(fā)能力的方式,方法論上主要有兩種:垂直擴展(Scale Up)與水平擴展(Scale Out)。
(1)垂直擴展:提升單機處理能力。垂直擴展的方式又有兩種:
1)增強單機硬件性能,例如:增加CPU核數(shù)如32核,升級更好的網(wǎng)卡如萬兆,升級更好的硬盤如SSD,擴充硬盤容量如2T,擴充系統(tǒng)內(nèi)存如128G;
2)提升單機架構性能,例如:使用Cache來減少IO次數(shù),使用異步來增加單服務吞吐量,使用無鎖數(shù)據(jù)結構來減少響應時間;
(2)水平擴展:只要增加服務器數(shù)量,就能線性擴充系統(tǒng)性能。水平擴展對系統(tǒng)架構設計是有要求的,如何在架構各層進行可水平擴展的設計是本文重點討論的內(nèi)容。

(1)添加負載均衡層,將請求均勻打到系統(tǒng)層。
(2)系統(tǒng)層采用集群化多活部署,扛住初步的并發(fā)壓力。
2、數(shù)據(jù)庫分庫分表+讀寫分離+分布式數(shù)據(jù)庫
(1)分庫分表:水平拆分、垂直拆分(弊端太多如關聯(lián)查詢)。
(2)讀寫分離:主庫寫,從庫讀(數(shù)據(jù)同步延遲)。
(3)分布式數(shù)據(jù)庫:TiDB(HTAP、兼容MySQL協(xié)議、水平擴展、分布式事務)
3、緩存
(1)本地緩存:本地磁盤或內(nèi)存。
(2)分布式緩存:用緩存集群抗住大量的讀請求。
(3)預緩存,多級緩存。
4、消息中間件
(1)系統(tǒng)解耦,數(shù)據(jù)同步。
(2)請求異步化處理,實現(xiàn)削峰填谷的效果。
5、應用拆分(微服務)
(1)按業(yè)務拆分、減少耦合。
(2)分級部署,擴容縮容。
(3)應用資源隔離。
6、CDN(內(nèi)容分發(fā)網(wǎng)絡)
(1)盡可能避開互聯(lián)網(wǎng)上有可能影響數(shù)據(jù)傳輸速度和穩(wěn)定性的瓶頸和環(huán)節(jié), 使內(nèi)容傳輸?shù)母旄€(wěn)定。
(2)CDN能夠實時地根據(jù)網(wǎng)絡流量和各節(jié)點的鏈接,負載狀況以及到用戶的距離和響應時間等綜合信息將用戶的請求重新導向離用戶最近的服務節(jié)點上。
點擊「閱讀原文」獲取面試題大全~
