레디 스 복제 프로세스를 설명

레디 스 동기화 (싱크)와 명령 (명령 전파)는 두 단계의 전반에 복사 기능 :

  • 서버에서 상태 동기화 데이터베이스 업데이트되는 기본 데이터베이스 서버의 현재 상태입니다.
  • 명령 서버에서 마스터 데이터베이스에서 불일치의 결과로, 수정 된 기본 데이터베이스 서버의 상태를 확산시키는 데 사용되는 경우 상태, 그래서 뒷면에 기본 데이터베이스 서버에서 일관성있는 상태.

동기

전체와 부분 중복 복제 : 레디 스가 차 동기에서 데이터를 완료 명령을 PSYNC 사용하여 동기화 과정으로 나누어 져 있습니다.

복제의 총 금액 : 보통 주 복사본 장면에 사용, 그것은 데이터의 양이 큰 경우, 주요 노드 및 네트워크에서 멋진 오버 헤드가 발생합니다 노드에 노드에서 전송 된 모든 데이터를 한 번 마스터 노드를 보내드립니다.

부품 복제 : 주된 이유를 처리하기위한 네트워크의 손실은 다시 노드에서 마스터 노드에 연결 복제 시나리오에 따른 네트워크, 같은 플래시 조건이 허용하는 경우, 누락 된 데이터의 슬레이브 노드 교체에 대한 마스터 노드. 데이터의 교환을 효과적으로 전체 양을 복사하는 높은 오버 헤드를 피할 수있는 데이터의 전체 양보다 훨씬 적은이기 때문입니다.

PSYNC 실행 명령 지원은 다음과 같은 구성 요소가 필요합니다

  • 각 노드에서 오프셋 차 복사본
  • 마스터 노드 복제 백 로그 버퍼
  • 마스터 노드 ID

자체 사본 오프셋을 유지 노드에서 복사 참여합니다. 마스터 노드에게 기록 명령을 처리 한 후, 명령의 바이트 길이는 masterreploffset 지표 통계 정보의 복제, 기록을 축적한다. 마스터 노드에서 명령을 수신 슬레이브 노드는 자신의 누적 오프셋을 기록 할 것이며, 두 번째 마스터 노드 오프셋에 따라 해당 복제를보고합니다. 기본 노드에서 오프셋 콘트라스트 복제하여 동일 데이터로부터 마스터 노드 여부를 판정 할 수있다.

복제 백 로그 큐 버퍼는 마스터 노드는 접속 노드에서 생성 된 고정 된 길이가 1MB 기본 크기의 마스터 노드에 저장된다. 기록 명령에 응답하여 주 노드가 명령에만 노드로 전송 될 때, 또한 카피 백 로그 버퍼를 기록.

상기 사본의 부분이 누락 명령을 복사 할 때 백 로그 제한 버퍼 크기를 복사, 가장 최근의 사본이 데이터 복구에 대한 데이터를 저장.

(40)는 동적으로 16 진수 문자열의 ID 각 실행 후 노드 시작 레디 스를 할당됩니다. ID를 실행의 주요 역할은 고유의 마스터 노드와 슬레이브 노드를 저장 마스터 노드 ID를 복사 할 때 자신을 식별하기 위해, 예를 들어, 레디 스 노드를 식별하는 데 사용됩니다.

동기의 전액

 

 

slaveof 명령 실행

  • 그 첫 번째 복사본이기 때문에 1) 조작이 마스터 노드 ID 아니며, 노드에서 명령 송신 시간 PSYNC을? 오프셋 복사 노드 PSYNC 데이터 동기화 명령에서 전송 -1.
  • 2) 마스터 노드는 PSYNC? -1 복제 전류 총량을 해결하기 위해, 응답들은 응답 FULLRESYNC +.
  • 3) 데이터 기억 노드 ID에 응답하여 상기 마스터 노드로부터 수신하고, 상기 오프셋 실행 오프셋.
  • 4) 마스터 노드가 로컬 RDB에 파일을 저장 bgsave 수행 RDB 관련 지식은 볼 수있다 "레디 스 RDB 지속적인 설명을"
  • 5) 마스터 노드는 노드에서 직접 RDB 인쇄 관련 로그를받은 후, 수신 된 RDB 파일에 슬레이브 노드가 로컬 노드에서 데이터 파일로 저장 슬레이브 노드에 RDB 파일을 전송, 당신은 로그 마스터 노드에서 데이터를 볼 수 있습니다 양.

