緩存不是架構設計的必選項,也不是業務開發中的必要功能點,只有在業務出現性能瓶頸,進行優化性能的時候才需要考慮使用緩存來提升系統性能。也不是所有的業務場景都適合使用緩存,讀多寫少且數據時效要求越低的場景越適合使用緩存,緩存並不是所有性能問題的靈丹妙葯,如果濫用緩存反而會成為毒葯,並且會引入維護緩存的操作成本,使得系統復雜度更高不利於維護。
另外把緩存當做存儲來使用是一件極其致命的做法,這種錯誤的認識,將緩存引入系統的那一刻起就意味着已經讓系統走上了危險的局面,對緩存的使用邊界要有深刻的理解,才能盡可能保證做出引入緩存才是一個正確的決定。
1)業務流量量級以及應用規模:
對於低並發低流量的應用而言,引入緩存並不會帶來性能的顯著提升,反而會帶來應用的復雜度以及極高的運維成本。也不是任何數
據都需要使用緩存,比如圖片視頻等文件使用分布式文件系統更合適而不是緩存。
因此,在引入緩存前,需要對當前業務的流量進行評估,在高並發大流量的業務場景中引入緩存相對而言收益會更高;
2)緩存應用的選擇:
緩存應用有很多如Redis、Memcached以及tair等等,針對每一種分布式緩存應用的優缺點以及適用范圍、內存效率、運維成本甚至團隊開發人員的知識結構都需要了解,才能做好技術選型;
3)緩存影響因素的正確評估:
在引入緩存前,需要着重評估value大小、緩存內存空間、峰值QPS、過期時間、緩存命中率、讀寫更新策略、key值分布路由策略、過期策略以及數據一致性方案等等多個因素,要做到心中有數;
4)緩存高可用架構:
分布式緩存要高可用,這也是分布式系統追求的三高指標中的一個,緩存的集群設計,主從同步方案的設計等等,只有緩存足夠可靠,才能服務於業務系統,為業務帶來價值;
5)完善的監控平台:
當緩存投入生產環境后,需要有一套監控系統能夠顯式的觀測緩存系統的運行情況,才能更早的發現問題,同時對於預估不足的非預期熱點數據,也需要熱點發現系統去解決非預期的熱點數據緩存問題。
6)緩存最近原則:
將緩存數據放在離用戶最近的地方,無疑會極大的提升響應的速度,這也是多級緩存設計的核心思想。