日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

大型網站架構演變之9大階段 什么是大型網站( 三 )


4、集群Session一致性問題
1、Session Sticky

Session sticky就是把同一個用戶在某一個會話中的請求,都分配到固定的某一臺服務器中,這樣我們就不需要解決跨服務器的session問題了,常見的算法有ip_hash算法,即上面提到的兩種散列算法 。
  • 優(yōu)點:實現簡單;
  • 缺點:應用服務器重啟則session消失 。
2、Session Replication
Session replication就是在集群中復制session,使得每個服務器都保存有全部用戶的session數據 。
  • 優(yōu)點:減輕負載均衡服務器的壓力,不需要要實現ip_hasp算法來轉發(fā)請求;
  • 缺點:復制時網絡帶寬開銷大,訪問量大的話Session占用內存大且浪費 。
3、Session數據集中存儲
Session數據集中存儲就是利用數據庫來存儲session數據,實現了session和應用服務器的解耦 。
  • 優(yōu)點:相比Session replication的方案,集群間對于寬帶和內存的壓力大幅減少;
  • 缺點:需要維護存儲Session的數據庫 。
4、Cookie Base
Cookie base就是把Session存在Cookie中,由瀏覽器來告訴應用服務器我的session是什么,同樣實現了session和應用服務器的解耦 。
  • 優(yōu)點:實現簡單,基本免維護 。
  • 缺點:cookie長度限制,安全性低,帶寬消耗 。
值得一提的是:
  • Nginx目前支持的負載均衡算法有wrr、sh(支持一致性哈希)、fair(lc) 。但Nginx作為均衡器的話,還可以一同作為靜態(tài)資源服務器 。
  • Keepalived + ipvsadm比較強大,目前支持的算法有:rr、wrr、lc、wlc、lblc、sh、dh
  • Keepalived支持集群模式有:NAT、DR、TUN
  • Nginx本身并沒有提供session同步的解決方案,而Apache則提供了session共享的支持 。
階段四、數據庫讀寫分離化
上面我們總是假設數據庫負載正常,但隨著訪問量的的提高,數據庫的負載也在慢慢增大 。那么可能有人馬上就想到跟應用服務器一樣,把數據庫一份為二再負載均衡即可 。
但對于數據庫來說,并沒有那么簡單 。假如我們簡單的把數據庫一分為二,然后對于數據庫的請求,分別負載到A機器和B機器,那么顯而易見會造成兩臺數據庫數據不統一的問題 。那么對于這種情況,我們可以先考慮使用讀寫分離和主從復制的方式 。
這個結構變化后也會帶來兩個問題:
  • 主從數據庫之間數據同步問題 。
  • 應用對于數據源的選擇問題 。
解決方案:
  • 使用MySQL自帶的Master + Slave的方式實現主從復制 。
  • 采用第三方數據庫中間件,例如MyCat 。MyCat是從Cobar發(fā)展而來的,而Cobar是阿里開源的數據庫中間件,后來停止開發(fā) 。MyCat是國內比較好的MySql開源數據庫分庫分表中間件 。
階段五、用搜索引擎緩解讀庫的壓力
數據庫做讀庫的話,常常對模糊查找力不從心,即使做了讀寫分離,這個問題還未能解決 。以我們所舉的交易網站為例,發(fā)布的商品存儲在數據庫中,用戶最常使用的功能就是查找商品,尤其是根據商品的標題來查找對應的商品 。對于這種需求,一般我們都是通過like功能來實現的,但是這種方式的代價非常大,而且結果非常不準確 。此時我們可以使用搜索引擎的倒排索引來完成 。
搜索引擎具有的優(yōu)點:它能夠大大提高查詢速度和搜索準確性 。
引入搜索引擎的開銷