網站架構學習(二)之網站架構模式
前言
什麼是模式?每一個模式描述了一個在我們周圍不斷重複發生的問題及該問題解決方案的核心。這樣,就能一次又一次地使用該方案而不必做重複的工作。
網站架構模式
以網站高效能,高可用,易伸縮,可擴充套件,安全等各種技術架構目標。
分層
應用層:負責具體業務和檢視展示,如網站首頁及搜尋輸入。
服務層:為應用層提供服務,如使用者管理服務,購物車服務等。
資料層:提供資料儲存訪問服務,如資料庫,快取,檔案,搜尋引擎等。
分割
將不同的業務分割開,例如購物,論壇,搜尋等等。
叢集
多臺伺服器部署相同的應用構成一個叢集,通過負載均衡裝置共同對外提供服務。提供了系統的可用性。
快取
快取是將資料存放在距離計算最近的位置以加快處理的速度。快取事改善軟體效能的第一手段。
CDN:內容分發網路。視訊網站和入口網站會將使用者訪問量大的熱點內容快取在CDN。
反向代理:反向代理是針對伺服器的,客戶端訪問過來,它並不是道真正為它提供服務的是哪臺機器。請求最先到達反向代理伺服器,這裡快取網站的靜態資源。
本地快取:在應用伺服器本地快取著熱點資料,無需訪問資料庫,直接訪問本機記憶體。
分散式快取:將資料快取在一個專門的分散式快取叢集中,應用程式通過網路通訊訪問快取資料。
必要保證!!
1.資料的頻繁訪問可以當做快取
2.快取的資料要保證其正確(很可能快取資料失效,造成髒讀)
非同步
業務之間的訊息如果是同步的話,那麼速度是非常慢的(方法A呼叫方法B,等待方法B處理完後才能繼續接下來的處理)
單一伺服器內部可以通過多執行緒共享記憶體佇列的方式實現非同步(專案中也用到了,Netty書上說這算偽非同步);在分散式系統中,多個伺服器叢集通過分散式訊息佇列實現非同步,分散式訊息佇列可看做記憶體佇列的分散式部署(-這裡並不是很懂,,)。
可以消除併發訪問高峰。例如購物網站的促銷活動,微博上的熱點事件等等,造成網站併發訪問的突然增大,使用訊息佇列,可以保證不會對網站負載造成太大壓力。但會影響使用者體驗。
冗餘
為了防止伺服器宕機,使網站能夠正常服務,不丟失資料,需要一定程度的伺服器冗餘執行,資料冗餘備份,這樣當某臺伺服器宕機時,可以將其上的服務和資料訪問轉移到其他機器。
資料庫除了實現冷備份(定期備份,存檔儲存),為了保證業務高可用,還需要對資料庫進行主從分離,實時同步實現熱備份。
安全
XSS攻擊:
1.儲存型
2.反射型
SQL注入,敏感詞過濾等都要考慮到。