大型網(wǎng)站技術(shù)架構(gòu)筆記二

第三章

性能,可用性,伸縮性,擴(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>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容