如何讓網站随應用所需靈活變動,一年時(shí)間用戶數從零過(guò)億呢?
一、首先,來看看大型網站軟件系統的特點,有以下特點:
1、高并發(fā),大流量。
2、高可用:系統24小時(shí)不間斷服務。
3、海量數據。
4、用戶分布廣泛,網絡情況複雜。
5、安全環境惡劣。
6、需求快速變更,發(fā)布頻繁。
7、漸進(jìn)式發(fā)展。
二、大型網站核心架構要素
1、性能(néng):性能(néng)是網站的一個重要指标,除非是沒(méi)得選擇(比如隻能(néng)到www.12306.cn這(zhè)一個網站上買火車票),否則用戶無法忍受一個響應緩慢的網站。一個打開(kāi)緩慢的網站會(huì)導緻嚴重的用戶流失,很多時(shí)候網站性能(néng)問題是網站架構升級優化的觸發(fā)器。可以說(shuō)性能(néng)是網站架構設計的一個重要方面(miàn),任何軟件架構設計方案都(dōu)必須考慮可能(néng)會(huì)帶來的性能(néng)問題。
也正是因爲性能(néng)問題幾乎無處不在,所以優化網站性能(néng)的手段也非常多,從用戶浏覽器到數據庫,影響用戶請求的所有環節都(dōu)可以進(jìn)行性能(néng)優化。在浏覽器端,可以通過(guò)浏覽器緩存、使用頁面(miàn)壓縮、合理布局頁面(miàn)、減少Cookie傳輸等手段改善性能(néng)。
還(hái)可以使用CDN,將(jiāng)網站靜态内容分發(fā)至離用戶最近的網絡服務商機房,使用戶通過(guò)最短訪問路徑獲取數據。可以在網站機房部署反向(xiàng)代理服務器,緩存熱點文件,加快請求響應速度,減輕應用服務器負載壓力。
在應用服務器端,可以使用服務器本地緩存和分布式緩存,通過(guò)緩存在内存中的熱點數據處理用戶請求,加快請求處理過(guò)程,減輕數據庫負載壓力。也可以通過(guò)異步操作將(jiāng)用戶請求發(fā)送至消息隊列等待後(hòu)續任務處理,而當前請求直接返回響應給用戶。在網站有很多用戶高并發(fā)請求的情況下,可以將(jiāng)多台應用服務器組成(chéng)一個集群共同對(duì)外服務,提高整體處理能(néng)力,改善性能(néng)。
在代碼層面(miàn),也可以通過(guò)使用多線程、改善内存管理等手段優化性能(néng)。在數據庫服務器端,索引、緩存、SQL優化等性能(néng)優化手段都(dōu)已經(jīng)比較成(chéng)熟。
衡量網站性能(néng)有一系列指标,重要的有響應時(shí)間、TPS、系統性能(néng)計數器等,通過(guò)測試這(zhè)些指标以确定系統設計是否達到目标。這(zhè)些指标也是網站監控的重要參數,通過(guò)監控這(zhè)些指标可以分析系統瓶頸,預測網站容量,并對(duì)異常指标進(jìn)行報警,保障系統可用性。
2、可用性:網站高可用的主要手段是冗餘,應用部署在多台服務器上同時(shí)提供訪問,數據存儲在多台服務器上互相備份,任何一台服務器宕機都(dōu)不會(huì)影響應用的整體可用,也不會(huì)導緻數據丢失。
對(duì)于應用服務器而言,多台應用服務器通過(guò)負載均衡設備組成(chéng)一個集群共同對(duì)外提供服務,任何一台服務器宕機,隻需把請求切換到其他服務器就(jiù)可實現應用的高可用,但是一個前提條件是應用服務器上不能(néng)保存請求的會(huì)話信息。否則服務器宕機,會(huì)話丢失,即使將(jiāng)用戶請求轉發(fā)到其他服務器上也無法完成(chéng)業務處理。
伸縮性:衡量架構伸縮性的主要标準就(jiù)是是否可以用多台服務器構建集群,是否容易向(xiàng)集群中添加新的服務器。加入新的服務器後(hòu)是否可以提供和原來的服務器無差别的服務。集群中可容納的總的服務器數量是否有限制。
3、擴展性:不同于其他架構要素主要關注非功能(néng)性需求,網站的擴展性架構直接關注網站的功能(néng)需求。網站快速發(fā)展,功能(néng)不斷擴展,如何設計網站的架構使其能(néng)夠快速響應需求變化,是網站可擴展架構主要的目的。
網站可伸縮架構的主要手段是事(shì)件驅動架構和分布式服務。
事(shì)件驅動架構在網站通常利用消息隊列實現,將(jiāng)用戶請求和其他業務事(shì)件構造成(chéng)消息發(fā)布到消息隊列,消息的處理者作爲消費者從消息隊列中獲取消息進(jìn)行處理。通過(guò)這(zhè)種(zhǒng)方式將(jiāng)消息産生和消息處理分離開(kāi)來,可以透明地增加新的消息生産者任務或者新的消息消費者任務。
|