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