또한, 주목해야한다 많은 양의 데이터에 대해 같은 RDB 파일로서 마스터 노드는 신중한 때 6기가바이트 이상으로 이상 생성. 이상 구성 값 REPL - 제한 시간보다 전송 RDB는 시작 노드는 RDB 파일에서 수신 실패 복제의 전체 양에 이르는, 다운로드 된 임시 파일을 청소합니다.

  • 6) 스냅 샷 동안 마스터 노드에 대한 RDB 노드가 완료에서받은 판독 명령에 대한 응답으로 여전히 기본 노드입니다 저축을 시작하기 때문에이 기간 동안 버퍼 복사본 클라이언트에 저장된 명령을 쓸 것이다 마스터 노드의 RDB 노드에서 파일을로드를 완료 할 때, 마스터 노드는 마스터와 슬레이브 사이의 데이터 일관성을 보장하기 위해, 슬레이브 노드로의 버퍼에 데이터를 전송한다.

RDB의 마스터 노드의 생성과 전송이 너무 긴 경우, 마스터 사본 클라이언트 버퍼 오버 플로우가 발생할 수있다. 버퍼 60에서 소비 또는 직접 256메가바이트보다 대 64메가바이트보다는 마스터 노드 직접 동기화 실패의 총량 결과 클라이언트 접속 복제를 해제 할 경우, 클라이언트 출력 버퍼 제한 슬레이브 256메가바이트 64메가바이트 60의 기본 구성.

  • 이전 데이터 자체 7) 상기 수신 노드로부터 마스터 노드로 전송 된 모든 데이터 후,이 단계는 다음 로그에 대응 지워.
  • 8) 본 공정은 여전히 ​​상대적으로 시간 소모적이며, 확대 된 문서 노드 빈 파일 RDB, RDB로부터 데이터를로드 시작 로그의 총 시간 로딩 RDB 시간차에 의해 결정될 수를 산출한다.
  • 9) 백그라운드에서 RDB 파일을 생성하고, 명령이 현재 수행 물품의 모든 레코드로부터 버퍼를 사용하는 마스터 SYNC 명령 실행 BGSAVE 명령을 수신.
  • 10) 명령 BGSAVE 마스터 서버 실행이 완료되면 마스터 서버는 때 명령 BGSAVE 주 서버에 자체 데이터베이스를 업데이트, 서버가 문서에서 수신 서버로의 파일로부터 생성 RDB 명령을 GBSAVE와 RDB를로드합니다 데이터베이스 상태.
  • 11) 주 서버가 이러한 쓰기 명령을 수행하는 서버에서 서버로 전송 된 모든 쓰기 명령의 상태의 내부 버퍼에 기록됩니다 상태가 현재있는 기본 데이터베이스 서버에 자체 데이터베이스를 업데이트합니다.

모든 프로세스가 전체 금액의 복사 분석함으로써, 독자 복제의 전체 양이 매우 시간이 많이 걸리는 작업입니다 찾을 수 있습니다. 그것은 시간 오버 헤드가 포함되어있다 :

  • 마스터 노드 bgsave 시간
  • RDB 파일 전송시 네트워크
  • 노드 데이터로부터 시간 비우기
  • 노드 시간에서 RDB로드
  • 가능한 AOF 재 작성 시간

단지 많은 시간을 소비하지 않을 동기화 프로세스의 전체 량은 지속성 관련 동작 및 네트워크 데이터 전송 다수는 마스터 서버 노드로부터 많이 소비 할있을 것이다 여기서 CPU, 메모리, 네트워크 자원의 기간. 따라서, 최초의 동기식 복제뿐만 아니라, 다른 장면 전액이 중복을 피해야한다 피할 수없는 전체 양을 사용하는 부분 동기화를 수행하는 것입니다.

부분 동기화

