第三章
性能,可用性,伸縮性,擴(kuò)展性 和 安全性
瀏覽器緩存,頁面壓縮,合理頁面布局,減少Cookie傳值等改善性能
響應(yīng)時間,TPS,系統(tǒng)性能計數(shù)器
網(wǎng)站高可用主要手段是冗余,部署在多臺服務(wù)器上提供訪問,數(shù)據(jù)存儲在多臺服務(wù)器上互相備份,
任何一臺服務(wù)器宕機(jī)都不會影響整體的可用性,也不會導(dǎo)致數(shù)據(jù)丟失。
前提條件是應(yīng)用服務(wù)器不保存會話信息,否則會話丟失,請求轉(zhuǎn)移到其他服務(wù)器也無法完成業(yè)務(wù)。
伸縮性:是指通過不斷的向集群中加入服務(wù)器的手段來緩解不斷上升的并發(fā)訪問壓力和不斷增長的數(shù)據(jù)存儲需求。
擴(kuò)展性:新增業(yè)務(wù)時,是否可以對現(xiàn)有產(chǎn)品透明無影響,不需改動或很少改動既有業(yè)務(wù)就可以上線新功能,
不同產(chǎn)品之間很少耦合。
網(wǎng)站可擴(kuò)展主要手段有:事件驅(qū)動架構(gòu)和分布式服務(wù)
事件驅(qū)動就是利用消息隊列。
分布式服務(wù)則是將業(yè)務(wù)和可復(fù)用業(yè)務(wù)分離開來,通過分布式服務(wù)框架調(diào)用。
第四章
不同視角下的網(wǎng)站性能有著不同的標(biāo)準(zhǔn),也有不同的優(yōu)化手段。
用戶:瀏覽器上直觀的感受的網(wǎng)站速度響應(yīng)快還是慢。
優(yōu)化頁面HTML樣式,瀏覽器端的并發(fā)和異步,瀏覽器的緩存策略,CDN服務(wù),反向代理等手段。
開發(fā)人員: 程序本身及相關(guān)子系統(tǒng)的特性,包括響應(yīng)延遲,吞吐量,并發(fā)處理能力,異步消息加快請求響應(yīng)及實(shí)現(xiàn)消峰。
代碼手段改善程序特性。
運(yùn)維人員:設(shè)施性能和資源利用率,寬帶能力,服務(wù)器硬件配置,數(shù)據(jù)中心網(wǎng)絡(luò)架構(gòu)和網(wǎng)絡(luò)帶寬資源利用率
主要優(yōu)化手段:優(yōu)化骨干網(wǎng)絡(luò),使用高性價比服務(wù)器,利用虛擬化技術(shù)優(yōu)化資源利用率。
響應(yīng)時間,并發(fā)數(shù),吞吐量,性能計數(shù)器
吞吐量(請求數(shù)/秒,頁面數(shù)/秒,訪問人數(shù)/天,處理的業(yè)務(wù)數(shù)/小時,TPS(每秒事務(wù)數(shù)),HPS(每秒HTTP請求數(shù)),QPS(每秒查詢數(shù)))
性能計數(shù)器:SysLoad,對象與線程數(shù),內(nèi)存使用,CPU,磁盤與網(wǎng)絡(luò)IO等。
排除網(wǎng)站性能:檢查請求各處的日志,分析哪個環(huán)境的日志不合理,超過預(yù)期,然后檢查監(jiān)控數(shù)據(jù),
分析影響性能的主要因素,內(nèi)存,磁盤,網(wǎng)絡(luò),CPU,看是代碼還是架構(gòu)的設(shè)計不合理,或系統(tǒng)資源不足。
性能優(yōu)化,Web前端性能,應(yīng)用服務(wù)器性能,存儲服務(wù)器性能
Web前端性能優(yōu)化:瀏覽器加載,網(wǎng)站視圖模型,圖片服務(wù),CDN服務(wù) 主要優(yōu)化手段:瀏覽器訪問,反向代理,CDN
減少Http請求數(shù),使用瀏覽器緩存,啟用壓縮,CSS放在最前面,javaScript放在下面,減少cookie傳輸,CDN加速
應(yīng)用服務(wù)器優(yōu)化:緩存,集群,異步
緩存主要用存放讀寫比例很高,很少變化的數(shù)據(jù)。
不適合使用緩存的:頻繁修改的數(shù)據(jù),沒有熱點(diǎn)的數(shù)據(jù),數(shù)據(jù)不一致與臟讀,
異步操作:
消息隊列有很好的消峰作用--即通過異步處理,將短時間高并發(fā)的事務(wù)消息存儲在消息隊列中,從而消平高峰期的并發(fā)事務(wù)。
不能立即返回用戶訂單提交成功,需要在消息隊列的訂單消費(fèi)者進(jìn)程真正處理完改訂單,甚至商品出庫后,再通過電子郵件或
SMS消息通知用戶訂單成功,以免交易糾紛。(任何可以晚點(diǎn)做的事情都應(yīng)該晚點(diǎn)再做 )
啟動線程數(shù) = [任務(wù)執(zhí)行時間/(任務(wù)執(zhí)行時間-IO等待時間)] * CPU內(nèi)核數(shù)
最佳啟動線程數(shù)與CPU內(nèi)核成正比,與IO等待時間成反比
編程上解決線程安全的手段有:
設(shè)置成無狀態(tài)的對象
使用局部對象
并發(fā)訪問時使用鎖
資源復(fù)用:單例和對象池
B+樹與LSM樹
歸根結(jié)底,技術(shù)是為業(yè)務(wù)服務(wù)的,技術(shù)選型和架構(gòu)決策依賴于業(yè)務(wù)規(guī)劃乃至企業(yè)戰(zhàn)略規(guī)劃,離開業(yè)務(wù)的發(fā)展與支持和驅(qū)動,
技術(shù)走不遠(yuǎn),甚至?xí)月贰?/p>