빠르고 안정적인 애플리케이션 처리의 시대에 모든 사람들은 애플리케이션에서 최고의 성능을 얻기 위해 분산 캐싱을 선택하고 있습니다. 웹 애플리케이션이 높은 트래픽을 끌어 매우 높은 트랜잭션을 유발하는 경우 반드시 필요합니다. NCache.
NCache 제공하는 인메모리 분산 캐싱 솔루션입니다. 선형 확장성 .NET 및 Java 응용 프로그램에. 다양한 중 토폴로지 그 NCache 제공합니다. 가장 인기 있는 것은 분할된 복제본 토폴로지. Partitioned-Replica 토폴로지는 선형 확장성 및 고가용성이라는 두 가지 장점을 모두 제공합니다.
Partitioned-Replica 클러스터에서 데이터는 분할되고 모든 노드에서 복제됩니다. 따라서 서버 노드가 다운되면 해당 클라이언트는 복제본과 상호 작용하여 작업을 계속할 수 있습니다. 노드가 다운되는 즉시 고아 데이터의 자동 재조정을 위해 상태 전송 프로세스가 트리거됩니다. 이제 Partitioned-Replica 클러스터가 있고 얼마 지나지 않아 해당 노드를 다시 시작할 것임을 알고 있는 동안 유지 관리를 위해 노드 중 하나를 중지해야 한다고 가정합니다. 이 행동이 무엇이며 그것이 당신에게 어떻게 도전이 될 수 있는지 봅시다.
NCache 세부 정보 분할된 복제본 NCache 기술 문서 유지 관리 모드 NCache 기술 문서
유지 관리 중 자동 재조정 문제
분할된 복제본 클러스터에서 노드가 중지될 때마다 클러스터 전체에서 데이터 균형을 재조정하기 위해 상태 전송이 트리거됩니다. 이 프로세스는 예상보다 더 많은 시간이 소요될 수 있으며, 이는 특히 노드에 수십 기가바이트의 데이터가 있는 경우 애플리케이션의 성능에 영향을 미칩니다.
다음 그림은 노드가 중지되었을 때 분할된 복제본 클러스터의 동작을 설명합니다.
이 그림에서 당신은 NCache XNUMX개의 노드가 있는 분할된 복제본 클러스터. 여기에서는 클러스터에서 노드가 중지될 때 어떤 일이 발생하는지 설명하기 위해 XNUMX단계를 소개했습니다.
- 1단계 : NCache의 분할된 복제본 각각 활성 노드와 복제본 노드가 있는 세 개의 노드 A, B, C가 있습니다.
- 2단계: 노드 C는 유지 관리를 위해 잠시 중지됩니다. 활성 및 복제본은 더 이상 클러스터의 일부가 아니며 상태 전송이 트리거됩니다.
- 3단계: 데이터 redis클러스터의 트리뷰션(완전히 불필요). 여기서 노드 C의 orphaned 데이터는 상태 전송이 중지된 후 나머지 노드 A와 B로 나뉩니다. 이 부서에 따르면 복제본 노드도 업데이트됩니다. 중지된 노드가 곧 다시 시작될 것이기 때문에 이 상태 전송은 완전히 필요하지 않습니다.
- 4단계: 노드 C가 다시 시작됩니다. 이 단계에서 클러스터는 노드 C가 클러스터를 떠난 것처럼 동작합니다. 데이터 후 redis공물, 노드 C가 다시 시작됩니다.
- 5단계: 노드 C가 클러스터에 다시 참여하고 데이터를 다시 수행합니다. redis공로. 해당 데이터는 이미 A와 B 사이에 배포되었으므로 C가 다시 조인하면 노드에 새 데이터를 할당하기 위해 클러스터 전체에서 상태 전송이 다시 트리거됩니다.
이상적으로는 이것이 완벽한 솔루션인 것 같습니다. 노드를 중지하면 상태 전송이 발생합니다. 수정하려는 항목을 수정하고 해당 노드를 다시 시작합니다. 모든 버킷의 균형을 맞추기 위해 상태 이전이 다시 트리거됩니다.
그러나 이것이 이상적인 솔루션이 아닌 이유는 무엇입니까? 여기서 무슨 문제가 발생합니까?
불필요하게 상태 이전을 요청하는 몇 가지 단점이 있습니다. 그들은:
- 다중 네트워크 호출 및 처리 오버헤드로 인한 높은 비용.
- 노드가 많은 양의 데이터를 보유할 때 높은 시간 복잡도.
- 상태 전송 중에 노드가 다시 시작되고 상태 전송 내에서 상태 전송으로 이어지는 잘못된 동작.
NCache 세부 정보 분할된 복제본 NCache 기술 문서 유지 관리 모드-NCache 기술 문서
솔루션: 분할된 복제본을 인식하는 유지 관리 모드
노드가 클러스터를 탈퇴하고 클러스터에 합류할 때마다 발생하는 불필요한 상태 전송의 이러한 모든 차질을 고려하여, NCache 당신을 제공합니다 유지 관리 모드.
유지 관리 모드를 사용하면 특정 기간 동안 노드를 중지하고 유지 관리가 끝나면 시작할 수 있습니다. 이 모드는 노드가 유지 관리를 진행하는 동안 클러스터 내에서 상태 전송 스레드가 트리거되지 않도록 합니다. 또한 클러스터가 많은 양의 데이터로 구성된 경우 매우 유용합니다.
유지 관리 모드가 노드의 정상적인 중지와 어떻게 다른지 다음 그림에서 설명합니다.
- 1단계: 분할된 복제본 토폴로지의 구조 of NCache POR 클러스터가 엄청난 양의 데이터를 포함하는 XNUMX개의 서버 노드로 구성된 경우가 표시됩니다.
- 2단계: 노드 C가 중지되었습니다. 유지 관리 모드를 통한 유지 관리를 위해 노드 C가 중지됩니다.
- 3단계: 데이터 redis공로. 여기에서 C의 복제본이 활성화되고 노드 C의 클라이언트 주소 지정을 시작합니다. 이렇게 하면 상태 전송을 트리거할 필요가 없으므로 클러스터가 유지 관리되는 동안 상태 전송 스레드가 중지됩니다. 이것은 노드 C가 중지된 후 불필요한 상태 전송이 클러스터 전체에서 데이터 균형을 맞출 때 직면하는 문제를 해결합니다.
- 4단계: 노드 C가 다시 시작되었습니다. 유지 관리를 위해 중지된 후 노드 C는 다시 시작되기를 기다립니다. 클러스터가 유지 관리 모드를 종료할 때마다 노드 C가 시작됩니다.
- 5단계: 데이터 전송. 노드 C가 복제본 부분에서 모든 데이터를 수신하고 상태 전송을 통해 전체 노드(예: Active C 및 복제본 B)를 업데이트하는 클러스터 단계입니다.
NCache 세부 정보 분할된 복제본 NCache 기술 문서 유지 관리 모드-NCache 기술 문서
유지 관리를 위해 노드를 중지하는 방법
Web Manager를 사용하거나 유지 관리를 위해 노드를 중지할 수 있습니다. PowerShell을. 다음은 유지 관리를 위해 노드를 중지하는 방법입니다. 웹 관리자. 노드를 중지할 때 해당 노드를 유지 관리할 유지 관리 시간을 언급하라는 메시지가 표시됩니다. 이 시간 초과는 상태 전송이 트리거될 수 없는 기간으로 간주됩니다.
다음 단계를 통해 유지 관리를 위해 중지하려는 노드를 중지할 수 있습니다.
- 액세스 NCache 웹 관리자
- 클러스터된 캐시로 이동하여 유지 관리가 필요한 클러스터를 선택합니다.
- 다양한 노드 중에서 유지 관리가 필요한 노드를 선택합니다.
설정으로 이동하여 옵션을 선택하십시오. 유지 보수를 위해 중지.
유지 관리 모드에서 노드를 종료하는 방법
클러스터가 유지 관리 모드에 들어가면 Web Manager를 사용하여 해당 클러스터를 종료합니다. 따라야 할 단계는 다음과 같습니다.
- 너의 NCache 웹 관리자, 클러스터된 캐시로 이동
- 유지 관리 중인 클러스터를 선택합니다.
- 설정으로 이동하여 선택하십시오. 유지 관리 모드 종료.
웹 관리자 외에 노드가 유지 관리 모드에서 나갈 수 있는 몇 가지 방법이 있습니다. 일부 시나리오는 애플리케이션 성능에 영향을 줄 수 있으므로 이러한 시나리오를 고려해야 합니다.
노드는 다음과 같은 경우 유지 관리 모드를 종료할 수 있습니다.
- 유지 관리 중인 노드가 시작되면: 유지 관리 중인 노드가 관리자나 PowerShell 명령을 통해 수동으로 시작된 경우 해당 노드는 유지 관리 모드를 종료합니다.
- 시간 초과가 만료되면: 유지 관리를 위해 제공된 제한 시간이 만료되면 상태 전송이 트리거되고 클러스터는 자동으로 유지 관리 모드를 종료합니다.
- 노드가 클러스터를 떠날 때: 유지 관리 중인 노드는 클러스터를 정상적으로 떠날 수 없습니다. 그러나 해당 클러스터의 노드 중 하나가 강제로 떠나면 해당 클러스터는 여전히 유지 관리 프로세스 중임에도 불구하고 불가피하게 유지 관리 모드에서 빠져 나옵니다. 여기서 주의해야 할 점은 유지보수 중이었던 바로 그 노드가 떠나게 되면 데이터가 손실될 가능성이 높다는 점이다.
유지 관리 모드를 종료하는 데 사용하는 방법에 관계없이 해당 신호만 상태 전송 스레드가 클러스터 전체에서 자동 균형 프로세스를 트리거하는 신호입니다.
합산
애플리케이션의 성능을 손상시키지 않으면서 파티션된 복제본 클러스터 캐시에 패치를 적용할 수 있는 방법을 원하는 경우 다음을 확인하십시오. NCache 유지 관리 모드. 유지 관리 모드를 사용하면 응용 프로그램 다운타임 없이 버그를 수정하고, 패치를 추가하고, 소프트웨어 또는 하드웨어를 업그레이드할 수 있습니다. 위에서 언급한 단계를 따르고 얼마나 특별한지 직접 확인하기만 하면 됩니다. NCache 유지 관리 모드입니다.