Cassandra Archi구조 및 복제 인자

Cassandra 처리하도록 설계되었습니다. 빅데이터. Cassandra의 주요 특징은 단일 장애 지점 없이 여러 노드에 데이터를 저장하는 것입니다.

이런 종류의 이유는 Cassandra'의 아키텍처는 하드웨어 장애가 언제든지 발생할 수 있다는 것입니다. 모든 노드가 다운될 수 있습니다. 장애가 발생하면 다른 노드에 저장된 데이터를 사용할 수 있습니다. 따라서, Cassandra 분산 아키텍처로 설계되었습니다.

Cassandra 피어 투 피어 방식의 분산형 아키텍처를 통해 여러 노드에 데이터를 저장합니다.

모든 노드는 다음을 사용하여 서로 정보를 교환합니다. 가십 프로토콜. 가십은 프로토콜이다. Cassandra 노드가 서로 통신할 수 있는 방법입니다.

구성 요소 Cassandra Archi강의

다음 구성 요소가 있습니다. Cassandra Archi강의:

Cassandra Archi강의
Cassandra Archi강의 다이어그램

노드

노드는 데이터가 저장되는 곳이다. 의 기본 구성품입니다 Cassandra.

데이터 센터

노드의 집합을 데이터 센터라고 합니다. 많은 노드가 데이터 센터로 분류됩니다.

Cluster

클러스터는 여러 데이터 센터의 집합입니다.

커밋 로그

모든 쓰기 작업은 Commit Log에 기록됩니다. Commit log는 크래시 복구에 사용됩니다.

메모리 테이블

Commit log에 데이터가 기록된 후 Mem-table에 데이터가 기록됩니다. 데이터는 임시로 Mem-table에 기록됩니다.

SS테이블

Mem-table이 특정 임계값에 도달하면 데이터가 SSTable 디스크 파일로 플러시됩니다.

데이터 복제 Cassandra

데이터 처리 중 언제든지 하드웨어 문제가 발생하거나 링크가 다운될 수 있으므로 문제 발생 시 백업을 제공할 수 있는 솔루션이 필요합니다. 따라서 단일 장애 지점이 발생하지 않도록 데이터가 복제됩니다.

Cassandra 이 두 가지 요소를 기반으로 서로 다른 노드에 데이터 복제본을 배치합니다.

  • 다음 복제본을 배치할 위치는 다음에 의해 결정됩니다. 복제 전략.
  • 서로 다른 노드에 배치된 총 복제본 수는 다음에 의해 결정됩니다. 복제 인자.

XNUMX개의 복제 요소는 단 하나의 데이터 복사본만 있음을 의미하고, XNUMX개의 복제 요소는 XNUMX개의 서로 다른 노드에 XNUMX개의 데이터 복사본이 있음을 의미합니다.

단일 장애 지점이 없도록 하기 위해, 복제 인자는 XNUMX이어야 합니다.

복제 전략에는 두 가지 종류가 있습니다. Cassandra.

SimpleStrategy의 Cassandra

단순전략 데이터 센터가 하나뿐인 경우 사용됩니다. SimpleStrategy는 파티셔너가 선택한 노드에 첫 번째 복제본을 배치합니다. 그 후 나머지 복제본은 노드 링에서 시계 방향으로 배치됩니다.

SimpleStrategy의 그림 표현은 다음과 같습니다.

SimpleStrategy의 Cassandra
SimpleStrategy의 Cassandra

네트워크토폴로지전략 Cassandra

네트워크토폴로지전략 데이터 센터가 두 개 이상인 경우 사용됩니다. NetworkTopologyStrategy에서 복제본은 각 데이터 센터에 대해 별도로 설정됩니다. NetworkTopologyStrategy는 다른 랙의 첫 번째 노드에 도달할 때까지 링에서 시계 방향으로 복제본을 배치합니다. 이 전략은 동일한 데이터 센터의 다른 랙에 복제본을 배치하려고 합니다.

