說到快取,我想大家跟我一樣都很興奮,當我們遭遇網站效能瓶頸的時候,快取是一劑強心針,也是一粒緊急媽富隆,從而在優化網站
效能方面冠上了第一定律的帽子,我們前年在做淘應用的時候,就遭遇了效能瓶頸,短時間內採用快取緊急優化,給我們大優化之前爭取了
寶貴的時間。
一:快取的種類
要說快取有多少種,太多了,比如瀏覽器快取,檔案快取,片段快取,資料庫快取等等,合理利用這些快取則能大幅度的提高系統效能,
利用不好反而會偷雞不成蝕把米,給伺服器造成巨大的壓力,所以這裡就存在一個快取的使用原則的問題。
二:合理的使用快取
1. 讀寫小於10:1的情況下,不適合用快取,我們用快取的目的就是想分攤下資料庫的壓力以及利用記憶體來提速效能,如果讀寫差不多,或者
壓根就沒讀過,這樣的死資料就會造成記憶體資源的浪費。
2. 既然是快取,就註定了它的資源是有限的,寶貴的,也就註定了我們必須合理利用它的記憶體空間,也就被迫的讓我們清楚的認識到熱點資料,
不易修改的應該放在快取,反之不宜放。
3. 大公司在快取方面做的好的地方就是在一個“控”字上,他們會為快取專門做一套“快取系統”,當系統預載入的時候,同時也充當記憶體資料庫
使用,將這些後設資料載入到快取系統中,比如“縣市區”,“分類資訊”等等作為預熱資料。
三:分散式快取
一般情況下,會有兩種形式,第一種就是主從複製的模式,第二種就是分片的模式。
1:主從複製模式
這種模式曾今在專案中也用過,就是一份記憶體,多處備份,當其中某一個快取內容中的資料有變化時,會及時通知其他機器進行快取更新
或清除,這種模式的缺點在於比較容易受制於單臺機器的記憶體限制,優點在於用心跳機制及時用另一臺快取機器頂替,那個時候我們使用120G
的大記憶體,得益於專案業務規模的限制,否則當機器記憶體爆滿的時候就比較尷尬了,所以做大型網站還是謹慎使用吧,畢竟這個也是我們曾今做
了一些為了提升效能的嘗試。
2:分片的模式
這種模式在大型網站中還是被大量使用的,它的特點就是可以把一大坨資料通過一定的演算法和配置分攤到叢集中的若干臺機器上,如果叢集中
的某一臺機器掛了,沒關係,只會影響到該臺機器中的資料,對資料庫不會造成很大的影響。一個典型的應用就是memcache,memcache是一
個非常簡單,實用,高效的分散式快取架構,其實memcache最值得一提的就是“路由演算法的一致性hash”技術使得我們的memcache叢集可以
自由伸縮,不過現在已經有很多的nosql產品,比如redis,couchdb,mongodb等等,讓我們在這個世界上有了更多的選擇吧。
最近看到園子裡面有很多抱怨聲,沒關係,如果覺得自己屈才了,歡迎來攜程試一試,只有你達不到的能力,沒有給不起你的薪資。