正如筆者在其它博客中所論述的,本人一直在想,中國及全球的客戶在快速增加,我如何才能更好地擴展他們的網站,而又可以保持其原有功能簡單易用。我還撰寫了另外一篇博客,論及如何監控「從複製」的延遲,重點談論瞭如何使用緩存來管理標記分配和控制網站負荷。 php
關於如何解決該問題,筆者還有另外一想法,基本上就是經過會話實現讀/寫分離,若用戶有所更新,可在某段時間內將其引向主數據庫讀取數據。 mysql
用戶在進行更新操做時(如,變動密碼、上傳圖片或發佈新博客)極其關心繫統的讀延遲問題。對於此類用戶而言,冗長的從庫讀取延遲確實會帶來系統問題。 sql
那麼,使用會話系統呢?就像在Memcache/Redis中,在用戶上次更新時,進行會話標記,也就是說,在用戶上次變動重要數據時,對其會話加以標記,效果會如何呢? 數據庫
這樣,全部含有此重要數據的網頁均可在會話層上,檢查更新的時間戳,若是是最近更新的,好比說前一分鐘的更新,網頁即可直接鏈接主數據庫讀取數據,要否則,全部的讀取數據的操做都在從數據庫上進行。 緩存
這樣不但極大地提升了用戶體驗,並且對系統影響很小,由於就算有延遲的話,其它讀取數據的用戶,在數秒內也能看到更新的內容。理想的狀況就是:許多進行更新操做的用戶,會把內容添加進來,而後經過郵件或短信形式通知其朋友去查看變動內容,這須要花幾分鐘的時間,可是數據極可能依然存儲在緩存系統中。 session
該解決方案簡單易用,並且適用於全部類型的數據,包括緩存中不常儲存的數據,如密碼以及站點中小型或罕見的功能性數據。 ide
結論:儘管這些動態數據管理解決方案略顯複雜,但卻可以極大地提升用戶體驗,並且對系統負荷影響很小,僅需變動少許代碼。 網站
(Authored by Steve Mushero / ChinaNetCloud CEO & CTO 本博客英文原文請點此查看)
spa