支撐百萬連接的系統應該如何設計其高并發架構?
首先要結合具體的業務場景,不根據業務就云設計就是在耍流氓。
業務場景首先你要確定你所架構的系統服務于什么業務。假如我們現在是一個小創業公司,注冊用戶就20萬,每天活躍用戶就1萬,每天單表數據量就1000,然后高峰期每秒鐘并發請求最多就10。但是你要考慮到后面注冊用戶數達到了2000萬!每天活躍用戶數100萬!每天單表新增數據量達到50萬條!高峰期每秒請求量達到1萬。
靜態資源大寬帶、CDN、緩存(頁面緩存、對象緩存),WEB服務器緩存等N級分布式緩存,Redis、Memcached緩存集群。
動態資源計算:多組服務器,負載均衡等技術控制流量。
存儲:存儲這里就比較麻煩,按照KV存儲簡單的資源,然后在計算部分進行整合。真的沒辦法做KV的,采用跨庫索引來做。單機存儲數量要合理,不能太多。還有就是事務性的問題,解決方案就是BASE思想或者采用日志方式。
縱向拆分、水平擴展系統按照模塊功能縱向拆分,再水平擴展,抽象服務層利用各種中間件完善,優化JVM應用服務器。
消息中間件用mq解決穩定性。將耗時比較長或者耗費資源的請求排隊,異步處理,減輕服務器壓力增加穩定性
數據庫關系型、非關系型數據庫上最牛比SSD硬盤,分庫分表,讀寫分離,讀的流量多時還要增加從庫提高IO性能。每秒1萬請求到5臺數據庫上,每臺數據庫就承載每秒2000的請求,相應的壓力也就會減少。
SQL語句避免跨表查詢,優化好存儲過程,此時注意存儲過程利用好了是把利劍,利用不好就成為了累贅。
負載均衡負載均衡由多種實現方式,一種是在硬件上的,常用軟件由F5、NetScaler、Radware和Array等商用的,但是價格較昂貴。另外一種就是軟件的,常見的軟件有LVS、Nginx、Apache等,它們是基于Linux系統并且開源的負載均衡策略。
簡單架構圖結語系統架構中需要注意的點太多,具體業務也不盡相同。實現方案也有多種,此處只提供一個思路。
碼字不宜,如果對您有所幫助請點擊一個小贊。