盘点大型分布式网站术语
1、I/O優(yōu)化
1、增加緩存,減少磁盤的訪問次數(shù)。
2、優(yōu)化磁盤的管理系統(tǒng),設(shè)計最優(yōu)的磁盤方式策略,以及磁盤的尋址策略,這是在底層操作系統(tǒng)層面考慮的。
3、設(shè)計合理的磁盤存儲數(shù)據(jù)塊,以及訪問這些數(shù)據(jù)庫的策略,這是在應(yīng)用層面考慮的。例如,我們可以給存放的數(shù)據(jù)設(shè)計索引,通過尋址索引來加快和減少磁盤的訪問量,還可以采用異步和非阻塞的方式加快磁盤的訪問速度。
4、應(yīng)用合理的RAID策略提升磁盤I/O。
2、Web前端調(diào)優(yōu)
1、減少網(wǎng)絡(luò)交互的次數(shù)(多次請求合并)
2、減少網(wǎng)絡(luò)傳輸數(shù)據(jù)量的大小(壓縮)
3、盡量減少編碼(盡量提前將字符轉(zhuǎn)化為字節(jié),或者減少從字符到字節(jié)的轉(zhuǎn)化過程。)
4、使用瀏覽器緩存
5、減少Cookie傳輸
6、合理布局頁面
7、使用頁面壓縮
8、延遲加載頁面
9、CSS在最上面,JS在最下面
10、CDN
11、反向代理
12、頁面靜態(tài)化
13、異地部署
3、服務(wù)降級(自動優(yōu)雅降級)
拒絕服務(wù)和關(guān)閉服務(wù)
4、冪等性設(shè)計
有些服務(wù)天然具有冪等性,比如講用戶性別設(shè)置為男性,不管設(shè)置多少次,結(jié)果都一樣。但是對轉(zhuǎn)賬交易等操作,問題就會比較復(fù)雜,需要通過交易編號等信息進行服務(wù)調(diào)用有效性校驗,只有有效的操作才能繼續(xù)執(zhí)行。
(注:冪等性是系統(tǒng)的接口對外一種承諾(而不是實現(xiàn)), 承諾只要調(diào)用接口成功, 外部多次調(diào)用對系統(tǒng)的影響是一致的. 聲明為冪等的接口會認為外部調(diào)用失敗是常態(tài), 并且失敗之后必然會有重試.)
5、失效轉(zhuǎn)移
若數(shù)據(jù)服務(wù)器集群中任何一臺服務(wù)器宕機,那么應(yīng)用程序針對這臺服務(wù)器的所有讀寫操作都需要重新路由到其他服務(wù)器,保證數(shù)據(jù)訪問不會失敗,這個過程叫失效轉(zhuǎn)移。?
失效轉(zhuǎn)移包括:失效確認(心跳檢測和應(yīng)用程序訪問失敗報告)、訪問轉(zhuǎn)移、數(shù)據(jù)恢復(fù)。?
失效轉(zhuǎn)移保證當一個數(shù)據(jù)副本不可訪問時,可以快速切換訪問數(shù)據(jù)的其他副本,保證系統(tǒng)可用。
6、性能優(yōu)化
根據(jù)網(wǎng)站分層架構(gòu),性能優(yōu)化可分為:web前端性能優(yōu)化、應(yīng)用服務(wù)器性能優(yōu)化、存儲服務(wù)器性能優(yōu)化。
1、Web前端性能優(yōu)化?
瀏覽器訪問優(yōu)化:減少http請求;使用瀏覽器緩存;啟用壓縮;css放在頁面最上面、javaScript放在頁面最下面;減少Cookie傳輸
CDN加速
反向代理
2、應(yīng)用服務(wù)器性能優(yōu)化?
分布式緩存(Redis等)
異步操作(消息隊列)
使用集群(負載均衡)
代碼優(yōu)化
3、存儲性能優(yōu)化?
機械硬盤vs固態(tài)硬盤
B+樹 vs LSM樹
RAID vs HDFS
7、代碼優(yōu)化
多線程(Q:怎么確保線程安全?無鎖機制有哪些?)
資源復(fù)用(單例模式,連接池,線程池)
數(shù)據(jù)結(jié)構(gòu)
垃圾回收
8、負載均衡
HTTP重定向負載均衡?
當用戶發(fā)來請求的時候,Web服務(wù)器通過修改HTTP響應(yīng)頭中的Location標記來返回一個新的url,然后瀏覽器再繼續(xù)請求這個新url,實際上就是頁面重定向。通過重定向,來達到“負載均衡”的目標。例如,我們在下載PHP源碼包的時候,點擊下載鏈接時,為了解決不同國家和地域下載速度的問題,它會返回一個離我們近的下載地址。重定向的HTTP返回碼是302。?
優(yōu)點:比較簡單。?
缺點:瀏覽器需要兩次請求服務(wù)器才能完成一次訪問,性能較差。重定向服務(wù)自身的處理能力有可能成為瓶頸,整個集群的伸縮性國模有限;使用HTTP302響應(yīng)碼重定向,有可能使搜索引擎判斷為SEO作弊,降低搜索排名。DNS域名解析負載均衡?
DNS(Domain Name System)負責域名解析的服務(wù),域名url實際上是服務(wù)器的別名,實際映射是一個IP地址,解析過程,就是DNS完成域名到IP的映射。而一個域名是可以配置成對應(yīng)多個IP的。因此,DNS也就可以作為負載均衡服務(wù)。?
事實上,大型網(wǎng)站總是部分使用DNS域名解析,利用域名解析作為第一級負載均衡手段,即域名解析得到的一組服務(wù)器并不是實際提供Web服務(wù)的物理服務(wù)器,而是同樣提供負載均衡服務(wù)的內(nèi)部服務(wù)器,這組內(nèi)部負載均衡服務(wù)器再進行負載均衡,將請求分發(fā)到真是的Web服務(wù)器上。?
優(yōu)點:將負載均衡的工作轉(zhuǎn)交給DNS,省掉了網(wǎng)站管理維護負載均衡服務(wù)器的麻煩,同時許多DNS還支持基于地理位置的域名解析,即會將域名解析成舉例用戶地理最近的一個服務(wù)器地址,這樣可以加快用戶訪問速度,改善性能。?
缺點:不能自由定義規(guī)則,而且變更被映射的IP或者機器故障時很麻煩,還存在DNS生效延遲的問題。而且DNS負載均衡的控制權(quán)在域名服務(wù)商那里,網(wǎng)站無法對其做更多改善和更強大的管理。反向代理負載均衡?
反向代理服務(wù)可以緩存資源以改善網(wǎng)站性能。實際上,在部署位置上,反向代理服務(wù)器處于Web服務(wù)器前面(這樣才可能緩存Web相應(yīng),加速訪問),這個位置也正好是負載均衡服務(wù)器的位置,所以大多數(shù)反向代理服務(wù)器同時提供負載均衡的功能,管理一組Web服務(wù)器,將請求根據(jù)負載均衡算法轉(zhuǎn)發(fā)到不同的Web服務(wù)器上。Web服務(wù)器處理完成的響應(yīng)也需要通過反向代理服務(wù)器返回給用戶。由于web服務(wù)器不直接對外提供訪問,因此Web服務(wù)器不需要使用外部ip地址,而反向代理服務(wù)器則需要配置雙網(wǎng)卡和內(nèi)部外部兩套IP地址。?
優(yōu)點:和反向代理服務(wù)器功能集成在一起,部署簡單。?
缺點:反向代理服務(wù)器是所有請求和響應(yīng)的中轉(zhuǎn)站,其性能可能會成為瓶頸。LVS-NAT:修改IP地址
LVS-TUN: 一個IP報文封裝在另一個IP報文的技術(shù)。
LVS-DR:將數(shù)據(jù)幀的MAC地址改為選出服務(wù)器的MAC地址,再將修改后的數(shù)據(jù)幀在與服務(wù)器組的局域網(wǎng)上發(fā)送。
9、緩存
緩存就是將數(shù)據(jù)存放在距離計算最近的位置以加快處理速度。緩存是改善軟件性能的第一手段,現(xiàn)在CPU越來越快的一個重要因素就是使用了更多的緩存,在復(fù)雜的軟件設(shè)計中,緩存幾乎無處不在。大型網(wǎng)站架構(gòu)設(shè)計在很多方面都使用了緩存設(shè)計。
CDN: 及內(nèi)容分發(fā)網(wǎng)絡(luò),部署在距離終端用戶最近的網(wǎng)絡(luò)服務(wù)商,用戶的網(wǎng)絡(luò)請求總是先到達他的網(wǎng)絡(luò)服務(wù)商哪里,在這里緩存網(wǎng)站的一些靜態(tài)資源(較少變化的數(shù)據(jù)),可以就近以最快速度返回給用戶,如視頻網(wǎng)站和門戶網(wǎng)站會將用戶訪問量大的熱點內(nèi)容緩存在CDN中。
反向代理:反向代理屬于網(wǎng)站前端架構(gòu)的一部分,部署在網(wǎng)站的前端,當用戶請求到達網(wǎng)站的數(shù)據(jù)中心時,最先訪問到的就是反向代理服務(wù)器,這里緩存網(wǎng)站的靜態(tài)資源,無需將請求繼續(xù)轉(zhuǎn)發(fā)給應(yīng)用服務(wù)器就能返回給用戶。
本地緩存:在應(yīng)用服務(wù)器本地緩存著熱點數(shù)據(jù),應(yīng)用程序可以在本機內(nèi)存中直接訪問數(shù)據(jù),而無需訪問數(shù)據(jù)庫。
分布式緩存:大型網(wǎng)站的數(shù)據(jù)量非常龐大,即使只緩存一小部分,需要的內(nèi)存空間也不是單機能承受的,所以除了本地緩存,還需要分布式緩存,將數(shù)據(jù)緩存在一個專門的分布式緩存集群中,應(yīng)用程序通過網(wǎng)絡(luò)通信訪問緩存數(shù)據(jù)。
使用緩存有兩個前提條件,一是數(shù)據(jù)訪問熱點不均衡,某些數(shù)據(jù)會被更頻繁的訪問,這些數(shù)據(jù)應(yīng)該放在緩存中;二是數(shù)據(jù)在某個時間段內(nèi)有效,不會很快過期,否則緩存的數(shù)據(jù)就會因已經(jīng)失效而產(chǎn)生臟讀,影響結(jié)果的正確性。網(wǎng)站應(yīng)用中,緩存處理可以加快數(shù)據(jù)訪問速度,還可以減輕后端應(yīng)用和數(shù)據(jù)存儲的負載壓力,這一點對網(wǎng)站數(shù)據(jù)庫架構(gòu)至關(guān)重要,網(wǎng)站數(shù)據(jù)庫幾乎都是按照有緩存的前提進行負載能力設(shè)計的。
10、負載均衡算法
輪詢 Round Robin?
加強輪詢 Weight Round Robin?
隨機 Random?
加強隨機 Weight Random?
最少連接 Least Connections?
加強最少連接?
源地址散列 Hash
其他算法
最快算法(Fastest):傳遞連接給那些響應(yīng)最快的服務(wù)器。當其中某個服務(wù)器發(fā)生第二到第7 層的故障,BIG-IP 就把其從服務(wù)器隊列中拿出,不參加下一次的用戶請求的分配,直到其恢復(fù)正常。
觀察算法(Observed):連接數(shù)目和響應(yīng)時間以這兩項的最佳平衡為依據(jù)為新的請求選擇服務(wù)器。當其中某個服務(wù)器發(fā)生第二到第7 層的故障,BIG-IP就把其從服務(wù)器隊列中拿出,不參加下一次的用戶請求的分配,直到其恢復(fù)正常。
預(yù)測算法(Predictive):BIG-IP利用收集到的服務(wù)器當前的性能指標,進行預(yù)測分析,選擇一臺服務(wù)器在下一個時間片內(nèi),其性能將達到最佳的服務(wù)器相應(yīng)用戶的請求。(被BIG-IP 進行檢測)
動態(tài)性能分配算法(Dynamic Ratio-APM):BIG-IP 收集到的應(yīng)用程序和應(yīng)用服務(wù)器的各項性能參數(shù),動態(tài)調(diào)整流量分配。
動態(tài)服務(wù)器補充算法(Dynamic Server Act.):當主服務(wù)器群中因故障導致數(shù)量減少時,動態(tài)地將備份服務(wù)器補充至主服務(wù)器群。
服務(wù)質(zhì)量算法(QoS):按不同的優(yōu)先級對數(shù)據(jù)流進行分配。
服務(wù)類型算法(ToS): 按不同的服務(wù)類型(在Type of Field中標識)負載均衡對數(shù)據(jù)流進行分配。
規(guī)則模式算法:針對不同的數(shù)據(jù)流設(shè)置導向規(guī)則,用戶可自行
11、擴展性和伸縮性的區(qū)別
擴展性:指對現(xiàn)有系統(tǒng)影響最小的情況下,系統(tǒng)功能可持續(xù)擴展或替身的能力。表現(xiàn)在系統(tǒng)基礎(chǔ)設(shè)施穩(wěn)定不需要經(jīng)常變更,應(yīng)用之間較少依賴和耦合,對需求變更可以敏捷響應(yīng)。它是系統(tǒng)架構(gòu)設(shè)計層面的開閉原則(對擴展開放,對修改關(guān)閉),架構(gòu)設(shè)計考慮未來功能擴展,當系統(tǒng)增加新功能時,不需要對現(xiàn)有系統(tǒng)的結(jié)構(gòu)和代碼進行修改。
衡量網(wǎng)站架構(gòu)擴展性好壞的主要標準就是在網(wǎng)站增加新的業(yè)務(wù)產(chǎn)品時,是否可以實現(xiàn)對現(xiàn)有產(chǎn)品透明無影響,不需要任何改動或者很少改動既有業(yè)務(wù)功能就可以上線新產(chǎn)品。不同產(chǎn)品之間是否很少耦合,一個產(chǎn)品改動對其他產(chǎn)品無影響,其他產(chǎn)品和功能不需要受牽連進行改動。
伸縮性:所謂網(wǎng)站的伸縮性指是不需要改變網(wǎng)站的軟硬件設(shè)計,僅僅通過改變部署的服務(wù)器數(shù)量就可以擴大或者縮小網(wǎng)站的服務(wù)處理能力。
指系統(tǒng)能夠增加(減少)自身資源規(guī)模的方式增強(減少)自己計算處理事務(wù)的能力。如果這種增減是成比例的,就被稱作線性伸縮性。在網(wǎng)站架構(gòu)中,通常指利用集群的方式增加服務(wù)器數(shù)量、提高系統(tǒng)的整體事務(wù)吞吐能力。
衡量架構(gòu)伸縮性的主要標準就是可以用多臺服務(wù)器構(gòu)建集群,是否容易向集群中添加新的服務(wù)器。加入新的服務(wù)器后是否可以提供和原來服務(wù)無差別的服務(wù)、集群中的可容納的總的服務(wù)器數(shù)量是否有限制。
12、分布式緩存的一致性hash
具體算法過程:先構(gòu)造一個長度為2^32的整數(shù)環(huán)(這個環(huán)被稱作一致性Hash環(huán))根據(jù)節(jié)點名稱的Hash值(其分布范圍為[0,2^32 - 1])將緩存服務(wù)器階段設(shè)置在這個Hash環(huán)上。然后根據(jù)需要緩存的數(shù)據(jù)的Key值計算得到Hash值(其分布范圍也同樣為[0,2^32 - 1]),然后在Hash環(huán)上順時針查找舉例這個KEY的hash值最近的緩存服務(wù)器節(jié)點,完成KEY到服務(wù)器的Hash映射查找。
優(yōu)化策略:將每臺物理服務(wù)器虛擬為一組虛擬緩存服務(wù)器,將虛擬服務(wù)器的Hash值放置在Hash環(huán)上,key在換上先找到虛擬服務(wù)器節(jié)點,再得到物理服務(wù)器的信息。
一臺物理服務(wù)器設(shè)置多少個虛擬服務(wù)器節(jié)點合適呢?經(jīng)驗值:150。
13、網(wǎng)絡(luò)安全
1、XSS攻擊?
跨站點腳本攻擊(Cross Site Script),指黑客通過篡改網(wǎng)頁,注入惡意的HTML腳本,在用戶瀏覽網(wǎng)頁時,控制用戶瀏覽器進行惡意操作的一種攻擊方式。?
防范手段:消毒(XSS攻擊者一般都是通過在請求中嵌入惡意腳本大道攻擊的目的,這些腳本是一般用戶輸入中不使用的,如果進行過濾和消毒處理,即對某些html危險字符轉(zhuǎn)移,如“>”轉(zhuǎn)譯為“& gt;”);HttpOnly(防止XSS攻擊者竊取Cookie).
2、注入攻擊:SQL注入和OS注入?SQL防范:預(yù)編譯語句PreparedStatement; ORM;避免密碼明文存放;處理好相應(yīng)的異常。
3、CSRF(Cross Site Request Forgery,跨站點請求偽造)。聽起來與XSS有點相似,事實上兩者區(qū)別很大,XSS利用的是站內(nèi)的信任用戶,而CSRF則是通過偽裝來自受信任用戶的請求來利用受信任的網(wǎng)站。?
防范:httpOnly;增加token;通過Referer識別。
4、文件上傳漏洞
5、DDos攻擊
14、加密技術(shù)
1、摘要加密:MD5, SHA
2、對稱加密:DES算法,RC算法, AES
3、非對稱加密:RSA
4、非對稱加密技術(shù)通常用在信息安全傳輸,數(shù)字簽名等場合。?
5、HTTPS傳輸中瀏覽器使用的數(shù)字證書實質(zhì)上是經(jīng)過權(quán)威機構(gòu)認證的非對稱加密的公鑰。
15. 流控(流量控制)
1、流量丟棄
2、通過單機內(nèi)存隊列來進行有限的等待,直接丟棄用戶請求的處理方式顯得簡單而粗暴,并且如果是I/O密集型應(yīng)用(包括網(wǎng)絡(luò)I/O和磁盤I/O),瓶頸一般不再CPU和內(nèi)存。因此,適當?shù)牡却?#xff0c;既能夠替身用戶體驗,又能夠提高資源利用率。
3、通過分布式消息隊列來將用戶的請求異步化。
參考資料
?
1、LVS:三種負載均衡方式比較+另三種負載均衡方式?
2、《大型網(wǎng)站技術(shù)架構(gòu)——核心原理與技術(shù)分析》李智慧 著。?
3、億級Web系統(tǒng)搭建:單機到分布式集群?
4、《大型分布式網(wǎng)站架構(gòu)設(shè)計與實現(xiàn)》陳康賢 著。
作者 |?朱小廝
來源 | CSDN
鏈接 | http://blog.csdn.net/u013256816/article/details/5156356
總結(jié)
以上是生活随笔為你收集整理的盘点大型分布式网站术语的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R语言使用RStudio将可视化结果保存
- 下一篇: TinyMCE 富文本编辑器 ━━ 自定