복제된 토폴로지
주의 사항
이 기능은 다음에서도 사용할 수 있습니다. NCache Professional.
클러스터에서 모든 서버 노드에 동일한 데이터 복사본이 있으면 고가용성이 제공됩니다. 즉, 클러스터는 데이터 손실 없이 몇 번의 노드 장애를 견뎌낼 수 있습니다. 이 목적을 위해, NCache 여러 서버에 동시에 장애가 발생하더라도 사용자 데이터가 손실되지 않도록 복제 토폴로지를 제공합니다. 이 토폴로지를 사용하면 여러 서버를 보유할 수 있으며 모든 서버에는 동일한 데이터 복사본이 있습니다. 따라서 모든 서버는 서로의 정확한 복제본입니다. 따라서 동시에 여러 서버에 장애가 발생하더라도 데이터 손실이 발생하지 않습니다.
복제 동기화
클라이언트가 쓰기 작업을 수행할 때마다(추가, 업데이트및 제거하다), 이 작업은 클라이언트에 제어권을 반환하기 전에 모든 캐시 서버에서 이 작업을 복제하기 위해 클러스터 전체에 브로드캐스트됩니다. 클라이언트로부터 작업을 수신하는 서버는 이러한 작업을 브로드캐스트하는 일을 담당합니다. 이 프로세스 동안 코디네이터 서버에서 시퀀스 토큰을 가져와 현재 작업과 연결하여 이 작업이 모든 서버에서 동일한 순서로 수행되어 데이터 일관성을 유지하도록 합니다.
캐시 서버에서 브로드캐스트된 쓰기 작업이 실패하면 이 데이터를 제거하기 위해 모든 캐시 서버에 그 실패가 브로드캐스트됩니다. 이는 클러스터 전체에서 데이터 일관성을 유지하기 위해 수행됩니다. 즉, 데이터가 캐시에 있는 경우 모든 서버가 동일한 데이터를 갖습니다.
복제는 동기식으로 수행되므로 쓰기 작업에 제어권을 반환하기 전에 데이터를 모든 캐시 서버에 복제하는 데 더 많은 시간이 필요한 서버가 많기 때문에 이 토폴로지는 쓰기 작업에 적합하지 않습니다. 쓰기 작업 성능이 저하되지 않도록 하려면 클러스터 크기를 서버 3개로 제한하는 것이 좋습니다.
코디네이터 서버의 역할
코디네이터 서버(최상위 서버 노드)는 상태 전송과 같은 여러 작업을 수행합니다. 쓰기 작업, 다음과 같은 데이터 무효화 만료 과 의존성등. 캐시에서 항목을 제거하기로 결정한 후 다른 모든 노드에게 해당 항목을 캐시 저장소에서도 제거하도록 요청합니다. 코디네이터 서버가 클러스터를 떠나면 다음으로 가장 높은 서버가 코디네이터 서버가 되어 해당 책임을 다시 시작합니다.
완전히 확장 가능한 읽기 작업
모든 서버가 동일한 데이터를 가지고 있고 클라이언트는 모든 캐시 서버에 분산되어 있기 때문입니다. 따라서 모든 서버는 동일한 데이터를 클라이언트에 제공합니다. 클러스터에 더 많은 서버가 있다는 것은 더 많은 데이터 읽기 요청이 동시에 제공된다는 것을 의미합니다.
연결 로드 밸런싱
복제된 토폴로지에는 다음과 같은 특별한 기능이 있습니다. 자동 균형 클라이언트 연결 캐시 서버 간에 데이터 부하를 공유하기 위해 서버 간 클라이언트가 서버에 연결되면 이 서버는 다른 모든 서버 노드에도 동일한 수의 클라이언트가 있는지 확인합니다. 다른 서버에 클라이언트 수가 더 적으면 클라이언트 연결 요청을 정상적으로 거부하고 다른 서버로 리디렉션합니다. 이렇게 하면 모든 서버에 동일한 수의 클라이언트가 있으며, 다른 캐시 서버에 비해 더 많은 클라이언트로 인해 서버에 과부하가 걸리는 경우가 없습니다.
클라이언트 연결
복제된 토폴로지에서 클라이언트는 한 번에 하나의 클러스터 서버에만 연결됩니다. 연결된 서버가 다운되면 클라이언트는 사람의 개입 없이 클러스터의 다른 서버와 자동으로 연결됩니다.
국가 이전
복제된 토폴로지에서 노드 가입 및 노드 탈퇴 시 상태 전송이 트리거됩니다. 노드가 클러스터를 떠날 때 트리거되는 상태 전송은 모든 노드가 동일한 데이터를 갖기 때문에 많은 작업을 수행하지 않습니다. 그러나 노드 조인 시 새로 조인된 노드는 코디네이터 서버에 캐시된 데이터를 모두 제공하여 클러스터의 나머지 부분과 동기화하도록 요청합니다.