讀《大型架構技術演進的思考》的一點兒感悟

1、網站簡單總體架構:網站須要儲存數據、要有數據庫,網站要支持客戶端訪問進行業務操做,要有web服務器,web服務器中包含程序代碼,數據緩存。web

2、網站要記錄用戶的狀態 記錄session信息,高併發的用戶請求到達服務器,須要有多臺服務器來處理,就要有服務器組件用來分發請求,從而是請求較平均的到達服務器,所以就須要服務器與服務器之間session同步,否則就沒法合理記錄用戶狀態。session 同步的話須要消耗服務器內存資源來進行服務器之間session的複製傳遞,所以不是簡單的增長服務器就能使併發訪問提升,當服務器增長到必定程度,session傳遞的內耗就很大,高併發容量就再也不那麼大了。所以就要考慮其餘技術,在這有幾種處理方式:一、使用一臺或幾臺服務器單獨記錄 session 。二、我把session用cookie來存,直接儲存在用戶機端上,雖然cookie是不安全的。3,我讓某個用戶的請求都是分發給經過同一個服務器,那麼我就不須要進行session傳遞了,這就是LVS 方案,也是session粘帶。數據庫

3、對於靜態網頁來講,上面第二點面臨的問題根本不是問題,由於靜態網頁並不會由於用戶的不一樣而有所不一樣,因此根本不須要儲存用戶狀態。緩存

4、對於全部網站來講,儲存問題是初期的技術瓶頸,具體體如今web服務器上和數據庫上。而數據是儲存的短板,所以要想進行擴展須要先解決數據庫請求的高併發問題。如何解決?人們發現網站能夠分爲讀寫,讀的通常都是靜態的頁面,寫的纔是根據用戶需求有所不一樣的,所以進行了讀寫分離。兩臺數據庫,一臺負責讀(查詢操做),一臺負責寫(增刪改操做),這樣就把一個的壓力分給了兩個。好比讀寫比是9比1 的網站 之前最多500人請求,那麼如今能夠5000人了,500進行寫請求,剩下的4500是讀,讀能夠讀緩存的,或者能夠進行排隊(延遲加載),可是我要不時進行兩個數據庫的同步。另外還有一種技術就是我合併請求,在web服務器中我把類似的數據庫請求操做進行合併,之前的多個操做佔用多個鏈接,如今多個操做佔用一個鏈接 進行批量操做,(像facebook)從而減輕壓力,提升併發。安全

5、對於網站讀寫,許多網站業務功能不一樣,人們讀寫比例不一樣需求不一樣,那麼我就能夠把網站頁面儘可能作成靜態頁面,而且局部刷新,異步提交。這就有AJAX等技術。 也就是我把數據庫的數據提早緩存,一些實時性要求不高的數據,緩存。服務器

6、數據庫能夠進行讀寫分離,那麼我根據業務的操做,能夠進行表的分離,某功能塊的表放在一個庫中,另外的不相關的放在另外庫中,這就是表的垂直分離。 以上就是對網站數據方面理解。cookie

End、文章中涉及的幾個目前不太清楚詞彙:一致性hash , 搜索技術,垂直拆分,水平拆分,有待深刻學習瞭解。session

相關文章
相關標籤/搜索