《大型网站技术架构》5、6、7章阅读笔记
一、網(wǎng)站的可用性
網(wǎng)站的可用性,描述網(wǎng)站可有效訪問的特性,相比于網(wǎng)站的其他非公能特性,網(wǎng)站的可用性更牽動人們的神經(jīng),大行網(wǎng)站的不可用事故更是直接影響公司形象和利益,許多網(wǎng)站都將網(wǎng)站可用性列為工程師的績效考核和工資掛鉤。
可用性指標(biāo)是網(wǎng)站架構(gòu)設(shè)計的重要指標(biāo)。對外是服務(wù)承諾,對內(nèi)是考核指標(biāo),具體到每個工程師的考核,一般使用故障分。“鼓掌分”是對網(wǎng)絡(luò)故障進(jìn)行分類加權(quán)計算故障責(zé)任的方法。計算公式為:故障分=故障時間(分鐘)*故障權(quán)重。
通常企業(yè)級應(yīng)用系統(tǒng)為了提高系統(tǒng)的可用性,會采用較昂貴的軟硬件設(shè)備,而互聯(lián)網(wǎng)公司一般采用PC級服務(wù)器、開源數(shù)據(jù)庫等廉價的的設(shè)備,這些設(shè)備在節(jié)約成本的同時也降低了系統(tǒng)的可用性,這時就需要“高可用的網(wǎng)站架構(gòu)”。其設(shè)計目標(biāo)就是保證服務(wù)器故障時服務(wù)依然可用,數(shù)據(jù)依然保存并可以被訪問。而實現(xiàn)這一目的的方法就是“數(shù)據(jù)和服務(wù)的冗余備份”以及失效轉(zhuǎn)移。
一個網(wǎng)站的設(shè)計通常要分為三級結(jié)構(gòu):應(yīng)用層、服務(wù)層、數(shù)據(jù)層。各層之間有相對獨(dú)立性。應(yīng)用層主要負(fù)責(zé)具體業(yè)務(wù)邏輯處理;服務(wù)層提供可復(fù)用的服務(wù);數(shù)據(jù)層負(fù)責(zé)數(shù)據(jù)的儲存與訪問。
為了保證數(shù)據(jù)的高可用,網(wǎng)站通常會犧牲另一個很重要的指標(biāo):數(shù)據(jù)一致性。高可用的數(shù)據(jù)有如下幾個層面的含義:
①數(shù)據(jù)持久性:儲存數(shù)據(jù)時,需要寫入持久性儲存,還需要將數(shù)據(jù)備份一個或多個副本,存放在不同儲存設(shè)備上以防丟失。
②數(shù)據(jù)可訪問性:當(dāng)一個儲存設(shè)備損壞時,就要將訪問路徑切換到另一個儲存設(shè)備上,如果這個過程不能很快完成,這段時間數(shù)據(jù)是不可訪問的。
③數(shù)據(jù)一致性:在數(shù)據(jù)有多份副本的情況下,如果網(wǎng)絡(luò)出現(xiàn)故障,那么多個備份將出現(xiàn)不一致。
CPA原理認(rèn)為,一個提供服務(wù)的儲存系統(tǒng)無法同時滿足數(shù)據(jù)一致性、數(shù)據(jù)可用性、分區(qū)耐受性、這三個條件。
二、網(wǎng)站的伸縮型架構(gòu):
所謂網(wǎng)站的伸縮性是指不需要改變網(wǎng)站的軟硬件設(shè)置,僅通過改變部署的服務(wù)器數(shù)量就可以擴(kuò)大或縮小網(wǎng)站的服務(wù)處理能力。
設(shè)計一個大型軟件系統(tǒng)或一個大型網(wǎng)站和將一個小網(wǎng)站演化成一個大型網(wǎng)站是完全不同的。前者是先用著,等到不夠用了就換新的;而后者則是先用著,不夠用了再加點。
將不同功能進(jìn)行分離部署可以實現(xiàn)一定程度的伸縮性,然后再部署服務(wù)器集群,即相同服務(wù)部署在多臺服務(wù)器上構(gòu)成一個集群整體對外提供服務(wù)。當(dāng)一頭牛拉不動車時不要再找一頭更強(qiáng)壯的牛,而是用兩頭牛來拉車。
利用HTTP重定向協(xié)議實現(xiàn)負(fù)載均衡,HTTP重定向服務(wù)器是一臺普通的應(yīng)用服務(wù)器,其唯一的功能就是根據(jù)用戶的HTTP請求計算一臺真實的WEB服務(wù)地址,并將該地址寫入HTTP重定向響應(yīng)中返回給用戶瀏覽器。
三、網(wǎng)站的可擴(kuò)展架構(gòu):
擴(kuò)展性:指對現(xiàn)有系統(tǒng)影響最小情況下,系統(tǒng)功能可持續(xù)擴(kuò)展或提升的能力。表現(xiàn)在系統(tǒng)基礎(chǔ)設(shè)施穩(wěn)定,不需要經(jīng)常變更,應(yīng)用之間較少依賴和耦合,對需求變更可敏捷相應(yīng)。它是系統(tǒng)架構(gòu)層面的開閉原則,架構(gòu)設(shè)計考慮未來功能擴(kuò)展,當(dāng)系統(tǒng)增加新功能時,不需要對結(jié)構(gòu)和代碼進(jìn)行修改。
而擴(kuò)展性最主要的就是降低應(yīng)用之間的耦合性。
讀了這三篇文章,我覺得,我寫的程序在儲存的時候需要再加一個數(shù)據(jù)庫,然后所有數(shù)據(jù)都做雙份備份以備不時之需從而提高軟件可用性。
轉(zhuǎn)載于:https://www.cnblogs.com/hehejeson/articles/6559997.html
總結(jié)
以上是生活随笔為你收集整理的《大型网站技术架构》5、6、7章阅读笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件体系结构课后作业03
- 下一篇: S2SH框架入门之使用hibernate