PHP/MySQL – 通過會話及更改標記實現讀/寫分離

 

正如筆者在其它博客中所論述的,本人一直在想,中國及全球的客戶在快速增長,我如何才能更好地擴展他們的網站,而又能夠保持其原有功能簡單易用。我還撰寫了另一篇博客,論及如何監控“從複製”的延遲,重點談論瞭如何使用緩存來管理標記分配和控制網站負荷。

關於如何解決該問題,筆者還有另一想法,基本上就是通過會話實現讀/寫分離,若用戶有所更新,可在某段時間內將其引向主數據庫讀取數據。

用戶在進行更新操作時(如,變更密碼、上傳圖片或發佈新博客)極其關心繫統的讀延遲問題。對於此類用戶而言,冗長的從庫讀取延遲確實會帶來系統問題。

那麼,使用會話系統呢?就像在Memcache/Redis中,在用戶上次更新時,進行會話標記,也就是說,在用戶上次變更重要數據時,對其會話加以標記,效果會如何呢?

這樣,所有含有此重要數據的網頁都可在會話層上,檢查更新的時間戳,如果是最近更新的,比如說前一分鐘的更新,網頁便可直接連接主數據庫讀取數據,要不然,所有的讀取數據的操作都在從數據庫上進行。

這樣不但極大地提高了用戶體驗,而且對系統影響很小,因爲就算有延遲的話,其它讀取數據的用戶,在數秒內也能看到更新的內容。理想的情況就是:許多進行更新操作的用戶,會把內容添加進來,然後通過郵件或短信形式通知其朋友去查看變更內容,這需要花幾分鐘的時間,但是數據很可能依然存儲在緩存系統中。

該解決方案簡單易用,而且適用於所有類型的數據,包括緩存中不常儲存的數據,如密碼以及站點中小型或罕見的功能性數據。

結論:儘管這些動態數據管理解決方案略顯複雜,但卻能夠極大地提高用戶體驗,而且對系統負荷影響很小,僅需變更少量代碼。


             (Authored by Steve Mushero / ChinaNetCloud CEO & CTO 本博客英文原文請點此查看

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章