동적 캐시 서비스 다중 셀 및 다중 코어 그룹 무효화
동적 캐시 서비스 다중 셀 및 다중 코어 그룹 무효화는 다른 셀에서 작성된 캐시를 사용하여 셀 경계에서 복제되는 캐시 항목 없이 동기화됩니다. 이 기능이 서블릿 및 오브젝트 캐시 인스턴스 중 하나에 사용되면, 데이터는 셀 모두에 동일한 트래픽을 처리하는 셀의 결과로서 캐시를 갖게 됩니다. 캐시 항목이 JMS(Java Message Service)로 무효화된 경우, 무효화된 캐시 항목의 ID는 피어 셀로 전송됩니다. 셀 수신은 서비스 통합 버스를 사용하여 무효화를 처리합니다. 이 기능은 무효화를 동일한 셀의 다른 코어 그룹에 전파하는 데에도 사용될 수 있습니다.
동적 캐시 외부 캐시 어댑터, ECA(ExternalCacheAdapter)는 서버에서 무효화를 캡처하는 데에 사용됩니다. JMS/서비스 통합 버스는 원격 셀 또는 코어 그룹의 무효화를 전송 및 수신하는 데에 사용됩니다. 추가적인 애플리케이션 서버가 작성되어 무효화 애플리케이션을 호스팅합니다. 이러한 서버는 자동으로 서비스 통합 버스의 멤버가 됩니다. 이러한 애플리케이션 서버는 원격 셀에서 JMS 메시지로 구성된 무효화를 처리하며 로컬 셀의 클러스터 멤버와 통신합니다.
외부 캐시 어댑터인 com.ibm.websphere.servlet.cache.RemoteInvalidator는 무효화된 캐시의 ID를 원격 셀의 서비스 통합 버스에 전송하는 데에 사용됩니다. 주소에 host:port를 지정하는 대신, 이 외부 캐시 어댑터의 유형은 JMS 큐 연결 팩토리 JNDI 이름을 사용하며, 다음 주소로서 원격 서비스 통합 버스의 큐 대상 이름을 사용합니다.
Adapter bean name = com.ibm.websphere.servlet.cache.RemoteInvalidator
Address = JMS_QUEUE_CONNECTION_FACTORY_JNDI_NAME, REMOTE_QUEUE_DESTINATION_NAME
- 각 셀 또는 코어 그룹은 프로덕션 애플리케이션을 호스팅하는 클러스터를 포함합니다. 무효화 ID를 올바르게 처리하려면 셀 또는 코어 그룹 모두에서 동일한 프로덕션 애플리케이션을 사용해야 합니다.
- 서비스 통합 버스를 호스팅하기 위해 두 서버로 구성된 별도의 클러스터가 각 셀 또는 코어 그룹에서 작성됩니다. 이 클러스터의 멤버는 정의된 RemoteJMSInvalidator 외부 캐시 그룹을 가질 수 없습니다. 이 클러스터 멤버에 대해 RemoteJMSInvalidator 외부 캐시 그룹이 정의되면 셀 사이에서 무효화가 반복적으로 전송되는 무한 루프백 조건이 발생합니다.
- 데이터 소스가 정의되고 서비스 통합 버스 클러스터 멤버 모두에서 액세스 가능합니다. 데이터베이스가 두 셀에서 모두 공유되면 각 셀에 대해 각 데이터 소스를 정의할 때 고유한 데이터베이스 이름을 사용해야 합니다.
- 각 셀 또는 코어 그룹이 프로덕션 애플리케이션을 호스팅하는 모든 클러스터 및 서비스 통합 버스 클러스터 모두를 포함하는 복제 도메인을 포함합니다.
- com.ibm.ws.cache.CacheConfig.interCellReplication
- enableInterCellInvalidation
구성 고려사항
WAS_INSTALL_ROOT/profiles/Dmgr01/bin)
서블릿 또는 오브젝트 캐시 인스턴스의 구성은 코어 그룹의 두 클러스터 모두에 사용 가능해야 합니다. 특성 파일, 팩토리 또는 관리 콘솔 중 하나를 사용하여 서블릿 또는 오브젝트 캐시 인스턴스를 구성하십시오. 이 구성은 셀 범위에서 설정되어야 하며, 코어 그룹의 서비스 통합 버스 및 프로덕션 클러스터 모두에서 사용 가능해야 합니다. 이 사용 가능성을 확인하는 가장 쉬운 방법은 애플리케이션을 설치할 때 웹 프로덕션과 서비스 통합 버스 클러스터 모두에서 캐시 인스턴스를 작성 및 정의하는 것입니다.
cache.instance.0=/services/cache/instance_one
cache.instance.0.cacheSize=1000
cache.instance.0.enableInterCellInvalidation=true
Properties p = new Properties();
==>p.put("com.ibm.ws.cache.CacheConfig.enableInterCellInvalidation", "true");
DistributedMap map1 = DistributedMapFactory.getMap("myMap", p);
관리 콘솔에서
이러한 특성을 설정하려면, 서버 > 애플리케이션
서버 >server_name을 클릭한 후,
서버 인프라 섹션에서 Java™
및 프로세스 관리 > 프로세스 정의 >제어 > Java virtual
machine > 사용자 정의 특성을
클릭하거나, 자원 > 캐시
인스턴스 > 오브젝트 캐시 인스턴스 >
cache_instance_name을 클릭하십시오.
관리 콘솔에서 이러한 특성을
설정하려면, 서버 > 애플리케이션 서버 > server_name을
클릭한 후, 서버 인프라 섹션에서 Java 및 프로세스
관리 > 프로세스 정의
> Java virtual machine >
사용자 정의 특성을 클릭하거나, 자원 > 캐시 인스턴스 >
오브젝트 캐시 인스턴스 >
cache_instance_name을 클릭하십시오.
- 인바운드 JMS/서비스 통합 버스의 구성으로, 다음 조치로 구성됩니다.
- 서비스 통합 버스 및 서비스 통합 버스 대상의 스펙의 작성입니다.
- JMS 큐의 작성입니다.
- JMS 활성화입니다.
- WAS_INSTALL_ROOT/installables/DynacacheMessageHandler.ear 파일의 설치로, 메시지 구동 Bean이며 서비스 통합 버스 클러스터에 있습니다.
- 아웃바운드 JMS/서비스 통합 버스의 구성으로, JMS 큐 연결 팩토리 구성으로 구성됩니다.
- 외부 캐시 그룹의 구성으로, 외부 캐시 그룹 및 프로덕션 애플리케이션을 호스팅하는 각 클러스터 멤버에 대한 외부 캐시 어댑터로 구성됩니다.
튜닝 고려사항
- dynacache.jms.connRetryInterval
- 서비스 통합 버스 서버에 다시 연결을 시도하기 전에 클러스터 멤버가 대기하는 시간(초)을 지정하십시오. 기본값은 30입니다.
- dynacache.jms.numStoredInvalidations
- 서비스 통합 버스 서버가 사용 가능 상태가 되기를 대기 하는 동안 클러스터 멤버가 저장할 수 있는 최대 무효화 ID 수를 지정하십시오. 임계값에 도달하면 가장 오래된 무효화가 제거됩니다. 기본값은 10000입니다.
- dynacache.jms.cacheInstance
- 무효화 처리를 위해 사용할 캐시 인스턴스를 지정하십시오. 이 특성을 "*"로 설정하면 모든 캐시 인스턴스에서 무효화 ID가 처리됩니다. 기본적으로 baseCache 캐시 인스턴스가 사용됩니다. 이 특성은 서비스 통합 버스 서버에만 적용 가능합니다.
- dynacache.jms.invProcessingDelay
- 서비스 통합 버스 서버가 무효화 ID를 처리하기 전에 조회하는 시간(초)을 지정하십시오. 기본값은 20입니다.