문제

로드 균형 잡힌 WebApp에서 분산 캐시를 사용할 계획입니다. 그래서 나는 Apache Ehcache와 Memcached 사이의 일반적인 기능을 추상화하려고 노력할 것입니다.

내 목표는 간단한 구성 스위치를 만들어 사용할 수있는 캐싱 솔루션을 선택할 수 있어야합니다. XML 파서가 어떻게 연결되어 있는지와 같은 SPI 경로를 가야합니까?

도움이 되었습니까?

해결책

내 머리 꼭대기에서 ...

  • 공통 캐시 관련 메소드 (add (), remove (), refresh ()가 가장 명백한 것과 함께 인터페이스를 만듭니다).
  • 아래에 원하는 캐시를 사용하는 해당 인터페이스의 구현 ( "myehcacheimpletation"및 "meymcachedimplementation"또는 이와 유사한 구현).
  • 숫자, 문자열 또는 열거와 같은 간단한 값에 따라 일부 유형의 캐시를 반환하는 Cachefactory를 만듭니다. 기본 구현을 위해 폴백을 만드는 것을 잊지 마십시오!
  • 예를 들어 시작 중에 다양한 설정을 읽거나 Spring ApplicationContext.xml을 사용하는 클래스가 있거나 비슷한 것을 사용하는 클래스가있는 경우 초기화시 공장에 해당 단일 값을 주입하는 방법을 작성하십시오. 캐시에 대한 초기화 방법을 만들어야합니다. 해당 매개 변수를 가져 와서 공장을 호출하고 올바른 유형의 캐시를 반환하고/또는 사용하는 곳에서 어떤 장소로 설정합니다.

나는 그것이 당신이 구조적으로 그것을 안정적으로 작동시키기 위해 구조적으로 필요한 전부라고 생각합니다.

다른 팁

인터페이스를 수정 한 후 이것은 실제로 창조적 패턴 문제입니다. 의존성 주입은 내가 가장 좋아하는 것입니다. 캐시 선택 전략이 동적 인 경우 스프링 콩 공장을 사용하여 런타임에 결정할 수 있습니다. Spring은 웹 응용 프로그램의 "세션"스코프를 지원합니다. 즉, 공장이 원하는 경우 세션 당 결정을 결정할 수 있습니다.

그렇지 않으면 간단한 서비스 로케이터도 트릭을 수행해야합니다.

http://en.wikipedia.org/wiki/service_locator_pattern

Spring에는 또한 원하는 작업을 수행하는 캐시 제공 업체 모듈이 있습니다. 그래도 Memcached가 지원되는지 확실하지 않습니다. 그렇지 않더라도 어댑터를 작성하는 것은 자신의 인터페이스를 핸드 롤링하는 것보다 작업이 적을 수 있습니다. 보다 https://springmodules.dev.java.net/docs/reference/0.8/html_single/#cache

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top