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