이 문서에서는 Spanner Omni의 핵심 개념과 배포 토폴로지를 정의합니다. 여기에서는 리전, 영역, 서버 간의 계층적 관계를 다루고 이러한 구성요소가 배포 내 데이터 복제 및 스토리지와 어떤 관련이 있는지 설명합니다.
Spanner Omni 개념
다음 섹션에서는 Spanner Omni 문서 전체에서 사용되는 용어에 대한 자세한 정의를 제공합니다. 이러한 개념을 숙지하면 시스템의 아키텍처와 운영 동작을 명확하게 이해할 수 있습니다.
배포
데이터 센터 또는 퍼블릭 클라우드 계정에서 데이터베이스를 사용할 수 있는 Spanner Omni 배포 배포 구성에 지정된 매개변수에 따라 배포를 만듭니다. Spanner Omni 배포는Google Cloud의 Spanner| 인스턴스와 같습니다.
배포 구성
Spanner Omni 배포의 리전, 영역, 서버의 배치 및 사양을 제공합니다. 단일 서버, 단일 리전 또는 멀티 리전 배포 구성을 선택할 수 있습니다.
위치
Google Cloud 용어로 표현한 리전과 같습니다. 두 리전 간의 네트워크 지연 시간은 무시할 수 없습니다. 온프레미스 배포의 경우 자체 리전을 정의할 수 있습니다. 클라우드 배포의 경우 리전이 해당 클라우드 제공업체의 리전과 일치해야 합니다. 한 리전에 여러 영역이 있을 수 있습니다.
처리
Spanner 서버는 여러 프로세스를 포크하고 관리합니다. 예를 들어 TimeServer, spanserver는 모두 Spanner의 프로세스입니다. 개별 프로세스에는 CPU 및 메모리 사용량과 같은 모니터링 통계가 있을 수 있습니다. 프로세스는 배포의 다른 서버와 통신하기 위해 포트를 열 수 있습니다.
복제본
Spanner는 데이터를 복제하여 데이터 가용성과 지리적 위치를 제공합니다. 상위 수준에서 Spanner는 모든 데이터를 행으로 구성합니다. Spanner는 이러한 행의 복사본(또는 복제본)을 여러 개 만든 후 이러한 복제본을 서로 다른 지역에 저장합니다. Spanner는 동기식 Paxos 기반 복제 스키마를 사용합니다. 이 스키마에서 응답 복제본은 데이터베이스에 쓰기를 커밋하기 전에 각 쓰기 요청에 대해 응답합니다. Spanner와 마찬가지로 Spanner Omni에도 읽기-쓰기, 읽기 전용, 감시 등 세 가지 복제본 유형이 있습니다. 자세한 내용은 Spanner 문서의 복제본 유형을 참고하세요.
서버
서버는 Spanner Omni 서버가 실행되는 컴퓨팅 리소스(예: VM 또는 컨테이너)입니다. 각 서버에는 자체 시스템 리소스(CPU, 메모리, 스토리지)가 있습니다. 서버는 사용자 데이터를 저장하고 제공하여 Spanner Omni의 기능을 제공합니다.
루트 서버
루트 서버는 영역을 지원하기 위해 중요한 메타데이터를 저장합니다. 예를 들어 루트 서버는 서버 멤버십 및 기타 영역 구성 정보를 저장합니다. 루트 서버는 일관성을 위해 쿼럼 알고리즘을 사용하므로 영역에 홀수 개의 루트 서버가 있어야 합니다. 매우 작은 영역의 경우 1개, 더 큰 영역의 경우 3~5개입니다. 배포를 계획할 때 루트 서버 수를 신중하게 고려하세요. 배포를 만든 후에는 배포에서 루트 서버 수를 변경할 수 있지만 권장하지는 않습니다.
비루트 서버
비루트 서버는 사용자 데이터를 저장하고 제공하며 영역의 컴퓨팅 용량과 스토리지를 확장하는 방법을 제공합니다. 워크로드 요구사항에 따라 배포에 루트가 아닌 서버를 원하는 만큼 추가할 수 있습니다. 배포를 만든 후에는 비루트 서버 수를 변경할 수 있습니다.
분할
Spanner 분할은 연속된 데이터 행 범위를 포함하며, Spanner는 기본 키를 기준으로 행을 정렬합니다. Spanner는 각 영역에 저장되는 각 분할의 복제본을 만듭니다.
스토리지
서버에 연결된 영구 스토리지입니다.
영역
하나 이상의 서버 그룹입니다. 데이터 복제의 경우 복제본당 하나의 영역을 만들어야 합니다. 온프레미스 배포의 경우 영역 간 인프라 공유 (VM, 디스크)를 최소화하는 것이 좋습니다. 클라우드 배포의 경우 영역을 AWS의 가용성 영역 또는 Google Cloud의 영역에 맞춥니다.