EhCache RMI를 활용한 분산 캐시에 대해서 알아보겠습니다.
여러분이 맛있는 케이크 레시피를 알고 있다고 상상해보세요.
EhCache RMI가 바로 이런 역할을 합니다!
<ehcache>
<!-- 설정! -->
<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=automatic,
multicastGroupAddress=230.0.0.1,
multicastGroupPort=4446"/>
<cache name="userCache">
<!-- 실제 동기화 설정 -->
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="replicateAsynchronously=true"/>
</cache>
</ehcache>
@Service
public class UserService {
@Cacheable("userCache")
public User getUser(String userId) {
// DB에서 유저 정보를 가져오는 무거운 작업
return userRepository.findById(userId);
}
}
마치 카톡 단체방처럼 작동합니다!
서버 A가 새로운 데이터를 캐시에 저장
서버 A: "안녕! 나 userId=123 데이터 새로 저장했어!"
다른 서버들이 자동으로 수신
서버 B: "알았어! 나도 저장할게~"
서버 C: "나도 저장완료!"
설치가 쉬워요
자동으로 동기화
Java만 있으면 OK
너무 큰 데이터는 부담
서버가 너무 많으면?
// 1. 상품 정보 캐싱
@Cacheable("productCache")
public Product getProduct(String productId) {
return productRepository.findById(productId);
}
// 2. 인기 상품 목록 캐싱
@Cacheable("hotProductsCache")
public List<Product> getHotProducts() {
return productRepository.findHotProducts();
}
EhCache RMI는 마치 여러분이 친구들과 공유하는 단체톡방처럼 쉽고 효율적으로 캐시를 공유할 수 있게 해줍니다. 중소규모 서비스라면 큰 고민 없이 시작해보세요!
궁금하신 점 있으시다면 댓글로 남겨주세요! 😊
#Java #Spring #Cache #EhCache #분산시스템 #초간단_설정