最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
一個高流量高并發(fā)系統(tǒng),設計關注點有哪些

相信每一位開發(fā)同學多多少少都想參與或負責一個高用戶、高訪問、高并發(fā)的系統(tǒng)吧。一來可以增加自己實際的項目經驗,有應對高并發(fā)場景的解決方案,二來是有個高并發(fā)的項目經驗無疑是自己簡歷的一個大大的加分項。

從策劃到設計制作,每一步都追求做到細膩,制作可持續(xù)發(fā)展的企業(yè)網站。為客戶提供做網站、成都網站設計、網站策劃、網頁設計、國際域名空間、虛擬主機、網絡營銷、VI設計、 網站改版、漏洞修補等服務。為客戶提供更好的一站式互聯(lián)網解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進步。


但是奈何很多人都沒有機會可以參與這樣的項目,本文從以下幾點介紹一下設計一個高流量高并發(fā)的系統(tǒng)需要經歷哪些步驟以及考慮哪些因素(文章中的不足之處還請大佬們多多指點)。

高流量高并發(fā)系統(tǒng)關注點

1、設計原則

1.1、系統(tǒng)設計原則

在設計一個系統(tǒng)之前,我們先要有一個統(tǒng)一且清晰的認知:不要想著一下就能設計出完美的系統(tǒng),好的系統(tǒng)是迭代出來的。不要復雜化,要先解決核心問題。但是要有先行的規(guī)劃,對現有的問題有方案,對未來系統(tǒng)有預案。

在設計高并發(fā)的系統(tǒng)時要遵循以下幾個原則:

無狀態(tài)原則

什么是無狀態(tài)?服務器不保存狀態(tài),對單次請求的處理不依賴別的請求就是無狀態(tài),主要是為了在應對高并發(fā)時方便水平擴展。

拆分原則

在我們的系統(tǒng)體積過于龐大或者承載不了大量的請求時,就要考慮拆分系統(tǒng),將復雜問題簡單化或將流量分散不同子系統(tǒng)分擔壓力??梢园凑找韵聨讉€維度進行拆分:

  • 系統(tǒng)維度: 比如電商系統(tǒng),我們可以拆分成商品、支付、優(yōu)惠券多個子系統(tǒng)。
  • 功能維度: 將系統(tǒng)按功能再次拆分。
  • 讀寫維度: 按照讀寫比例將服務拆分成讀服務和寫服務。
  • 模塊維度: 將系統(tǒng)按照基礎架構、消息隊列、分庫分表 、組件等模塊進行拆分維護。

服務化原則

當我們的系統(tǒng)被拆分的足夠大時,一旦發(fā)生故障靠人工來處理是非常耗時耗力。這個時候就可以通過注冊發(fā)現、限流、熔斷、降級等方案讓每個服務可以自己處理問題來幫助我們減少排障成本。

1.2、業(yè)務設計原則

在進行業(yè)務設計時要遵循一些最基本的原則比如:

防重原則

在某些場景下要防止用戶重復操作,例如:用戶注冊、用戶下單、用戶支付等。我們需要在客戶端和服務端有一些方案避免這種問題。

模塊復用原則

在業(yè)務中每個功能多多少少是有聯(lián)系的,在設計的時候模塊盡量要獨立,其他模塊直接調用即可,調用減少代碼的冗余。

可追溯原則

在程序的運行中避免不了業(yè)務問題以及故障的發(fā)生,但是我們可以通過日志的方式快速定位問題,做到有據可查。

反饋原則

系統(tǒng)對用戶的響應應該是具體、詳細的,舉一個很簡單的例子,用戶登錄失敗后應該反饋給用戶的是“用戶名錯誤”或者“密碼錯誤”,而不是“登錄失敗”。

備份原則

做好代碼備份、數據備份以及人員備份。

2、客戶端優(yōu)化

在高并發(fā)高流量的系統(tǒng)客戶端的優(yōu)化是必不可少的,如果沒有做好客戶端的優(yōu)化影響用戶體驗是一方面,有時候甚至是致命的。

這里分享下我之前慘痛的教訓:之前參與過一個秒殺的業(yè)務,就是因為前端的沒有做優(yōu)化,大量用戶在刷新頁面時服務器的帶寬被打爆,頁面加載不出來,影響了系統(tǒng)的發(fā)展,這是非常致命的。主要原因還是沒有經驗,以為后端做好高并發(fā)抵抗就可以。

客戶端優(yōu)化主要集中以下幾點:

資源下載

  • 減少不必要傳輸:例如減少cookie使用,因為cookie 隨著請求發(fā)送而發(fā)送從而增加數據量。
  • 減少數據量輸出:例如刪除JS無效注釋,一來可以減少體積,二來可以提高代碼安全?;蛘呖梢詫⑽募嚎s后傳輸。
  • 減少請求 :將資源數目多、體積小、頻繁創(chuàng)建http請求的文件合并,比如JS合并、矢量圖 SVG。
  • 轉移第三方:將請求轉移至第三方,例如oss。

資源緩存

常見的資源緩存就是圖片、樣式和腳本。有些場景可以利用客戶端的緩存幫助服務端分擔壓力,比如網約車中的預估價格,客戶端可以緩存計算規(guī)則并緩存,減少向服務端的請求。

資源解析

我們知道頁面中資源解析的順序是從上到下,如果上面有改變下面也需要變動,所以我們要縮小回流、重繪的范圍,比如虛擬dom。除此之外我們還可以利用懶加載和預加載進行優(yōu)化:

  • 懶加載: 先加載基礎的,再根據用戶的操作進行局部加載。將原來一次性要加載的拆分成多次加載,減少下載數量和耗時。比如:樹節(jié)點、折疊面板、二級菜單等。
  • 預加載: 當前頁面對下個頁面的解析、拉取資源。下面代碼作為參考