根據緩存和應用的耦合程度將其劃分爲Local Cache和Remote Cache。
Local Cache是指包含在應用之中的緩存組件,如Ehcache, Oscache.
Remote Cache指和應用解耦,在應用之外的緩存組件,如Memcached
Local Cache最大的優點是應用和Cache在同一進程內部,請求緩存非常快速,完全不需要網絡開銷,所以單應用,不需要集羣,或者集羣時Cache node不需要互相通知的情況下使用比較合適。
缺點:多個應用程序無法直接共享緩存,應用集羣的情況下這個問題就更加明顯(好像是廢話= =)
本地緩存:從最簡單的Map到Ehcache單機版都屬於一類。
分佈式緩存:分佈在不同JVM的Cache可以互相同步與備份,如JBossCache和Oracle那個天價的產品。
集中式緩存:最著名的代表是Memcache,Terracotta其實也屬於透明的集中式架構。
建議Ehcache單機使用,因爲Terracotta收購後在分佈式緩存中必然側重於TC,JGroup等廣播通知方式已停止發展。
注意:顯示聲明的Cache項並不會默認從DefaultCache節點繼承屬性,必須重新聲明或使用Ehcache內部的默認值。
Memcached是一種集中式Cache,支持分佈式橫向擴展。
集中式架構:
1.節點均衡的網狀(JBoss Tree Cache),利用JGroup的多廣播通信機制來同步數據。
2.Maste-Slaves模式(分佈式文件系統),由Master來管理slave,如何選擇slave,如何遷移數據,都是由Master來完成,但是Master本身也存在單點問題。
應用點:
小對象的緩存(用戶的token,權限信息,資源信息),小的靜態資源緩存,SQL結果的緩存。