前言
高並發經常會發生在有大活躍用戶量,用戶高聚集的業務場景中,如:秒殺活動,定時領取紅包等。
為了讓業務可以流暢的運行並且給用戶一個好的交互體驗,我們需要根據業務場景預估達到的並發量等因素,來設計適合自己業務場景的高並發處理方案。
在電商相關產品開發的這些年,我有幸的遇到了並發下的各種坑,這一路摸爬滾打過來有著不少的血淚史,這裡進行的總結,作為自己的歸檔記錄,同時分享給大家。
伺服器架構
業務從發展的初期到逐漸成熟,伺服器架構也是從相對單一到集群,再到分散式服務。
一個可以支持高並發的服務少不了好的伺服器架構,需要有均衡負載,資料庫需要主從集群,nosql緩存需要主從集群,靜態文件需要上傳cdn,這些都是能讓業務程序流暢運行的強大後盾。
伺服器這塊多是需要運維人員來配合搭建,具體我就不多說了,點到為止。
大致需要用到的伺服器架構如下:
- 伺服器
- 均衡負載(如:nginx,阿里雲SLB)
- 資源監控
- 分散式
- 資料庫
- 主從分離,集群
- DBA 表優化,索引優化,等
- 分散式
- nosql
- 主從分離,集群
- 主從分離,集群
- 主從分離,集群
- redis
- mongodb
- memcache
- cdn
- html
- css
- js
- image
並發測試
高並發相關的業務,需要進行並發的測試,通過大量的數據分析評估出整個架構可以支撐的並發量。
測試高並發可以使用第三方伺服器或者自己測試伺服器,利用測試工具進行並發請求測試,分析測試數據得到可以支撐並發數量的評估,這個可以作為一個預警參考,俗話說知己自彼百戰不殆。
第三方服務:
並發測試工具:
- Apache JMeter
- Visual Studio性能負載測試
- Microsoft Web Application Stress Tool
實戰方案
通用方案
日用戶流量大,但是比較分散,偶爾會有用戶高聚的情況;
場景: 用戶簽到,用戶中心,用戶訂單,等
伺服器架構圖: