Java 캐쉬 엔진인 EHCache.
기본적으로 웹어플리케이션에서 캐쉬는 HTTP의 캐시 , View 레이어 캐쉬(HTML, xml, Json등의 캐쉬) , 비지니스 로직 캐쉬(메소드 캐싱 등) , DB 캐쉬가 있다. EHCache의 경우 HTTP캐시 를 제외한 모든 영역의 캐쉬를 지원한다고 볼 수 있다.
EHCache의 간단한 장점은
- 경량의 빠른 캐쉬엔진
- 분산 지원
- 높은 품질
나머지 장점은 공식 페이지에서 확인해보자(스토리지 엔진을 사용해서 캐쉬를 memory나 disk에 올리는것등 다양한 장점이…)
EHCache에서 중요한점은 분산캐쉬 와 Spring 에서 사용 인데,
분산 캐쉬부터 살펴보자
분산 캐쉬는 크게 두가지로 나눠질 수 있다.
- Hub and Spoke
중앙에 각 JVM이 가진 캐쉬 노드를 제어 하는 캐쉬 서버를 두는 아키텍쳐 인데, 각 노드에서 데이터가 변경 되면 중앙의 캐쉬서버에 변경사항을 전달하고 캐쉬서버가 다시 나머지 노드에 변경 사항을 전달하는 구조로 되어 있다.
– - Replication, Invalidation
각 노드간 캐쉬를 노드 자체적으로 클러스터링 하여 작동하는 아키텍쳐다. 한 노드에서 변경이 발생하면 나머지 노드에 직접 변경을 알려주는 구조로 되어 있다.
EHCache는 Hub and Spoke(document 에서는 Distributed라고 표현), Replication, Invalidation 모두 선택이 가능하다. (참고) Distributed 를 선택할 경우 Terracotta Server Array 를 사용해서 캐쉬서버가 구현되며 Replication 아키텍쳐를 선택할 경우 변경통지는 RMI나 JGroups같은 매커니즘을 플러그인 형태로 선택해서 사용할 수 있다.
다음으로 Spring 에서 EHcache를 사용하는 법은
캐시 설정 파일을 통해 Max Heap 메모리 크기나, max 디스크 크기 등 몇가지 설정을 설정파일에 입력(http://www.nextree.co.kr/p3151)한 후 어노테이션을 이용하거나 CacheManager 객체를 생성해 캐쉬를 관리 할 수 있다.
참고 : http://www.nextree.co.kr/p3151/ , http://greatkim91.tistory.com/116