2015-12-23 10:15
吳冬勇
大型網(wǎng)站架構(gòu)演化發(fā)展歷程
-
初級階段
初級階段 - 應(yīng)用服務(wù)和數(shù)據(jù)服務(wù)分離
瓶頸:服務(wù)器之間的通信 - 使用緩存改善網(wǎng)站性能
- 應(yīng)用服務(wù)器集群
- 數(shù)據(jù)庫讀寫分離
- 使用反向代理和CDN,加速網(wǎng)站響應(yīng)
- 分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng)
- 根據(jù)業(yè)務(wù)拆分系統(tǒng)
大型網(wǎng)站的架構(gòu)要素
- 性能
- 可用性:避免網(wǎng)站出現(xiàn)不可用
- 伸縮性:能夠用加減服務(wù)器的方式解決增長需求
- 擴展性
- 安全性
網(wǎng)站架構(gòu)原則&要避免的誤區(qū)
- 按需設(shè)計檩禾,切勿求大
- 避免為技術(shù)而技術(shù)
- 避免企圖用技術(shù)解決所有問題
- 先從小事做起 拜姿,基礎(chǔ)決定高度
Web前端系統(tǒng)如何提升性能
- 減少HTTP請求右核,js/css文件的合并
- 利用瀏覽器的緩存功能
- CSS放上面荣赶,js放下面
- 減少cookie的傳輸
- 優(yōu)化和精簡JS
- 善于Ajax
- 配置ETags(多服務(wù)器集群的時候無法使用)
- Gzip壓縮
- CDN加速
- 反向代理
服務(wù)端的代碼優(yōu)化
1.數(shù)據(jù)庫訪問性能優(yōu)化
(1)減少數(shù)據(jù)庫連接打開的時間
(2)返回多個數(shù)據(jù)集
(3)。说订。灵临。
2.減少裝箱/拆箱的操作
3.部署的代碼一定要禁用調(diào)試模式
4.每個方法盡量高效(一個方法只做一件事)
5.異步操作,分時計算
6.避免到服務(wù)器的不必要往返過程
7.避免不必要的重定向
8.不要依賴代碼的異端
.NET MVC 服務(wù)端代碼的優(yōu)化
1.避免傳入NULL值給View
2.關(guān)閉Web.config的debug模式
3.對熱點常用數(shù)據(jù)使用適當(dāng)?shù)木彺娌呗?/p>
數(shù)據(jù)訪問層的提升——緩存系統(tǒng)
緩存的作用
1.減少數(shù)據(jù)庫訪問讼载,降低數(shù)據(jù)庫的負荷和壓力
2.速度快轿秧,減少重復(fù)計算,降低應(yīng)用服務(wù)器的負載
如何用好緩存
1.熱點數(shù)據(jù)用緩存咨堤,不是熱點數(shù)據(jù)少用
2.頻繁寫的數(shù)據(jù)慎重
如何保證數(shù)據(jù)的一致性
1.設(shè)置緩存失效時間
2.修改操作后主動清空緩存
怎么使用好緩存(緩存策略的設(shè)計)
分布式緩存技術(shù):
目的:保證緩存的可用性菇篡;環(huán)節(jié)大用戶量下,訪問緩存的壓力
架構(gòu)方式:以JBoss Cache
MC分布式緩存的路由算法
緩存命中率
加服務(wù)器(不能停止現(xiàn)有服務(wù))對命中率是否有影響