鏈接: 前言 高并發(fā)經(jīng)常會發(fā)生在有大活躍用戶量,,用戶高聚集的業(yè)務場景中,,如:秒殺活動,定時領(lǐng)取紅包等,。 為了讓業(yè)務可以流暢的運行并且給用戶一個好的交互體驗,,我們需要根據(jù)業(yè)務場景預估達到的并發(fā)量等因素,來設計適合自己業(yè)務場景的高并發(fā)處理方案,。 在電商相關(guān)產(chǎn)品開發(fā)的這些年,,我有幸的遇到了并發(fā)下的各種坑,這一路摸爬滾打過來有著不少的血淚史,,這里進行的總結(jié),,作為自己的歸檔記錄,同時分享給大家,。 服務器架構(gòu) 業(yè)務從發(fā)展的初期到逐漸成熟,,服務器架構(gòu)也是從相對單一到集群,再到分布式服務,。 一個可以支持高并發(fā)的服務少不了好的服務器架構(gòu),,需要有均衡負載,數(shù)據(jù)庫需要主從集群,,nosql緩存需要主從集群,,靜態(tài)文件需要上傳cdn,這些都是能讓業(yè)務程序流暢運行的強大后盾,。 服務器這塊多是需要運維人員來配合搭建,,具體我就不多說了,點到為止,。 大致需要用到的服務器架構(gòu)如下: l 服務器 n 均衡負載(如:nginx,,阿里云SLB) n 資源監(jiān)控 n 分布式 l 數(shù)據(jù)庫 n 主從分離,集群 n DBA 表優(yōu)化,,索引優(yōu)化,,等 n 分布式 l nosql n 主從分離,集群 n 主從分離,,集群 n 主從分離,,集群 n redis n mongodb n memcache l cdn n html n css n js n image 分層,分割,分布式 大型網(wǎng)站要很好支撐高并發(fā),,這是需要長期的規(guī)劃設計 在初期就需要把系統(tǒng)進行分層,,在發(fā)展過程中把核心業(yè)務進行拆分成模塊單元,根據(jù)需求進行分布式部署,,可以進行獨立團隊維護開發(fā),。 l 分層 n 將系統(tǒng)在橫向維度上切分成幾個部分,每個部門負責一部分相對簡單并比較單一的職責,,然后通過上層對下層的依賴和調(diào)度組成一個完整的系統(tǒng) n 比如把電商系統(tǒng)分成:應用層,,服務層,數(shù)據(jù)層,。(具體分多少個層次根據(jù)自己的業(yè)務場景) n 應用層:網(wǎng)站首頁,,用戶中心,商品中心,,購物車,,紅包業(yè)務,活動中心等,,負責具體業(yè)務和視圖展示 n 服務層:訂單服務,,用戶管理服務,紅包服務,,商品服務等,,為應用層提供服務支持 n 數(shù)據(jù)層:關(guān)系數(shù)據(jù)庫,nosql數(shù)據(jù)庫 等,,提供數(shù)據(jù)存儲查詢服務 n 分層架構(gòu)是邏輯上的,,在物理部署上可以部署在同一臺物理機器上,,但是隨著網(wǎng)站業(yè)務的發(fā)展,,必然需要對已經(jīng)分層的模塊分離部署,分別部署在不同的服務器上,,使網(wǎng)站可以支撐更多用戶訪問 l 分割 n 在縱向方面對業(yè)務進行切分,,將一塊相對復雜的業(yè)務分割成不同的模塊單元 n 包裝成高內(nèi)聚低耦合的模塊不僅有助于軟件的開發(fā)維護,也便于不同模塊的分布式部署,,提高網(wǎng)站的并發(fā)處理能力和功能擴展 n 比如用戶中心可以分割成:賬戶信息模塊,,訂單模塊,充值模塊,,提現(xiàn)模塊,,優(yōu)惠券模塊等 l 分布式 n 分布式應用和服務,將分層或者分割后的業(yè)務分布式部署,獨立的應用服務器,,數(shù)據(jù)庫,,緩存服務器 n 當業(yè)務達到一定用戶量的時候,再進行服務器均衡負載,數(shù)據(jù)庫,,緩存主從集群 n 分布式靜態(tài)資源,,比如:靜態(tài)資源上傳cdn n 分布式計算,比如:使用hadoop進行大數(shù)據(jù)的分布式計算 n 分布式數(shù)據(jù)和存儲,比如:各分布節(jié)點根據(jù)哈希算法或其他算法分散存儲數(shù)據(jù) 轉(zhuǎn)自:https://mp.weixin.qq.com/s/g0hUrgVZZ8iv3cDCxDZxpw |
|