사용자 도구

사이트 도구


java:ehcache

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:ehcache [2014/09/30 13:33]
kwon37xi [Update Check 끄기]
java:ehcache [2015/07/14 10:02] (현재)
kwon37xi [Replicated Cache]
줄 2: 줄 2:
 ===== Singleton Cache ===== ===== Singleton Cache =====
   * 단일 JVM에서는 가능하면 Singleton ''CacheManager'' 인스턴스를 만들도록 하자.   * 단일 JVM에서는 가능하면 Singleton ''CacheManager'' 인스턴스를 만들도록 하자.
 +    * Hibernate와 Spring에서 Singleton Cache Manager를 사용하도록 하고 로딩 순서를 보정해주면 될 듯 하다.
   * [[http://techblog.bozho.net/?p=1080|Bozho's tech blog » Be Careful With (EhCache) Cache Managers]]   * [[http://techblog.bozho.net/?p=1080|Bozho's tech blog » Be Careful With (EhCache) Cache Managers]]
- +  * [[http://www.codingpedia.org/ama/spring-caching-with-ehcache/|Spring caching with Ehcache]]
-===== Update Check 끄기 ===== +
-  * [[http://ehcache.org/documentation/user-guide/configuration|ehcache configuration]] 참조 +
-  * 시스템 프라퍼티<code> +
--Dnet.sf.ehcache.skipUpdateCheck=true +
-</code> +
-  * ''ehcache.xml'' 설정 파일 : ''updateCheck="false"''<code xml> +
-<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +
-    xsi:noNamespaceSchemaLocation="ehcache.xsd" +
-    updateCheck="false" monitoring="autodetect" +
-    dynamicConfig="true"> +
-</code> +
 ===== Distributed Cache ===== ===== Distributed Cache =====
 The data is held in a Terracotta Server Array with a subset of recently used data held in each application cache node. The distributed topology, available with BigMemory Max, supports a very rich set of consistency modes. The data is held in a Terracotta Server Array with a subset of recently used data held in each application cache node. The distributed topology, available with BigMemory Max, supports a very rich set of consistency modes.
줄 24: 줄 13:
   * 이 경우 캐시 된 데이터를 각자 자기 메모리에서 읽기 때문에 로컬 캐시를 사용하는 효과와 동일할 것이다.   * 이 경우 캐시 된 데이터를 각자 자기 메모리에서 읽기 때문에 로컬 캐시를 사용하는 효과와 동일할 것이다.
   * 하지만 노드의 갯수가 증가하게 되면 그만큼 부하도 증가하고 성능도 떨어질 수 있다. 따라서 10 노드 이하 정도의 규모에서 사용한다.   * 하지만 노드의 갯수가 증가하게 되면 그만큼 부하도 증가하고 성능도 떨어질 수 있다. 따라서 10 노드 이하 정도의 규모에서 사용한다.
-  * **Do not use Time To Idle with replicated caching**, unless you do not care about inconsistent data across nodes.+  * **Replication 캐시에서는 Time To Idle은 사용하지 말라**. 단 노드들 간의 데이터가 다소 비일관적이어도 괜찮다면 사용해도 된다.
 ==== Replication 데이터 복제 전략 ==== ==== Replication 데이터 복제 전략 ====
   * 각 애플리케이션에 캐시가 존재하고 RMI, JGroups, JMX 등을 통해 캐시를 서로 동기화   * 각 애플리케이션에 캐시가 존재하고 RMI, JGroups, JMX 등을 통해 캐시를 서로 동기화
   * ''replicatePuts=true|false'' : 새로운 캐시 생성시 다른 애플리케이션에 복제할 것인가(true) 아무것도 안 할 것인가(false - put은 각 애플리케이션이 각자 알아서하기)   * ''replicatePuts=true|false'' : 새로운 캐시 생성시 다른 애플리케이션에 복제할 것인가(true) 아무것도 안 할 것인가(false - put은 각 애플리케이션이 각자 알아서하기)
 +  * ''replicateUpdates=true|false'' : 갱신이 발생할 경우 전파할지 여부. 항상 ''true''인게 맞을 듯.
 +  * ''replicateRemovals=true|false'' : 캐시 삭제가 발생할 경우 전파할지 여부. 항상 ''true''인게 맞을 듯.
   * ''replicateUpdatesViaCopy=true|false'' : 기존 캐시가 갱신 됐을 때 다른서버에 복제할 것인가(true), 다른 서버에는 단지 **값이 갱신됐으니 기존 값을 지우라고 알린 뒤 필요할 때 직접 데이터를 다시 읽으라고 지시**할 것인가(false).   * ''replicateUpdatesViaCopy=true|false'' : 기존 캐시가 갱신 됐을 때 다른서버에 복제할 것인가(true), 다른 서버에는 단지 **값이 갱신됐으니 기존 값을 지우라고 알린 뒤 필요할 때 직접 데이터를 다시 읽으라고 지시**할 것인가(false).
-  * 복제 전략을 ''true''로 하면 네트워크 부하는 높아지고 일관성이 다소 떨어질 수 있고 애플리케이션 성능은 높아진다. +    * 복제 전략을 ''true''로 하면 네트워크 부하는 높아지고 일관성이 다소 떨어질 수 있고 애플리케이션 성능은 높아진다. 
-  * 복제 전략을 ''false''로 하면 네트워크 부하는 낮아지고 일관성은 높아지며 애플리케이션 성능은 낮아진다. 애플리케이션 성능보다는 네트워크 부하를 줄이고 일관성을 높이고 싶을 때 사용. +    * 복제 전략을 ''false''로 하면 네트워크 부하는 낮아지고 일관성은 높아지며 애플리케이션 성능은 낮아진다. 애플리케이션 성능보다는 네트워크 부하를 줄이고 일관성을 높이고 싶을 때 사용. 
-  * TODO : 내 예상으로는 ''복제=true'' 전략을 사용하면 캐시 대상 Class가 한쪽 애플리케이션에서만 변경되고 다른 애플리케이션에서는 변경이 안됐을 경우 오류가 발생할 것으로 보인다. +    * TODO : 내 예상으로는 ''복제=true'' 전략을 사용하면 캐시 대상 Class가 한쪽 애플리케이션에서만 변경되고 다른 애플리케이션에서는 변경이 안됐을 경우 오류가 발생할 것으로 보인다. 
-    * 따라서 여러 애플리케이션이 순차적으로 배포되면서 캐시를 리플리케이션 할 때는 **''복제=false''** 전략이 일반적으로는 약간의 성능저하는 있어도 더 안전하다.+      * 따라서 여러 애플리케이션이 순차적으로 배포되면서 캐시를 리플리케이션 할 때는 **''복제=false''** 전략이 일반적으로는 약간의 성능저하는 있어도 더 안전하다.
     * [[http://stackoverflow.com/questions/7099133/does-ehcache-respect-serialversionuid|java - Does ehcache respect serialVersionUID? - Stack Overflow]]     * [[http://stackoverflow.com/questions/7099133/does-ehcache-respect-serialversionuid|java - Does ehcache respect serialVersionUID? - Stack Overflow]]
     * [[http://forums.terracotta.org/forums/posts/list/5844.page|Clustered cache and serialVersionUID]]     * [[http://forums.terracotta.org/forums/posts/list/5844.page|Clustered cache and serialVersionUID]]
 +
 +==== Replication과 Hibernate ====
 +  * [[java:hibernate:cache|Hibernate Cache]] 참조.
 +
 +==== Replication과 JGroups ====
 +  * [[http://nverma-tech-blog.blogspot.kr/2013/10/ehcache-cache-replication-in-clustered.html|Tech Blog - Narendra Verma: Ehcache: Cache Replication in Clustered Environment using JGroups]]
 +
 +===== Update Check 끄기 =====
 +  * [[http://ehcache.org/documentation/user-guide/configuration|ehcache configuration]] 참조
 +  * 시스템 프라퍼티<code>
 +-Dnet.sf.ehcache.skipUpdateCheck=true
 +</code>
 +  * ''ehcache.xml'' 설정 파일 : ''updateCheck="false"''<code xml>
 +<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 +    xsi:noNamespaceSchemaLocation="ehcache.xsd"
 +    updateCheck="false" monitoring="autodetect"
 +    dynamicConfig="true">
 +</code>
 +
java/ehcache.1412051583.txt.gz · 마지막으로 수정됨: 2014/09/30 13:33 저자 kwon37xi