주요 부분은 사본, 사용 PSYNC {runId가} {오프셋} 명령을 달성 할 수 있도록 너무 높은 비용의 전액에 대한 사본 최적화 조치 레디 스입니다. 노드가 마스터 노드에서 복사 될 때, 네트워크 명령 플래시 또는 다른 비정상적인 손실이 발생한 경우, 마스터 노드는 노드로부터 손실 된 명령 데이터의 교체가 필요한 경우, 본 바로 데이터의 기본 노드 복제 백 로그 버퍼 부 따라서, 노드의 마스터 사본의 일관성을 보장하는 노드로부터 전송. 이러한 여분의 데이터는 통상적으로 데이터의 총량보다 훨씬 적은 부분이기 때문에, 오버 헤드가 작다.

 

 

  • 더 REPL - 타임 아웃 시간보다, 마스터 노드 실패에서 생각하고 복제 연결을 중단 할 경우 1) 마스터 인터럽트는 네트워크에서 노드 사이에 발생합니다.
  • 기본 노드 중 2) 마스터 - 슬레이브 연결이 명령에 응답 여전히 손실되지만 연결이 복사 명령이 슬레이브 노드로 보낼 수 없습니다 중단하지만, 마스터 노드 내부의 백 로그 복사 버퍼 (REPL-백 로그 버퍼가)있다, 당신은 여전히 ​​가장 최근의 기록을 저장할 수 있습니다 명령 데이터, 기본 최대 캐시 1메가바이트

  • 3)되면 다시 마스터 노드에 접속 된 노드로부터의 회복은 네트워크의 마스터 노드.

  • 4) 접속 동작이 마스터 노드 ID를 저장하기 때문에, 마스터로부터 복원되어 이전 노드로부터 복사 된 자신의 오프셋 때. 마스터 노드 매개 변수로 전송하는 PSYNC 따라서, 복사 작업 교체를 필요로한다.

  • 5) 만약 균일 자체 일관성 runId PSYNC 명령 파라미터, 이전에 복사 기술 된인지 먼저 확인을 수신 한 후에, 마스터 노드는 현재의 기본 노드는, 오프셋 파라미터에 따라 자기 복제 잔고 버퍼 후 보면 데이터 오프셋 양 후 버퍼는, +는 노드로부터 계속 송신에 응답하여, 복제 부분을 나타낸다.

  • 6), 슬레이브 노드는 마스터 노드는 마스터 카피는 버퍼 잔량의 데이터를 복사하는 정상 상태로 상쇄되도록한다.

심장의 고동

도에 도시 한 바와 같이, 하트 비트 사이의 지속적인 연결을 유지하고, 서로에 명령을 전송하는 복제의 확립 후, 마스터 노드로부터.

다음과 같이 기본 하트 비트 메커니즘을 분석하는 것은입니다 :

  • 1) 마스터 노드에서 각각 = 다른 각 클라이언트가 연통 하트 비트 메커니즘 모델링 노드 접속 상태 플래그에서 클라이언트 뷰 복사 관련 정보를 클라이언트에서 명령, 상기 접속 상태 플래그 = M의 마스터 노드를 갖는다 S.
  • 2) 디폴트 마스터 노드가 매 10 초마다 슬레이브 노드로 핑 (ping) 명령을 송신하고, 남아있는 노드로부터의 접속 상태를 판정한다. 전송 주파수 파라미터 REPL 핑 슬레이브 기간에 의해 제어 될 수있다.
  • 3) 노드 replconf의 ACK에서 1 초마다 전송 메인 스레드 명령 오프셋 {}, 마스터 노드 보고서는 현재의 오프셋을 복제한다.

replconf 명령뿐만 아니라 실시간 네트워크에서 마스터 노드의 상태를 모니터링뿐만 아니라 노드 복사 보고서에서 오프셋. 노드로부터 손실 된 데이터를 다음의 마스터 노드의 캐시 복사본이 손실 된 데이터는 상기 슬레이브 노드로 전송 당긴 경우, 마스터 노드는 노드의 오프셋 체크 업로드 데이터 복사가 손실된다.

비동기 복제 및 명령의 보급

마스터 노드는 읽기 및 데이터를 작성하지에 대한 책임, 그것은 또한 동기화 할 노드에서 쓰기 명령에 대한 책임이 있습니다. 쓰기 명령을 처리 한 후 노드 복제의 완료를 기다리지 않고 클라이언트에 직접 주요 노드 자체로 돌아갈 것을 의미 전송 프로세스가 비동기 적으로 수행 명령을 작성합니다.

 

 

이 비동기 전달 과정이 명령에 의해 처리되고,이 명령은 모든 서버에서 전송 쓸 것뿐만 아니라, 팀은 또한 내부의 백 로그 버퍼를 복사 명령을 작성합니다.

추신

개인 블로그, 게임에 오신 것을 환영합니다

 

추천

출처www.cnblogs.com/remcarpediem/p/11701234.html