做者:阿凡盧
出處:http://www.cnblogs.com/luxiao...數據庫
1、什麼是高併發緩存
高併發(High Concurrency)是互聯網分佈式系統架構設計中必須考慮的因素之一,它一般是指,經過設計保證系統可以同時並行處理不少請求。服務器
高併發相關經常使用的一些指標有響應時間(Response Time),吞吐量(Throughput),每秒查詢率QPS(Query Per Second),每秒事務處理量TPS(Transaction Per Second),併發用戶數等。網絡
響應時間:系統對請求作出響應的時間。數據結構
吞吐量:單位時間內處理的請求數量。架構
QPS:每秒響應查詢請求數。併發
TPS:每秒響應事務請求數。負載均衡
併發用戶數:同時承載正常使用系統功能的用戶數量。異步
2、提高系統的併發能力分佈式
互聯網分佈式架構設計,提升系統併發能力的方式,方法論上主要有兩種:垂直擴展(Scale Up)與水平擴展(Scale Out)。
(1)垂直擴展:提高單機處理能力。垂直擴展的方式又有兩種:
1)加強單機硬件性能,例如:增長CPU核數如32核,升級更好的網卡如萬兆,升級更好的硬盤如SSD,擴充硬盤容量如2T,擴充系統內存如128G;
2)提高單機架構性能,例如:使用Cache來減小IO次數,使用異步來增長單服務吞吐量,使用無鎖數據結構來減小響應時間;
(2)水平擴展:只要增長服務器數量,就能線性擴充系統性能。水平擴展對系統架構設計是有要求的,如何在架構各層進行可水平擴展的設計是本文重點討論的內容。
一、系統集羣化部署+負載均衡
(1)添加負載均衡層,將請求均勻打到系統層。
(2)系統層採用集羣化多活部署,扛住初步的併發壓力。
二、數據庫分庫分表+讀寫分離+分佈式數據庫
(1)分庫分表:水平拆分、垂直拆分(弊端太多如關聯查詢)。
(2)讀寫分離:主庫寫,從庫讀(數據同步延遲)。
(3)分佈式數據庫:TiDB(HTAP、兼容MySQL協議、水平擴展、分佈式事務)
三、緩存
(1)本地緩存:本地磁盤或內存。
(2)分佈式緩存:用緩存集羣抗住大量的讀請求。
(3)預緩存,多級緩存。
四、消息中間件
(1)系統解耦,數據同步。
(2)請求異步化處理,實現削峯填谷的效果。
五、應用拆分(微服務)
(1)按業務拆分、減小耦合。
(2)分級部署,擴容縮容。
(3)應用資源隔離。
六、CDN(內容分發網絡)
(1)儘量避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節, 使內容傳輸的更快更穩定。
(2)CDN可以實時地根據網絡流量和各節點的連接,負載情況以及到用戶的距離和響應時間等綜合信息將用戶的請求從新導向離用戶最近的服務節點上。