網(wǎng)站建設(shè)速成基本原理
分布式緩存
回顧網(wǎng)站架構(gòu)演化歷程,當(dāng)網(wǎng)站遇到性能瓶頸時(shí),第一個(gè)想到的解決方案就是使用緩存。在整個(gè)網(wǎng)站應(yīng)用中,緩存幾乎無所不在,既存在于瀏覽器,也存在于應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器;既可以對(duì)數(shù)據(jù)緩存,也可以對(duì)文件緩存,還可以對(duì)頁面片段緩存。合理使用緩存,對(duì)網(wǎng)站性能優(yōu)化意義重大。
網(wǎng)站性能優(yōu)化第一定律:優(yōu)先考慮使用緩存優(yōu)化性能。
緩存的基本原理
緩存指將數(shù)據(jù)存儲(chǔ)在相對(duì)較高訪問速度的存儲(chǔ)介質(zhì)中,以供系統(tǒng)處理。一方面緩存訪問速度快,可以減少數(shù)據(jù)訪問的時(shí)間,另一方面如果緩存的數(shù)據(jù)是經(jīng)過計(jì)算處理得到的,那么被緩存的數(shù)據(jù)無需重復(fù)計(jì)算即可直接使用,因此緩存還起到減少計(jì)算時(shí)間的作用。
緩存的本質(zhì)是一個(gè)內(nèi)存Hash表,網(wǎng)站應(yīng)用中,數(shù)據(jù)緩存以一對(duì)Key、Value的形式存儲(chǔ)在內(nèi)存Hash表中。Hash表數(shù)據(jù)讀寫的時(shí)間復(fù)雜度為0 ( 1 ),圖4.7為一對(duì)KV在Hash表中的存儲(chǔ)。
計(jì)算KV對(duì)中Key的HashCode對(duì)應(yīng)的Hash表索引,可快速訪問Hash表中的數(shù)據(jù)。許多語言支持獲得任意對(duì)象的HashCode,可以把HashCode理解為對(duì)象的唯一標(biāo)示符,Java語言中Hashcode方法包含在根對(duì)象Object中,其返回值是一個(gè)Int。然后通過Hashcode計(jì)算Hash表的索引下標(biāo),最簡(jiǎn)單的是余數(shù)法,使用Hash表數(shù)組長(zhǎng)度對(duì)Hashcode求余,余數(shù)即為Hash表索引,使用該索引可直接訪問得到Hash表中存儲(chǔ)的KV對(duì)。Hash表是軟件開發(fā)中常用到的一種數(shù)據(jù)結(jié)構(gòu),其設(shè)計(jì)思想在很多場(chǎng)景下都可以應(yīng)用。