大型網站【核心架構要素】
很多人都說架構架構那到底什麼是架構?
記住:最高層次的規劃,難以改變的決定,這些規劃和決定奠定了事務未來發展的方向和最終的藍圖。
當然了從這個意義上來說,人生規劃也是一種架構,比如我們選擇什麼學校,學習什麼專業,進入什麼公司,將來要找一個什麼樣的物件,想要過什麼樣的生活等等等這些都可以算的上是個人成長的一個架構。
具體到軟體架構,維基百科是這樣定義的:“有關軟體整體結構與元件的抽象描述,用於指導大型軟體系統各個方面的設計”。系統的各個重要組成部分及其關係構成了系統的架構,這些組成部分可以是具體的功能模組,也可以是非功能的設計與決策,他們相互組成一個整體,共同構件了軟體系統的架構。
架構需要關心哪方面的元因素呢?
一般來說,除了當前的系統功能需求外,軟體架構還需要關注效能,可用性,伸縮性,擴充套件性還有安全性這5個要素,在架構的設計過程中要平衡這5個要素之間的關係,為了實現需求和架構目標,也可以通過考察這些架構要素來衡量一個軟體架構設計的優劣,判斷其是否滿足我們的期望。
聊聊 架構之【效能】
效能是衡量一個網站的重要指標,除非是沒得選擇(比如我們購買火車票的12306網站),否則作為使用者是很難接受一個響應很慢的網站。
如果我們的網站響應慢,這樣帶來的直接後果就是丟失大量的使用者。
所以一定要記住,效能是我們網站架構設計的一個很重要的方面。任何軟體架構設計方案都必須要考慮可能會帶來的效能問題。
如果網站出現效能問題,都有哪些優化手段呢
也正是因為效能問題幾乎無處不在,所以優化網站效能的手段也非常多
【從瀏覽器———到資料庫】影響使用者請求的所有環節都可以進行優化。
瀏覽器端的常用優化技術
- 使用瀏覽器快取
- 使用頁面壓縮
- 合理佈局頁面
- 延時載入
- 減少Cookie的傳輸等
在請求響應方面
- 可以使用CDN,將網站的靜態內容分發至離使用者最近的網路服務商的機房,使使用者通過最短的訪問路徑獲取資料
- 可以在網站機房部署一個反向代理伺服器,快取一些熱點檔案
【這樣做的好處第一:可以加快頁面響應速度,第二:可以減輕應用伺服器的壓力。】
在應用伺服器端
- 使用伺服器的本地快取
- 使用遠端分散式快取
【通過快取在記憶體中的熱點資料處理使用者請求,加快請求處理過程,減輕伺服器的負載壓力】 - 也可以使用非同步操作將使用者的請求傳送到訊息佇列等待後續處理,而將當前請求直接返回響應給使用者
- 網站在高併發的請求下,可以將多臺伺服器組建成一個叢集共同對外服務,這樣做的好處也能提高整體的處理能力,達到改善效能的效果。
在程式碼層方面
- 可以使用多執行緒
- 改善記憶體管理等手段
在資料庫的伺服器端
- 可以新增索引
- 優化配置檔案
- 使用mysql的快取
- 優化sql語句
- 配置mysql讀寫分離
- 分庫分表等手段
對於Nosql的資料庫 - 可以優化資料模型
- 儲存結構
- 伸縮特性等
根據什麼來衡量一個網站 都有哪些指標呢
衡量網站的效能有一系列的指標,這裡只是列舉比較重要的指標
- 網站的響應時間
- TPS
- 系統性能計數器等
結束語:對於網站而言,效能符合預期僅僅是必要條件,因為無法預知網站可能會面臨的訪問壓力,所以必須要考察系統在高併發訪問情況下,超出負載設計能力的情況下可能會出現的效能問題。網站需要長時間持續執行,還必須要保證系統在持續執行並且訪問壓力不均勻的情況下保持穩定的效能特性。
聊聊架構之 【可用性】
可用性給網站帶來哪些影響
對於大型網站來說,特別是一些知名網站,網站宕掉、伺服器不可用是一個重大的事故,輕則影響榮譽,重則可能會攤上官司。假如是一個電商型別的網站,網站如果不可以那後果更是不堪設想,比如淘寶。因此呢很多網站都會承諾7X24小時可用,但事實上如何網站都不可能達到完全的7X24小時可用。總會有一些故障時間,扣除這些故障時間,就是網站的可用的總時間。一般比較知名的網站都會做到4個9以上的可用時間,也就是可用性超過99.99%。
先寫這麼多 明天再寫 累了