大型網站負載均衡,分散式與資料庫讀寫分離的一些思路
資料庫方面:
將一個網站的不同業務分到不同的表,按功能對錶進行細化。
如果是多個網站,多個埠(如PC端,APP端)連結到同一個資料庫,對多種方式訪問的共同資料專門提出來,成為公共資源,專門放到同一張表裡面。
SLB負載均衡:
比如一個網站有1000萬的訪問量,通過loadbalance把這1000萬的訪問進行負載均衡掉。loadbalance的學習自己進行。阿里雲貌似有。負載均衡把這1000萬的訪問量負載均衡到7,8臺機器上,可擴充套件性也很好,當相應速度上不去的時候 ,可以繼續擴充套件機器來滿足訪問量需求。
一臺機器掛了,系統檢測到這臺機器掛了,就走另外的機器,繼續負載均衡,從而保證系統的容災性。
資料採用分散式儲存,可以按月份把資料分開,一月一月一儲存,這樣就可以避免一個表中大資料量的產生。查詢資料的時候,按月份進行匹配,對應相對的表查詢資料。
當然也可以採用其他的分庫分表規則,訂單表可以按照月份來分,使用者表可以根據id尾號來分。也可以根據其他的規則,自己定。自己定的規則則要考慮好其中的可擴充套件性是否良好,以後的業務是否可擴充套件,等等。
分庫分表以後就要確定DB路由,DB路由就是對其中各種匹配表的規則的判斷,根據DB路由找到對應的表對應的庫。
其中分表的話,要分的表是隨業務增多而容量增多的資料,如訂單表,使用者表,日誌,等等。
對資料庫進行讀寫分離,把資料表分成主表和備表,主表不行了,則連線到備用表,這樣資料的容災性也很好。
對於圖片資料:
因為圖片資料所佔用記憶體較大,可以把所有的圖片資源全部都放在一起,訪問圖片通過http訪問。
關於資料庫的讀寫分離:
單獨拿一個庫或者機器,專門用來查詢,比如查詢某使用者某一年的交易訂單,可以只通過這一個庫或者機器來查,12張表關聯成一張表。而寫的話,則是寫入不同的分散的表當中。
資料庫的讀寫分離可以通過binlog來自動同步資料。這樣讀庫和寫庫的資料能夠同步。
關於使用快取 :
使用快取的話,時間投入成本較大,且資料放入記憶體當中,記憶體掛了的話,比較容易出問題。