須要關注性能、可用性、安全性、伸縮性,可擴展性五個要素css
性能:算法
瀏覽器端能夠瀏覽器緩存,啓用gzip,可是這樣會增長CPU的壓力sql
合理佈局頁面,css放在前面,js放在後面,由於頁面是從上往下渲染數據庫
CDN,將靜態資源分發網絡機房,網絡機房前作反向代理存放靜態資源瀏覽器
應用服務端,採用緩存,nosql數據庫,分佈式緩存等存放熱點數據,減小應用端和數據庫壓力緩存
採用消息隊列,安全
集羣,使用負載均衡服務器
代碼層級採用多線程操做網絡
數據庫方面優化服務端,使用緩存,分庫分表,或者直接採用nosql數據庫session
指標有tps,併發數,響應時間等
可用性:
採用集羣,單臺 宕機不影響集羣內部工做,數據庫作複製
伸縮性:
動態加入server,對集羣內部無影響
若是應用服務是無狀態的那麼基本沒啥影響,若是有狀態的就要考慮session的問題,
緩存服務器會影響路由,須要優化路由算法
數據庫若是採用了分庫分表,也會影響,
nosql基本都有很好的擴展性
擴展性:
更快的實現新需求,可是新需求對現有系統是透明的,基本無感知,目前可伸縮框架通常是兩中,一種是事件驅動架構,另外一種是分佈式服務
事件驅動架構:一般是指消息隊列,通常均可以動態加入生產者消費者
分佈式服務:將業務和複用服務分開,經過分佈式框架服務進行調用,基本無影響,如今國內比較好的就是阿里的Dubbo,Sina的Motan,和噹噹的Dubbox,不過dubbox實在dubbo的基礎上開發的,
安全性