Cache : local Cache vs global Cache

태그
CS
Cache
날짜
2024/06/08
2 more properties

Local Cache

서버마다 캐시를 따로 저장한다.
다른 서버의 캐시를 참조하기 어렵다.
서버 내에서 작동하기 때문에 속도가 빠르다.
로컬 서버 장비의 Resource를 이용한다. (Memory, Disk)
캐시에 저장된 데이터가 변경되는 경우:
해당 서버를 제외한 모든 peer에 변경 사항 전달
All-to-All Replication
WAS 인스턴스가 늘어나고, 캐시 저장 데이터 크기가 커지면 성능이 저하되는 이유는 이 때문
스프링에서 구현 가능한 로컬 캐시 라이브러리
Ehcache
Off Heap에 저장, 분산 캐시, cache listener 등 더 많은 기능을 제공
Caffeine Cache
Window TinyLfu eviction policy를 사용하여 최적에 가까운 적중률을 제공
읽기, 쓰기 성능 모두 Ehcache에 비해 우수하다.
Caffeine Cache가 Ehcache에 비해 높은 성능을 내며 설정이 간단하다.
Ehcache는 Caffeine Cache에 비해 더 많은 기능을 제공한다.

Global Cache

여러 서버에서 캐시 서버에 접근하여 참조 할 수 있다.
별도의 캐시 서버를 이용하기 때문에 서버 간 데이터 공유가 쉽다.
네트워크 트래픽을 사용해야 해서 로컬 캐시보다는 느리다.
데이터를 분산하여 저장 할 수 있다.
Replication: 두 개의 이상의 DBMS 시스템을 Mater / Slave 로 나눠서 동일한 데이터를 저장하는 방식
Sharding: 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법
캐시에 저장된 데이터가 변경되는 경우:
추가적인 작업 필요없음
서비스 확장으로 WAS 인스턴스가 늘어나고, Cache 데이터 크기가 커질 수록 효과적인 이유
스프링에서 구현 가능한 글로벌 캐시 라이브러리
Redis
다양한 자료구조를 제공 (memcached는 String만 지원)
disk에도 데이터를 저장하기 때문에 돌발상황에서 데이터의 복구가 가능하다.
memcached
redis보다 적은 메모리를 요구한다.