카테고리 없음

EhCache RMI 분산 캐시 🤔

블로글러 2024. 10. 30. 22:21

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);
    }
}

동작 방식 💫

마치 카톡 단체방처럼 작동합니다!

  1. 서버 A가 새로운 데이터를 캐시에 저장

    서버 A: "안녕! 나 userId=123 데이터 새로 저장했어!"
  2. 다른 서버들이 자동으로 수신

    서버 B: "알았어! 나도 저장할게~"
    서버 C: "나도 저장완료!"

장점은? 🌟

  1. 설치가 쉬워요

    • Redis나 Memcached 같은 별도 서버가 필요 없음
    • 설정 몇 줄로 끝!
  2. 자동으로 동기화

    • 수동으로 아무것도 안해도 됨
    • 마치 카톡방에서 대화가 자동으로 동기화되는 것처럼!
  3. Java만 있으면 OK

    • 특별한 기술 없이도 사용 가능

주의할 점 ⚠️

  1. 너무 큰 데이터는 부담

    • 마치 카톡방에서 너무 큰 동영상 공유하면 렉 걸리는 것처럼!
  2. 서버가 너무 많으면?

    • 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