從品牌網(wǎng)站建設(shè)到網(wǎng)絡(luò)營銷策劃,從策略到執(zhí)行的一站式服務(wù)
來源:公司資訊 | 2021.09.03
◆大型網(wǎng)站 的特點 :
高并發(fā) 、大流量:需要 面對 高并發(fā) 用戶 ,大流量訪問 。
高可用 :需要 7x24 小時 不間斷 服務(wù) 。
海量數(shù)據(jù) :數(shù)據(jù) 需要 存儲 、管理 ,需要 大量 服務(wù)器 。
用戶 分步 廣泛 、網(wǎng)絡(luò) 情況 復(fù)雜 :全球 網(wǎng)絡(luò) 復(fù)雜 ,像國內(nèi) 還有 各個 運營商網(wǎng)絡(luò)互通 難的問題 。
安全 環(huán)境惡劣 :互聯(lián)網(wǎng) 開放性 ,使得 網(wǎng)站 易受到 攻擊 。
需求 快速 變更 ,發(fā)布 頻繁 :快速迭代。
漸進式 發(fā)展 :從小 網(wǎng)站 開始 ,逐漸 發(fā)展 成大 站點 。
◆大型網(wǎng)站 的主要 技術(shù) 挑戰(zhàn)
龐大 的用戶 ,高并發(fā) 的訪問 和海量數(shù)據(jù) 。
任何 簡單 業(yè)務(wù) 在處理 PB級數(shù)據(jù) 或數(shù)以億計的用戶 時,問題 就會 變得 棘手 。
◆大型 網(wǎng)站架構(gòu) 的演化過程
◆初始 階段 的網(wǎng)站架構(gòu)
大多數(shù) 小項目 的初期 架構(gòu) 都是 這樣 。
隨著 網(wǎng)站 業(yè)務(wù)發(fā)展 ,1臺服務(wù)器 無法 滿足需求:用戶 越來越多 ,網(wǎng)站 性能 越來越 差,越來越多 的數(shù)據(jù) 導(dǎo)致 存儲空間 不足 。
◆應(yīng)用 、數(shù)據(jù)庫 、文件 分離
應(yīng)用服務(wù) 與數(shù)據(jù)服務(wù) 分離 :提高 性能 ,解決 存儲 問題 。
【服務(wù)器 專用化】
應(yīng)用服務(wù)器 :處理 業(yè)務(wù) ,要求 CPU 強
文件服務(wù)器 :存儲 文件 ,要求 存儲容量 大
數(shù)據(jù)庫 服務(wù)器 :存儲 數(shù)據(jù) 、緩存 、磁盤 檢索 ,要求 內(nèi)存 、硬盤速度快
隨著 用戶量 增多 ,數(shù)據(jù)庫 壓力大 ,會成為 系統(tǒng) 瓶頸 。
◆用緩存 改善 網(wǎng)站 性能
二八定律 :80 %的業(yè)務(wù) 訪問 20 %的數(shù)據(jù) 。
所以 常用 數(shù)據(jù) 放入 緩存 ,可以 減少 數(shù)據(jù)庫 的壓力 。
緩存 分為 兩種 :
本地 緩存 :訪問 更快,但受應(yīng)用服務(wù)器 內(nèi)存 限制 ,且會出現(xiàn) 和應(yīng)用程序 爭用內(nèi)存 的情況 。
分布式緩存:集群 方式 ,專用 服務(wù)器 作為 緩存服務(wù)器 ,理論上不受 內(nèi)存容量 限制 。
目前 只有 單個 應(yīng)用服務(wù)器 ,且只部署 了一個 實例 ,其能夠 處理 的連接數(shù) 有限 ,在網(wǎng)站訪問 高峰期 時,應(yīng)用服務(wù)器 會變成 瓶頸 。
◆使用 應(yīng)用 集群 改善 網(wǎng)站 的并發(fā) 能力
一臺 服務(wù)器 的處理 能力不足時,不要 考慮 去換更強大 的服務(wù)器 ,對于 大型網(wǎng)站 而言 ,不管 多么 強大 的服務(wù)器 ,都滿足 不了 網(wǎng)站 持續(xù)增長 的業(yè)務(wù) 需求 。
最好 的方式 是添加 更多 的服務(wù)器 來分擔(dān) 原有 服務(wù)器 的訪問 。
◆數(shù)據(jù)庫 讀寫分離
數(shù)據(jù)庫 還存在 的的問題 :使用 緩存 后,依然 會有 部分 讀操作 (緩存 沒有 命中 ,緩存 過期 等)和所有 的寫操作 需要 訪問 數(shù)據(jù)庫 。
在網(wǎng)站 用戶 達到 一定 規(guī)模 后,數(shù)據(jù)庫 依然 會因為 負載 較高成為 系統(tǒng) 瓶頸 。
解決辦法 :采用 數(shù)據(jù)庫 讀寫分離,兩臺 數(shù)據(jù)庫 配置 主從關(guān)系 ,從主庫 寫數(shù)據(jù) ,從從 庫讀數(shù)據(jù) ,主庫 的數(shù)據(jù) 會同步 到從庫中。
為了 便于 應(yīng)用程序 能夠 透明 地訪問 讀寫分離的數(shù)據(jù)庫 ,所以 在應(yīng)用程序 中使用 專門 的數(shù)據(jù) 訪問 模塊 。
◆使用 反向代理 緩存 和CDN 加速 網(wǎng)站 響應(yīng) :網(wǎng)絡(luò)環(huán)境 復(fù)雜 ,緩存 前端 靜態(tài) 資源
請求 訪問 存在的問題 :隨著 網(wǎng)站 持續(xù) 的發(fā)展 ,發(fā)現(xiàn) 不同 網(wǎng)絡(luò)環(huán)境 的用戶 訪問速度 不同 。
解決辦法 :使用 反向代理 緩存 和CDN 加速 網(wǎng)站 響應(yīng) 。
CDN 和反向代理 的基本原理 :都是 緩存 ,區(qū)別 在于 CDN 部署 在網(wǎng)絡(luò) 提供商 的機房 ,使用戶 在請求 網(wǎng)站服務(wù) 時,可以 從距離 自己 最近 的網(wǎng)絡(luò) 提供商 機房 獲取數(shù)據(jù) ;而反向代理 則部署 在網(wǎng)站 的中心 機房 中,從用戶 請求 達到 中心 機房 后,首先 訪問 的服務(wù)器 是反向代理 服務(wù)器 ,如果 反向代理 服務(wù)器 中緩存 著用戶 請求 的資源 ,就將其直接 返回 給用戶 。
CDN 和反向代理 的目的 :盡早 返回 數(shù)據(jù) 給用戶 ,一方面 加快 用戶 訪問速度 ,另一方面 減輕 應(yīng)用服務(wù)器 的負載 壓力 。
◆使用 分布式文件系統(tǒng) 和分布式 數(shù)據(jù)庫系統(tǒng)
隨著 網(wǎng)站 業(yè)務(wù)發(fā)展 ,原有 讀寫分離的數(shù)據(jù)庫 也不能 支撐 。
另外 ,原有 的文件服務(wù)器 也無法 滿足需求了。
這時 ,需要 使用 分布式 數(shù)據(jù)庫 和分布式文件系統(tǒng) 。
分布式 數(shù)據(jù)庫 是網(wǎng)站 數(shù)據(jù)庫 拆分 的最后 手段 ,只有 在單表 數(shù)據(jù) 規(guī)模 非常 龐大 時才使用 。
網(wǎng)站 更常用 的數(shù)據(jù)庫 拆分 手段 是業(yè)務(wù) 分庫 ,將不同 的業(yè)務(wù) 數(shù)據(jù) 部署 在不同 的物理服務(wù)器上。
◆使用 NoSQL和搜索引擎
隨著 業(yè)務(wù) 越來越 復(fù)雜 ,對數(shù)據(jù)存儲 和檢索 的需求 也越來越 復(fù)雜 ,網(wǎng)站 需要 采用 NoSQL和非數(shù)據(jù)庫查詢 技術(shù) 比如 搜索引擎 。
◆業(yè)務(wù) 拆分 (分治 )
網(wǎng)站 過于 復(fù)雜 ,將業(yè)務(wù) 拆分 。
比如 商城 拆分為 首頁 、店鋪 、訂單 、買家 、賣家 等產(chǎn)品線 ,歸不同 的業(yè)務(wù) 團隊 負責(zé) 。
具體 到技術(shù) ,也會根據(jù) 產(chǎn)品線 劃分 ,將一個網(wǎng)站 拆分為 多個 應(yīng)用 ,每個 應(yīng)用 獨立 部署 維護 。
應(yīng)用 之間 可以 通過 一個 超鏈接 建立 關(guān)系 (在首頁 的導(dǎo)航 鏈接 指向 不同 的應(yīng)用 地址 ),也可以 通過 消息隊列 進行 數(shù)據(jù) 分發(fā) ,當(dāng)然 最多 的還是 通過 訪問 同一個 數(shù)據(jù) 存儲系統(tǒng) 來構(gòu)成 一個 關(guān)聯(lián) 的完整 系統(tǒng) 。
◆分布式服務(wù)
業(yè)務(wù) 拆分 越來越 小,存儲系統(tǒng) 越來越大,應(yīng)用系統(tǒng) 整體 復(fù)雜度 呈指數(shù)型增加 ,部署 維護 越來越 困難 。
由于 所有 應(yīng)用 都需要 連接數(shù)據(jù)庫 ,在數(shù)萬 臺服務(wù)器 的情況 下,數(shù)據(jù)庫連接 會資源 不足 。
既然 每個 應(yīng)用系統(tǒng) 都需要 相同 的業(yè)務(wù) 操作 ,比如 用戶管理 、商品管理 等,可以 把這些 共用 業(yè)務(wù) 抽取 出來 ,獨立 部署 。