EhCache RMI를 활용한 분산 캐시에 대해서 알아보겠습니다.
EhCache RMI가 뭔가요? 🤔
여러분이 맛있는 케이크 레시피를 알고 있다고 상상해보세요.
- 친구 A의 집에서 만든 케이크 레시피를
- 친구 B, C의 집에서도 똑같이 만들고 싶다면?
EhCache RMI가 바로 이런 역할을 합니다!
- 서버 A의 캐시 데이터를
- 서버 B, C와 자동으로 동기화해주는 마법 ✨
어떻게 동작하나요? 🎬
1. 기본 설정
<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>
2. Spring에서 사용하기
@Service
public class UserService {
@Cacheable("userCache")
public User getUser(String userId) {
// DB에서 유저 정보를 가져오는 무거운 작업
return userRepository.findById(userId);
}
}
동작 방식 💫
마치 카톡 단체방처럼 작동합니다!
서버 A가 새로운 데이터를 캐시에 저장
서버 A: "안녕! 나 userId=123 데이터 새로 저장했어!"
다른 서버들이 자동으로 수신
서버 B: "알았어! 나도 저장할게~" 서버 C: "나도 저장완료!"
장점은? 🌟
설치가 쉬워요
- Redis나 Memcached 같은 별도 서버가 필요 없음
- 설정 몇 줄로 끝!
자동으로 동기화
- 수동으로 아무것도 안해도 됨
- 마치 카톡방에서 대화가 자동으로 동기화되는 것처럼!
Java만 있으면 OK
- 특별한 기술 없이도 사용 가능
주의할 점 ⚠️
너무 큰 데이터는 부담
- 마치 카톡방에서 너무 큰 동영상 공유하면 렉 걸리는 것처럼!
서버가 너무 많으면?
- 10대 이상되면 Redis 같은 전용 캐시 서버 추천
- 단체톡방도 너무 많으면 관리하기 힘들죠?
실제 사용 예시 📱
// 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 #분산시스템 #초간단_설정
728x90