當前位置:
首頁 > 知識 > 構建高並發&高可用&安全的IT系統-高並發部分

構建高並發&高可用&安全的IT系統-高並發部分

什麼是高並發?

狹義來講就是你的網站/軟體同一時間能承受的用戶數量有多少

相關指標有

並發數:對網站/軟體同時發起的請求數,一般也可代表實際的用戶

每秒響應時間:常指一次請求到系統正確響的時間(以秒為單位)

TPS(每秒事務數):每秒鐘可以處理的事務(請求響應),大概的計算公式為:並發數/每秒響應時間=TPS

QPS(每秒查詢數):TPS事務有讀有寫,而QPS指的是讀取,一般情況QPS應是高於TPS的

IP(獨立IP):一個IP可以發生多次UV和PV

PV(訪問量):即Page View,頁面瀏覽或點周量,用戶每次新刷新即被計算一次

UV(獨立訪客):一般通過cookies記錄等判斷為一個獨立用戶,同一IP可能有多個UV(共享IP),發生多次PV

流量(網路流量):請求所產生的網路流量,因為受限於帶寬也是並發中的一個重要指

一般公司演化階段

1、優化運算代碼、SQL查詢、資料庫索引等

2、進行應用負載均衡、資料庫做主從/主主複製進行讀寫分離、增加緩存(RedisMem)

3、對系統和數據進行垂直拆分,按業務模塊拆分成不同的應用及資料庫表

4、分散式服務化、非同步消息機制、資料庫表水平拆分

優化運算代碼、SQL查詢、資料庫索引等

一般初創公司系統大多數都是單體單庫的系統,按照成本優先順序第一要做的就是對系統進行代碼級的優化。比如應用代碼邏輯梳理、合理使用多線程、SQL避免全表掃描、少使用LIKE、

根據業務創建索引等。

案例

單次LIKE大數據量統計查詢Sending data狀態過多導致資料庫連接被耗盡,系統停止響應。通過在統計表建立觸發器更新單值表解決

構建高並發&高可用&安全的IT系統-高並發部分

構建高並發&高可用&安全的IT系統-高並發部分

負載均衡、讀寫分離、緩存

到了第二階段,單體應用通過優化與增加硬體配置已無法解決高並發的問題,這時可以考慮進行以下架構的演化,這種演化對系統基本沒有侵入性,成本低廉

負載均衡:

可以通過Nginx反向代理、F5等進行應用的多流量分發,需要解決的問題就是會話問題,可採用Nginx的路由或是SESSION同步/獨立。

讀寫分離:

採用資料庫的主從複製機制,將寫入庫與讀取庫分離,可採用中間件進行代理路由,基本可以不改代碼。

緩存:

可跟據業務規則將部分數據進行緩存

構建高並發&高可用&安全的IT系統-高並發部分

應用、數據垂直拆分

第二階段支撐過一定量後,隨著並發量再次的提升,由於單庫表數據量變大以及訪問限制已經不能滿足,這時可以考慮進行資料庫表的按系統模塊垂直拆分。將內聯的業務劃分為獨立的庫表,相應的應用也

應隨之拆分(應用這時加機器還能挺,不過做不到可審縮資源利用最大化)。同一應用系統訪問同一庫表,應用系統之間進行少量通信。

構建高並發&高可用&安全的IT系統-高並發部分

分散式服務化、非同步消息機制、資料庫表水平拆分

在經歷過前三階段後,能走到第四階段說明平台的發展非常好了,對系統的高並發又有了進一步的要求,這也是成本最高最複雜的,系統架構需要進行很大的改造

分散式:

對系統應用進行服務化(如微服務),服務化的目的不只是為了高並發,也從系統的可維護性(團隊大了)、資源利用最大化(對服務進行差異化支撐)方面考慮。

面臨的挑戰主要是分散式事務方面的控制,可採用二階段提交方式或是分散式事務容器實現分散式事務。

非同步消息機制:

主要解決大並發寫入瓶頸,利用消息對列對寫入消息進行排隊,待資料庫進

行處理。

資料庫表水平拆分:按一定規則將同一業務表的數據拆分到不同的庫/表中(如HASH),面臨的挑戰主要是跟業務關聯性強、跨表的數據合併等。解決方案就是寫

好代碼吧。。。

構建高並發&高可用&安全的IT系統-高並發部分


PHP學習交流群,免費視頻學習資料:617089523

更多精彩內容,訪問中公優就業官網:http://xue.ujiuye.com/?wt.bd=zdy35845tt

500萬就業基金助力,2017大學生就業扶助計劃:http://www.ujiuye.com/zt/jyfc/?wt.bd=zdy35845tt

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT優就業 的精彩文章:

ABP從入門到精通(1):aspnet-zero-core項目啟動及各項目源碼說明
THINKPHP 3.2 PHP SFTP上傳下載 代碼實現方法
富文本編輯器UEditor自定義工具欄(基礎配置與字體、背景色、行間距、超鏈接實現)
優就業學員起薪大揭底——你行,你上呀!
怎樣解決Python從入門到進階難有進步的問題?

TAG:IT優就業 |

您可能感興趣

高性能的 PHP 封裝的 HTTP Restful 多線程並發請求庫-MultiHttp
OpenResty 完全開發指南:構建百萬級別並發的 Web 應用
Python也能高並發
Int Immunopharmacol:TLR4拮抗劑能夠減輕並發過敏性鼻炎和哮喘綜合症
基於 Python 自建分散式高並發 RPC 服務
EcoFlow奪得Demo China總決賽冠軍 並發布新品RIVER Bank
C++11並發編程:多線程std:thread
賽睿推出獨立GameDAC 並發布Arctis寒冰升級版
技術分享:Golang並發編程
並發編程之AQS(AbstractQueuedSynchronizer)
深入理解 RPC:基於 Python 自建分散式高並發 RPC 服務
如何保證redis高並發及高可用
印度教要求 Pharrell 與 adidas Originals 將「Hu Holi」系列重新命名並發表道歉聲明
用 greenlet 實現 Python 中的並發
用 Poetry 創建並發布 Python 包
Python並發:線程和鎖
使用並發加速你的python程序(1)
使用並發加速你的python程序(2)
Python Web 之百萬並發請求
每秒 10 萬並發的 BI 系統如何頻繁發生 Young GC?