이는 때때로 랙에 장애나 문제가 발생할 수 있는 이유 때문입니다. 그러면 다른 노드의 복제본이 데이터를 제공할 수 있습니다.

다음은 네트워크 토폴로지 전략을 그림으로 표현한 것입니다.

네트워크토폴로지전략 Cassandra
네트워크토폴로지전략 Cassandra

쓰다 Opera에 Cassandra

코디네이터는 복제본에 쓰기 요청을 보냅니다. 모든 복제본이 가동되면 일관성 수준에 관계없이 쓰기 요청을 받게 됩니다.

일관성 수준 성공 확인으로 응답할 노드 수를 결정합니다.

데이터가 커밋 로그에 성공적으로 기록되면 노드는 성공 확인으로 다시 응답하고 memTable.

예를 들어, 복제 인자가 XNUMX인 단일 데이터 센터에서는 XNUMX개의 복제본이 쓰기 요청을 받습니다. 일관성 수준이 XNUMX이면 하나의 복제본만 성공 확인으로 응답하고 나머지 두 개는 휴면 상태로 유지됩니다.

노드 다운이나 다른 문제로 인해 나머지 두 개의 복제본이 데이터를 손실한다고 가정해 보겠습니다. Cassandra 내장된 복구 메커니즘을 통해 행의 일관성을 유지합니다. Cassandra.

여기서는 쓰기 프로세스가 어떻게 발생하는지 설명합니다. Cassandra,

  1. 노드에 쓰기 요청이 오면 우선 커밋 로그에 기록합니다.
  2. 그때 Cassandra mem-table에 데이터를 씁니다. 각 쓰기 요청 시 mem-table에 기록된 데이터는 커밋 로그에도 별도로 기록됩니다. Mem-table은 메모리에 임시로 저장된 데이터이고 Commit log는 백업 목적으로 트랜잭션 기록을 기록합니다.
  3. mem-table이 가득 차면 데이터가 SSTable 데이터 파일로 플러시됩니다.
쓰다 Opera에 Cassandra
쓰다 Opera에 Cassandra

읽기 Opera에 Cassandra

코디네이터가 복제본에 보내는 읽기 요청에는 세 가지 유형이 있습니다.

  1. 직접 요청
  2. 다이제스트 요청
  3. 수리 요청 읽기

코디네이터는 복제본 중 하나에 직접 요청을 보냅니다. 이후 코디네이터는 Consistency Level에 따라 지정된 개수의 Replica에 Digest 요청을 보내고, 반환된 데이터가 업데이트된 데이터인지 확인합니다.

그 후 코디네이터는 나머지 모든 복제본에 다이제스트 요청을 보냅니다. 노드가 오래된 값을 제공하는 경우 백그라운드 읽기 복구 요청이 해당 데이터를 업데이트합니다. 이 프로세스를 읽기 복구 메커니즘이라고 합니다.

제품 개요

  • 이 튜토리얼에서는 Cassandra 내부 구조 및 방법 Cassandra 다양한 단계에서 데이터를 복제하고 쓰고 읽습니다.
  • 또한 여기서는 방법에 대해 설명합니다. Cassandra 프로세스 전반에 걸쳐 일관성 수준을 유지합니다.
  • 구성 요소 Cassandra Archi강의: 노드, 데이터 센터, Cluster, 커밋 로그, Mem-table, SSTable
  • XNUMX개의 복제 요소는 단 하나의 데이터 복사본만 있음을 의미하고, XNUMX개의 복제 요소는 XNUMX개의 서로 다른 노드에 XNUMX개의 데이터 복사본이 있음을 의미합니다.
  • SimpleStrategy는 데이터 센터가 하나만 있는 경우에 사용됩니다.
  • NetworkTopologyStrategy는 데이터 센터가 XNUMX개 이상인 경우에 사용됩니다.