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