Apache Ignite / Gridgain에는 아래와 같이 3가지 캐시모드가 있으며 이들에 대한 각각의 장단점 분석이 필요하여 작성합니다.
Local Mode :
- 다른 노드에 캐시 데이터 배포 안됨.
- 제거 및 만료 정책 기능
- 쿼리 실행 및 트랜잭션과 같은 분산 캐시의 모든 기능
=> 데이터가 읽기 전용 또는 특정 만료 빈도로 주기적으로 새로 고쳐질 수 있는 시나리오에 적합
Replication Mode :
- 모든 노드에 데이터 사본을 보유함.
- 쿼리 실행 위치에 관계없이 모든 노드에 데이터가 있어 바로 사용 가능
- 노드가 사라지더라도 모든 노드에 데이터가 있으므로 안전
- 복제 된 캐시에서 데이터가 변경되면 데이터 변경은 다른 모든 노드로 전송되어야 함.
= 더 많은 노드가 추가 될 수록 변경 시 더 많은 트래픽이 발생하여 궁극적으로 성능 및 확장성이 제한됨.
- 노드 1,2,3이 각기 다른 메모리양을 가질 경우 최소 메모리노드가 가진 수만 적용이 가능함.
=> 데이터 세트가 작고 업데이트가 자주 발생하지 않을 때 사용해야 함
=> 참조 테이블과 같이 많이 변경되지 않는 비교적 작은 데이터 세트가 있는 경우에만 권장
Partitioned Mode :
- 기본 캐시 모드이며 가장 확장성이 뛰어난 분산 캐시 모드
- 클러스터 리소스를 최대한 활용가능
- 데이터는 노드간에 균등하게 분할된 분산 인 메모리 저장소 생성
- 클러스터의 단일 노드 장애 발생 시 데이터 손실 위험이 있음. (그래서 백업 노드 1~2개 구성 필요)
=> 대규모 데이터 세트로 작업하고 업데이트가 빈번 한 시나리오에 권장
=> 기본 노드 구성에 1~2개 이상의 백업 노드 구성 권장
=> Data Loss를 방지하기 위한 노드 종료를 지연하는 시스템 속성을 정의해야 함.
더보기
이러한 상황을 방지하기 위해 종료로 인해 파티션 손실이 발생하지 않을 때까지 노드 종료를 지연하는 시스템 속성 (IGNITE_WAIT_FOR_BACKUPS_ON_SHUTDOWN)을 정의 할 수 있습니다. 노드는 나머지 노드에서 모든 파티션을 사용할 수 있는지 확인한 다음 프로세스를 종료합니다.
즉, 속성이 설정되면 데이터가 재조정 될 때까지 기다리지 않고 한 번에 min (CacheConfiguration.backups) + 1 개 이상의 노드를 중지 할 수 없습니다. 이는 파티션 백업이있는 캐시가 하나 이상 있고 노드가 적절하게 중지 된 경우에만 적용됩니다.
To enable partition loss prevention, set the IGNITE_WAIT_FOR_BACKUPS_ON_SHUTDOWN system property to true.
./ignite.sh -J-DIGNITE_WAIT_FOR_BACKUPS_ON_SHUTDOWN=true
* 단 Patitioned Backup이 없을 경우, 위 기능을 사용해도 캐시를 잃게됩니다.
[참고] https://apacheignite.readme.io/v1.2/docs/cache-modes
728x90
'Ignite' 카테고리의 다른 글
[GridGain] Apache Ignite | 설치 및 구성 (3) 개발환경 (1) | 2020.06.30 |
---|
댓글