使用pp架构形成计算机集群请求的地址无效_干货!史上最详细脑图《大型网站技术架构》...
1. 介紹一下
《大型網(wǎng)站技術架構》這本書可能很多人都看過,小編個人覺得真的是非常不錯的一本書。
看完這本書后,你會對如何設計大型網(wǎng)站架構,有非常清晰的思路。
如果還沒有讀過的小伙伴,趕緊去讀一讀吧。
PS:小編這里有這本書的Kiddle電子版,如有需要可聯(lián)系我獲取哦!
2. 架構思路
1. 大型網(wǎng)站系統(tǒng)特點
既然談的是大型網(wǎng)站架構,所謂“大型”網(wǎng)站,首先需要了解大型網(wǎng)站系統(tǒng)具有什么樣的特點。一般大型網(wǎng)站系統(tǒng)都具有如下共同特點:
- 高并發(fā),大流量
- 高可用
- 海量數(shù)據(jù)
- 用戶分布廣,網(wǎng)絡情況復雜
- 安全環(huán)境惡劣
- 需求快速變更,發(fā)布頻繁
- 漸進式發(fā)展和演化
2. 大型網(wǎng)站架構核心要素
基于大型網(wǎng)站系統(tǒng)的特點,需要圍繞這些特點來設計系統(tǒng)架構。基于此,可以概括出設計大型網(wǎng)站需要考慮的核心架構要素。
設計大型網(wǎng)站系統(tǒng)的核心架構要素:
- 高性能
- 高可用性
- 可伸縮性
- 可擴展性
- 安全性
本書的核心內容其實就是針對這幾個核心架構要素一一展開。
1. 設計『 高性能 』的網(wǎng)站架構
對于大型網(wǎng)站,設計高性能的架構一般從以下幾個方面考慮:
- 優(yōu)化網(wǎng)站響應速度
- 優(yōu)化網(wǎng)站處理并發(fā)請求的能力
- 優(yōu)化數(shù)據(jù)存儲的性能
所謂高性能,
從網(wǎng)站的用戶角度來看,無非就是訪問網(wǎng)站的『 響應速度要快 』。
從系統(tǒng)角度看,由于同時訪問的用戶數(shù)巨大,因此同時到達系統(tǒng)服務器的『 并發(fā)請求數(shù) 』非常大。
從后端數(shù)據(jù)存儲來看,優(yōu)化『 海量數(shù)據(jù)存儲 』的能力,避免后端數(shù)據(jù)存儲性能緩慢而成為系統(tǒng)性能瓶頸。
優(yōu)化網(wǎng)站響應速度
重要提示:網(wǎng)站性能優(yōu)化第一定律:優(yōu)先考慮使用緩存技術優(yōu)化性能
優(yōu)化網(wǎng)站響應速度的主要手段是使用『 緩存 』,使用緩存是提高網(wǎng)站響應速度效果最顯著的辦法。
例如對于前端,可以使用CDN,反向代理,這些都是利用的緩存技術。對于應用服務器的性能優(yōu)化,一個主要的手段也是使用緩存,在提高響應速度的同時,也減輕了對后端數(shù)據(jù)庫的壓力。如果是有海量數(shù)據(jù)的超大型系統(tǒng),甚至需要用到分布式緩存系統(tǒng)。
另外一個優(yōu)化響應速度的手段是『 異步消息處理 』。異步消息處理是指,在應用服務器與后端服務之間使用消息隊列,應用服務器總是將用戶請求扔進消息隊列,并立即返回用戶,后端服務異步從消息隊列中取出請求數(shù)據(jù)進行處理。由于請求發(fā)送到消息隊列后就立即返回了,因此用戶會感知到更快的響應速度。
使用消息隊列還具有削峰的作用,當瞬間有大量請求到達系統(tǒng)后,這些請求數(shù)據(jù)會進入消息隊列,而不會瞬間涌入后端服務器,從而起到保護后端服務的作用。
優(yōu)化網(wǎng)站處理并發(fā)請求的能力
除此之外,還要支持巨大的并發(fā)請求數(shù),一般手段是使用『 集群 』。
應用服務器一般需要從單臺服務器擴展為多臺服務器,構成應用服務器集群,然后引入負載均衡服務器,將用戶請求分攤到不同的應用服務器進行處理。
集群可以很容易進行伸縮(增加或減少服務器數(shù)量),因此可以有效支持在不同場景下的不同并發(fā)請求量。如秒殺場景下,可以快速增加服務器到集群中,從而分攤用戶請求,減輕其他服務器的壓力。
優(yōu)化數(shù)據(jù)存儲的性能
單從優(yōu)化數(shù)據(jù)存儲性能方面來看,主要的優(yōu)化手段有:
- 使用性能更高的硬盤,如使用固態(tài)硬盤,讀寫速度更快。
- 替換傳統(tǒng)關系型數(shù)據(jù)庫,使用NoSQL數(shù)據(jù)庫。NoSQL數(shù)據(jù)庫的數(shù)據(jù)讀寫速度一般優(yōu)于傳統(tǒng)關系型數(shù)據(jù)庫。
- 使用分布式文件系統(tǒng)。分布式文件系統(tǒng)具有并發(fā)讀寫能力,因此可以有效提高數(shù)據(jù)存儲的并發(fā)能力。
2. 設計『 高可用 』的網(wǎng)站架構
重要提示:實現(xiàn)高可用架構的主要手段是數(shù)據(jù)和服務的『 冗余備份 』和『 失效轉移 』
所謂高可用,即在任何時刻,應該盡量保證系統(tǒng)是可用的。
使用集群實現(xiàn)數(shù)據(jù)和服務的冗余備份,當集群中某個服務器宕機時,失效轉移機制會將用戶請求分發(fā)到集群中其他可用服務器上,從而可以保證用戶請求被正確處理。
使用集群有個前提條件是,各個服務器上運行的服務應盡量是無狀態(tài)的這樣各個服務器之間就不會存在差異。但是對于應用服務器,如果保存了用戶Session數(shù)據(jù),那么它們就是有狀態(tài)的。這種情況下需要考慮如何處理Session狀態(tài)數(shù)據(jù)。可以采用獨立的分布式Session服務器集群來專門緩存用戶Session數(shù)據(jù),從而使應用服務器變成無狀態(tài)的。
冗余備份與失效轉移手段適用于網(wǎng)站系統(tǒng)的各個邏輯層,包括應用層,服務層和數(shù)據(jù)層。
3. 設計『 可伸縮 』的網(wǎng)站架構
系統(tǒng)的可伸縮性,通常容易與可擴展性混淆。
可伸縮性意味著當網(wǎng)站流量變大時,可以很容易通過增加系統(tǒng)部署實例來支持。可擴展性意味著系統(tǒng)架構可以很容易擴展,從而支持新業(yè)務功能系統(tǒng)。
為達到可伸縮的目的,通常需要將系統(tǒng)進行拆分。縱向進行邏輯分層,如分為應用層,服務層和數(shù)據(jù)層。橫向進行業(yè)務分割,把不同的業(yè)務功能拆分出來,并且獨立部署。
對于拆分出來的單一功能,也需要采用集群方式進行部署。但是對于不同類型的集群,實現(xiàn)伸縮的方式不太一樣。
對于應用服務器集群,通常使用『 負載均衡 』來實現(xiàn)伸縮。當有新服務器加入集群時,負載均衡可以自動將用戶請求分發(fā)到新服務器。
對于分布式緩存集群,當有新服務器加入集群時,為了保證緩存命中率,通常使用『 一致性 』算法,從而使請求能夠絕大部分指向已經(jīng)緩存了所需數(shù)據(jù)的服務器。
對于數(shù)據(jù)存儲服務器集群,對傳統(tǒng)關系數(shù)據(jù)庫來說,通常的手段是進行『 主、從數(shù)據(jù)庫復制 』實現(xiàn)讀寫分離,或者『 數(shù)據(jù)分庫分片 』等。然而對于NoSQL數(shù)據(jù)庫,很多NoSQL數(shù)據(jù)庫天生就是為可伸縮海量數(shù)據(jù)存儲而設計的,如HBase。
4. 設計『 可擴展 』的網(wǎng)站架構
網(wǎng)站系統(tǒng)架構應該是易于擴展的。通常的設計手段包括:
- 使用分布式消息隊列降低系統(tǒng)與系統(tǒng)之間的耦合性。當開發(fā)新系統(tǒng)后,只需要訂閱消息隊列的數(shù)據(jù)即可進行整合,而不需要修改已有其他系統(tǒng)。
- 利用分布式服務抽取可復用的服務。對于通用業(yè)務功能,可以把它們抽取成可復用的服務。對于新業(yè)務需求,通常可以使用這些可復用的服務,進行簡單的組裝即可實現(xiàn)。
- 使用具有可擴展的數(shù)據(jù)庫。如使用支持ColumnFamily結構的NoSQL數(shù)據(jù)庫,可以在現(xiàn)有數(shù)據(jù)表結構之上增刪數(shù)據(jù)列。
- 開放平臺。通過開放平臺接入第三方開發(fā)者開發(fā)的系統(tǒng),擴展系統(tǒng)周邊應用,形成生態(tài)圈。
5. 設計『 安全 』的網(wǎng)站架構
系統(tǒng)安全性,對于任何網(wǎng)站系統(tǒng)都是至關重要的。
對于大型網(wǎng)站,由于用戶分布廣,網(wǎng)絡安全環(huán)境會更加復雜和惡劣,設計具有良好安全性的網(wǎng)站架構會更加具有挑戰(zhàn)性。
一般可以考慮以下幾個方面:
- 防御常見的網(wǎng)站攻擊手段。如XSS,注入攻擊,CSRF攻擊等。
- 信息加密。對在網(wǎng)絡中傳輸?shù)臄?shù)據(jù)進行加密后再傳輸。
- 信息過濾。過濾掉垃圾信息,防止垃圾信息進入系統(tǒng)內部。
思維導圖
以下是我親自整理的思維導圖
如果上面的大圖看著不方便,我也把它放在了Github,訪問我的Github地址https://github.com/longyg/Study下載,然后用XMind打開輕松看,包括圖里的詳細標注也可以看得到啦。
圖: 網(wǎng)絡
文: 新碼農(nóng)客棧
排版: 新碼農(nóng)客棧
掃碼關注公眾號,查看更多內容
總結
以上是生活随笔為你收集整理的使用pp架构形成计算机集群请求的地址无效_干货!史上最详细脑图《大型网站技术架构》...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样通过wifi信号找到路由器的位置如何
- 下一篇: 怎么重置路由器IP艾泰路由器如何重置