분산 시스템의 데이터 일관성 문제를 이해하십시오.

Lao Liu는 곧 취업을 앞둔 대학원 2 학년생입니다. 한편으로 블로그를 작성하는 것은 빅 데이터 개발의 지식 포인트를 검토하고 요약하는 것이고 다른 한편으로 그는 가르치는 파트너를 돕고 싶습니다. 자신처럼 프로그래밍합니다. Lao Liu는 빅 데이터 개발을 독학하고 있기 때문에 블로그에 분명히 몇 가지 단점이있을 것입니다. 모두가 비판하고 수정할 수 있기를 바랍니다. 함께 발전합시다!
오늘은 분산 시스템의 데이터 일관성에 대해 말씀 드리겠습니다. 이것은 서버 아키텍처 배포의 개발 프로세스에서 시작해야합니다! 기사가 길기 때문에 인내심을 갖고 시청하십시오. 놓치지 마세요!

1. 배경

1.1. 중앙 집중식 서비스

가장 먼저 이야기 할 것은 중앙 집중식 서비스인데 중앙 집중식 서비스 란 무엇입니까? 즉, 모든 것이 하나의 서버에서 수행됩니다.

중앙 집중식 시스템은 하나 이상의 주 컴퓨터로 구성되어 중앙 노드를 형성합니다. 데이터는이 중앙 노드에 저장되고 전체 시스템의 모든 서비스는이 중앙 노드에 있으며 시스템의 모든 기능은 그것.

즉, 중앙 집중식 시스템에서 각 클라이언트는 데이터의 입력 및 출력 만 담당하며 데이터 저장 및 제어 처리는 완전히 호스트에 맡겨 완료됩니다.

여기에 사진 설명 삽입
중앙 집중식 서비스의 장점 :

간단한 구조 간단한
배포 간단한
프로젝트 구조

그러나 단점도 매우 분명합니다.


메인 프레임 의 R & D 및 유지 보수 비용 매우 높습니다. 메인 프레임은 매우 비쌉니다.
단일 장애 지점이 있습니다. 메인 프레임이 중단되고 모든 서비스가 종료됩니다
. 메인 프레임의 성능 확장은 Moore의 법칙에 의해 제한됩니다.

무어의 법칙은 무엇입니까?

무어의 법칙은 인텔 창립자 중 한 명인 고든 무어가 제안했습니다. 내용은 가격이 변하지 않으면 집적 회로에 수용 할 수있는 부품 수가 약 18 ~ 24 개월마다 두 배가되고 성능도 두 배가됩니다. 즉, 1 달러당 구매할 수있는 컴퓨터 성능은 18-24 개월마다 두 배 이상이 될 것입니다. 출처 : Baidu 백과 사전

무어의 법칙에 따르면 수직 확장은 이론적으로 제한되어 있으므로 수평 확장 만 고려할 수 있으며 이론적으로 수평 확장은 이론적으로 무제한입니다!

수직 확장이 제한되어 있으므로 수평 확장을 시도해 보시면 배포됩니다!

1.2. 분산 서비스

분산이란 값 비싼 메인 프레임에 비해 더 일반적인 컴퓨터를 사용하여 분산 클러스터를 형성하여 외부 서비스를 제공 할 수 있음을 의미합니다. 컴퓨터가 많을수록 CPU, 메모리, 스토리지 리소스 등이 많을수록 처리 할 수있는 동시 액세스 양도 많아집니다.

예를 들어, 분산 시스템으로 구현되는 전자 쇼핑몰은 기능적으로 여러 애플리케이션으로 분할되어 서로 다른 기능을 제공하여 분산 시스템을 형성하여 외부 서비스를 제공 할 수있다.

따라서 분산 시스템의 컴퓨터는 공간에 거의 제한이 없으며 이러한 컴퓨터는 다른 캐비닛에 배치되거나 다른 컴퓨터 실에 배치되거나 다른 도시에 배치 될 수 있습니다.

여기에 사진 설명 삽입
중앙 집중식 시스템과 비교할 때 분산 시스템은 더 높은 비용 성능, 더 강력한 처리 기능, 더 높은 안정성 및 우수한 확장 성을 제공합니다.

그러나 분산 솔루션은 웹 사이트의 높은 동시성 문제를 해결하지만 다른 문제도 발생합니다.

우선, 배포에 필요한 조건은 네트워크이며, 이는 성능 및 서비스 기능에 특정 영향을 미칠 수 있습니다. 둘째, 클러스터에 서버가 많을수록 서버 다운 타임 가능성이 높아집니다. 또한 서비스가 클러스터에 분산되어 있기 때문에 사용자의 요청은 하나의 머신에만 해당되므로 일단 잘 처리되지 않으면 데이터 일관성 문제가 발생하기 쉽습니다.

1.3. 분산 된 이상

1. 비정상적인 통신 : 네트워크를 사용할 수없는 경우 (메시지 지연 또는 손실) 분산 시스템 내에서 네트워크 통신이 불가능하여 데이터 손실 및 여러 노드의 불일치가 발생할 수 있으며 데이터 장애가 발생할 수 있습니다.

2. 네트워크 파티션 : 네트워크가 연결되어 있지는 않지만 각 서브 네트워크의 내부 네트워크는 정상이므로 전체 시스템의 네트워크 환경이 여러 개의 격리 된 영역으로 분할되고 분산 시스템은 로컬로 인해 데이터 불일치가 발생합니다. 작은 클러스터.

3. 노드 장애 : 서버 노드의 다운 타임 현상.

4. 저장된 데이터 손실 : 상태 저장 노드의 경우 데이터 손실은 상태 손실을 의미하며 일반적으로 저장된 상태는 다른 노드에서만 읽고 복원 할 수 있습니다. 솔루션 : 다중 복사 메커니즘을 사용하십시오.

1.4 분산 시스템의 성능 지표 측정

1. 성능 : 이것은 매우 성가신 문제로, 높은 처리량을 추구하는 시스템의 경우 낮은 대기 시간을 달성하기 어려운 경우가 많으며 시스템의 평균 응답 시간이 길면 QPS를 개선하는 것도 어렵습니다.

시스템 처리량, 시스템은 한 번에 처리 할 수있는 총 데이터 양을 나타내며, 시스템은 일반적으로 총 데이터 양을 측정하기 위해 초당 처리 할 수 ​​있습니다.
시스템 응답 지연 시간은 특정 기능을 사용하는 데 필요한 전체 시스템을 나타냅니다. ;
시스템 동시성은 시스템이 특정 기능을 동시에 완료 할 수있는 능력을 말하며 일반적으로 QPS에 의해 측정됩니다.

2. 가용성 : 시스템 가용성 (가용성)은 다양한 이상 상황에서 서비스를 올바르게 제공하는 시스템의 능력을 의미합니다. 가용성은 시스템의 견고성을 측정하고 시스템의 내결함성을 반영하는 중요한 배포 지표입니다.

3. 확장 성 : 시스템의 확장 성은 클러스터 시스템의 규모를 확장하여 시스템 성능 (처리량, 지연, 동시성), 저장 용량 및 컴퓨팅 성능을 향상시키는 분산 시스템의 특성을 나타냅니다.

4. 일관성 : 가용성을 향상시키기 위해 분산 시스템은 항상 복사 메커니즘을 사용하므로 복사 일관성 문제가 발생합니다.

예를 들어 데이터 조각이 분산 시스템에 저장되고 동일한 데이터를 저장하는 여러 노드가 있습니다. 여러 개의 서로 다른 노드에 저장된 데이터가 동일하지 않은 경우 여러 고객이 방문 할 때 발생합니다. 첫 번째 고객의 방문 결과는 A이고 두 번째 고객의 방문 결과는 B입니다. 두 고객은 서로 다른 결과에 액세스합니다. 일관성이 잘되지 않았다는 것입니다.

그러나 우수한 분산 시스템을 설계하는 경우 높은 처리량, 낮은 응답 지연, 강력한 동시성, 고 가용성, 강력한 확장 성 및 우수한 일관성과 같은 특성을 가져야합니다. 그러나 모든 기능이 만족 스럽지는 않습니다. 몇 가지 기능이 모순되며이를 극복 할 방법을 찾아야합니다!

분산 시나리오에서 정말 복잡한 것은 데이터 일관성 문제입니다!

1.5. 일관성 이해

일관성의 유형도 여러 가지가 있는데 여기에 Liu가 알고있는 세 가지가 있습니다.

강력한 일관성 : 쓰기 작업이 완료된 후 읽기 작업은 최신 데이터를 읽을 수 있어야합니다. 평신도의 용어로 클라이언트가 결과를 작성하는 한 최신 데이터에 액세스 할 때마다 얻을 수 있습니다. 그러나 분산 시나리오에서는 구현이 어렵고 후속 Paxos 알고리즘, Quorum 메커니즘, ZAB 프로토콜 등을 구현할 수 있습니다!

약한 일관성 : 최신 데이터 확보가 보장되지 않으며 이전 데이터를 가져올 수 있습니다.

최종 일관성 : 중간 상태에 관계없이 일정 기간 후에 최종 시스템의 데이터가 정확함을 보장합니다. 또한 동시성이 높은 시나리오에서 가장 널리 사용되는 일관성 모델입니다.

1.6. 분산 일관성의 역할

분산 일관성에 대해 많이 말했지만 그 역할은 무엇입니까?

1. 시스템의 가용성을 높이기 위해 일반적으로 다중 복사 메커니즘을 사용합니다. 다중 복사는 분산 일관성 문제가 있습니다. 시스템의 가용성을 향상시키고 시스템의 가용성을 높이기위한 것입니다. 단일 노드 장애 지점.

2. 시스템의 전반적인 성능 향상 데이터는 클러스터의 여러 노드에 분산되어 있으며 모두 사용자에게 서비스를 제공 할 수 있습니다.

Lao Liu가 너무 많이 말했는데 소개하고 싶은 것이 무엇인지 짐작 하셨나요?

위에서 언급 한 내용은 분산 시스템에서 데이터 일관성 문제로 이어질뿐입니다! 분산 시스템의 데이터 일관성 문제를 해결하기 위해 사용하는 솔루션은 다음과 같습니다.

분산 트랜잭션 + 트랜잭션
분산 합의 알고리즘
쿼럼 메커니즘
CAP 및 BASE 이론

2. 분산 트랜잭션

분산 시스템에서 각 노드는 트랜잭션 작업의 성공 여부를 알 수 있지만 시스템의 다른 노드의 트랜잭션 성공 여부는 알 수 없습니다. 이로 인해 분산 시스템의 노드 상태에 불일치가 발생할 수 있습니다. 따라서 트랜잭션이 서버 노드에 걸쳐 있어야하고 트랜잭션의 ACID 특성이 보장되어야하는 경우 코디네이터 역할을 도입해야합니다. 그런 다음 트랜잭션 작업을 수행하는 다른 노드를 참가자라고합니다.

실생활에서 분산 트랜잭션의 두 가지 일반적인 제출 모드가 있습니다 : 2PC와 3PC.

2.1. 2PC 제출 프로세스

바로 위에 :

여기에 사진 설명 삽입
나는 A에게 한 가지 일을하고, B는 다른 일을하게하고, 두 가지는 분산 트랜잭션에서 동시에 성공하거나 실패해야합니다. 데이터 일관성을 달성하는 방법은 무엇입니까?

2PC는 두 단계로 나뉩니다.

첫 번째 단계 : 트랜잭션을 실행하되 커밋하지 마십시오.

두 번째 단계 : 코디네이터가 첫 번째 단계의 모든 트랜잭션 참여자로부터 긍정적 인 피드백을 받으면 (트랜잭션이 성공적으로 실행 됨),

모든 참가자가 거래를 수행하도록 주문을 보내십시오.

2.2. 2PC 문제

2PC의 두 제출 단계와 다이어그램을 보면 숙련 된 사람들이 내부 문제를 한눈에 볼 수 있습니다.

1 차단 문제

코디네이터는 참가자에게 명령을 보내고 명령은 네트워크를 통해 전송되기 때문에 다른 참가자로부터 명령을받는 순서와 지연이 있습니다.

예를 들어, 참가자 A는 곧이를 받았으며 참가자 B는 네트워크에 문제가있어 주문을받는 데 오랜 시간이 걸렸습니다. 참가자 A는 보내는 피드백을 신속하게 처리 한 반면 참가자 B는 오랜 시간 후에 피드백을 보내서 코디네이터의 대기 시간이 특히 길어졌습니다.

이것은 리소스를 낭비하고 성능에 영향을 미치는 매우 일반적인 차단 문제입니다!

2 내결함성 메커니즘이 없으며 단일 장애 지점 문제가 있습니다.

트랜잭션 코디네이터는 전체 분산 트랜잭션의 핵심입니다. 코디네이터가 실패하면 위의 그림을 보면 참가자가 커밋 / 롤백 알림을받지 못하여 참가자 노드가 트랜잭션에 포함되지 않음을 알 수 있습니다. 완료됩니다. 중간 상태입니다.

3 일관성없는 데이터

두 번째 단계에서 로컬 네트워크 문제가 발생하면 한 참가자는 제출 된 명령을 수신하고 다른 참가자는 제출 된 명령을 수신하지 않아 노드간에 데이터 불일치가 발생합니다.

2.3. 3PC

3PC는 3 단계 커밋을 의미하며 2 단계 커밋의 개선 된 버전으로 2 단계 커밋 프로토콜의 "제출 트랜잭션 요청"을 2 단계로 나누어 cancommit, precommit 및 docommit의 3 단계를 구성합니다.

2PC를 기반으로 CanCommit 스테이지를 추가하는 것 외에도 타임 아웃 메커니즘도 도입되었습니다. 트랜잭션 참가자가 지정된 시간 내에 코디네이터로부터 커밋 / 롤백 명령을받지 못하면 자동으로 로컬 커밋을 수행하여 코디네이터의 단일 실패 지점을 해결할 수 있습니다.

2.4. 실행 프로세스 분석

첫 번째 단계 : CanCommit 단계

첫 번째 단계를 준비 ​​할 때 먼저 각 참가자에게 트랜잭션 작업 및 타임 아웃 메커니즘을 수행 할 수 있는지 물어 봅니다. 참가자는 일정 기간 동안 코디네이터로부터 지침을받지 못하면 자동으로 제출합니다.

두 번째 단계 : PreCommit 단계

1. 각 참가자가 동의하면 코디네이터는 모든 참가자에게 사전 제출 요청을 보내고 사전 제출 단계에 들어갑니다.

2. 참가자가 사전 커밋 요청을 수신 한 후 트랜잭션 작업을 실행합니다.

3. 참가자가 로컬 트랜잭션을 수행 한 후 코디네이터에게 Ack를 전송하여 제출할 준비가되었음을 알리고 코디네이터의 다음 지시를 기다립니다.

4. 코디네이터가 거부 또는 타임 아웃으로 사전 커밋 응답을 수신하면 인터럽트 트랜잭션 작업을 실행하고 각 참가자에게 트랜잭션을 인터럽트하도록 알립니다.

5. 참가자는 중단 된 트랜잭션을 수신하거나 타임 아웃을 기다린 후 직접 트랜잭션 / 제출을 적극적으로 중단합니다.

세 번째 단계 : doCommit 단계

1. 코디네이터는 모든 참여 Ack를 수신 한 다음 사전 제출에서 제출 섹션으로 들어가 각 참가자에게 제출 요청을 보냅니다.

2. 참가자는 제출 요청을 받고 공식적으로 트랜잭션 (커밋)을 제출하고 제출 결과 Y / N을 코디네이터에게 피드백합니다.

3. 코디네이터는 모든 피드백 메시지를 수신하고 분산 트랜잭션을 완료합니다.

4. 코디네이터가 타임 아웃 기간 동안 피드백을받지 못하면 인터럽트 트랜잭션 명령이 전송됩니다.

5. 참가자가 트랜잭션을 중단하라는 지시를받은 후 트랜잭션 로그를 사용하여 롤백합니다.

6. 참가자는 롤백 결과를 피드백하고 코디네이터는 피드백 결과 또는 초과 근무를 수신하고 중단 된 트랜잭션을 완료합니다.

2.5. 3PC 문제

3PC에서도 데이터 불일치가있을 수 있습니다. 세 번째 단계에서는 모든 참가자가 트랜잭션을 롤백 할 수 있지만 한 참가자가 지정된 시간 내에 수신하지 않으면 기본적으로 커밋되고 데이터 불일치가 발생합니다. 네트워크 문제로 인해 특히 두 번째 단계와 세 번째 단계 사이에 데이터 불일치가 발생하기 쉽습니다.

3. 분산 합의 알고리즘

2PC와 3PC의 원칙을 바탕으로 우수한 개발자들이 분산 합의 알고리즘을 구현했으며, 여기서 Lao Liu는 Poxos 알고리즘 및 ZAB 프로토콜과 관련된 개념에 대해 간략하게 설명합니다. Paxos 알고리즘과 ZAB 프로토콜에 대해 자세히 알고 싶다면 Liu Liu가 일자리 찾기를 마친 후 Zookeeper 소스 코드에 대한 특별 기사를 작성하십시오.

3.1. Paxos 알고리즘

Paxos 알고리즘은 그리스어 이야기를 사용하여 설명합니다. Paxos에는 세 가지 역할이 있습니다.

1. 제안자 (제안자, 제안서를 발행하는 데 사용됨),

2. 수락 자 (수락자는 제안을 수락하거나 거부 할 수 있음),

3. 학습자 (학습자, 선택한 제안서에 대한 연구, 수락 자의 절반 이상이 제안을 수락하면 승인 됨).

사육사 클러스터에 매핑 :

리더 : 제안 의장 (단일 실패 지점에 대한 해결책은 리더 선출 메커니즘 임)

추종자 : 투표를 위해 인민 대표 대회에 대표

관찰자 : 국가의 모든 사람을 수동적으로 받아들입니다.

그리고 특히 잘 알려진 메커니즘이 있습니다 : 의회 시스템

그들 중 절반 이상이 합의에 도달하도록 보장하는 합의

Paxos 알고리즘을 요약하면 모든 트랜잭션 요청은 전역 적으로 고유 한 서버에 의해 조정되고 처리되어야하며 이러한 서버를 리더 서버라고하고 나머지 다른 서버는 팔로워 서버가됩니다.

리더 서버는 클라이언트 트랜잭션 요청을 트랜잭션 제안으로 변환하고 제안을 클러스터의 모든 팔로워 서버에 배포하는 역할을합니다. 그 후 리더 서버는 모든 팔로워 서버의 피드백을 기다려야합니다. 팔로어 서버의 절반 이상이 올바른 피드백을 제공하면 리더는 다시 한 번 모든 팔로워 서버에 커밋 메시지를 배포하여 요청합니다. 이전 제안을 제출하십시오.

3.2. ZAB 계약

ZooKeeper의 기본 작동 메커니즘은 ZAB에 의해 실현됩니다. 크래시 응답과 메시지 브로드 캐스트의 두 가지 주요 기능을 구현합니다.

데이터 일관성을 보장하기위한 ZAB 프로토콜의 두 가지 중요한 기능은 다음과 같습니다.

1. ZAB 프로토콜은 리더 서버에서 커밋 된 트랜잭션이 최종적으로 모든 서버에서 커밋되도록해야합니다.

2. ZAB 프로토콜은 리더 서버에서만 제안 된 트랜잭션이 삭제되도록해야합니다.

단일 실패 지점을 해결하기 위해 리더 선택 알고리즘이 있습니다. 리더 선택에서 리더 선택 알고리즘이 새로 선출 된 리더 서버가 클러스터에있는 모든 시스템 중 가장 높은 트랜잭션 번호 (ZXID)를 가진 트랜잭션 제안을 갖도록 보장 할 수 있다면 새로 선택된 리더가 모든 권한을 가져야 함을 보장 할 수 있습니다. 제출 된 제안.

각 트랜잭션 실행에는 숫자가 있으므로 가장 높은 트랜잭션 번호는 최신 트랜잭션, 즉 최신 데이터를 나타냅니다. 위에서 언급 한 ZAB 계약에 따라 ZooKeeper는 분산 시스템 데이터의 일관성을 실현합니다!

4. 비둘기 둥지 원리

간략한 설명 : n 개의 새장과 n + 1 개의 비둘기가있는 경우 모든 비둘기는 비둘기 새장에 보관되며 적어도 하나의 새장에는 최소한 2 개의 비둘기가 있습니다.

여기에 사진 설명 삽입

5. 쿼럼 NWR 메커니즘

쿼럼 NWR : 쿼럼 메커니즘은 일반적으로 분산 시나리오에서 데이터 보안을 보장하고 분산 환경에서 최종 일관성 투표 알고리즘을 달성하기 위해 사용됩니다. 이 알고리즘의 주요 원리는 비둘기 둥지 원리에서 비롯됩니다. 가장 큰 장점은 강력한 일관성을 얻을 수있을뿐만 아니라 일관성 수준을 사용자 지정할 수 있다는 것입니다!

N : 총 노드 수

W : 성공한 총 쓰기 수

R : 총 읽기

W + R> N 일 때 최신 데이터 읽기, 즉 강력한 일관성이 보장됩니다! 왜 그렇게 말하겠습니까?

여기에 사진 설명 삽입
위의 그림과 같이 4 개의 박스가 있고 3 개의 박스에 물건이 들어 있는데 데이터가 들어있는 박스를 얻을 수 있는지 어떻게 확인할 수 있나요? 상자에 물건을 넣을 때 최소한 두 개의 상자를 사용할 수 있습니다!

이 원칙을 사용하면 보장되는 한 (W + R> N) 최신 데이터를 읽을 수 있으며 데이터 일관성 수준은 읽기 및 쓰기 복사본 수의 제약 조건에 따라 강력한 일관성을 얻을 수 있습니다!

이제 토론은 다음 세 가지 상황으로 나뉩니다. 전제는 N이 변하지 않기로 결정되었습니다!

W = 1 , R = N , 한 번 쓰기 모두 읽기

분산 환경에서 복사본을 작성하는 것은 무언가가있는 상자 하나만있는 것과 같습니다. 최신 데이터를 읽으려면, 즉 상자에 무언가를 가져 오려면 모든 노드를 읽은 다음 최신 버전의 값을 가져와야합니다. 쪽으로. 쓰기 작업은 효율적이지만 읽기 작업은 비효율적입니다. 일관성은 높지만 파티션 내결함성이 낮고 가용성이 낮습니다.

W = N , R = 1 , 읽기 전용 모두 쓰기

분산 환경에서는 동기화 후 모든 노드를 읽을 수 있으므로 노드를 읽는 한 최신 데이터를 읽을 수 있습니다. 읽기 작업은 효율적이지만 쓰기 작업은 비효율적입니다. 파티션의 내결함성, 일관성 불량, 구현 난이도 및 가용성이 높습니다.

W = Q, R = Q 여기서 Q = N / 2 + 1

노드의 절반 이상을 쓴 다음 노드의 절반 이상을 읽고 읽기 및 쓰기 성능의 균형을 달성하는 것으로 간단히 이해할 수 있습니다. 읽기와 쓰기 성능이 균형을 이루는 일반 애플리케이션에 적합합니다. 예를 들어 N = 3, W = 2, R = 2, 파티션 내결함성, 가용성 및 일관성이 균형을 이룹니다.

그것이 ZooKeeper가하는 일입니다! 세 번째 경우가 사용됩니다!

6. CAP 이론

위의 내용에 따르면 강력한 일관성을 달성하면 고 가용성을 달성하기 어렵고, 두 가지는 매우 모순적입니다. 따라서 CAP 이론은 분산 시스템이 C, A, P의 세 가지 요구 사항을 동시에 충족 할 수 없다고 말합니다.

C : 일관성, 강력한 일관성

분산 환경에서 데이터의 여러 사본을 일관되게 유지

A : 가용성, 고 가용성

시스템에서 제공하는 서비스는 항상 이용 가능해야하며, 사용자의 모든 작업 요청은 항상 제한된 시간 내에 결과를 반환 할 수 있습니다.

P : Partiton Tolerance 파티션 내결함성

분산 시스템에 네트워크 파티션 오류가 발생하더라도 일관성과 가용성을 충족하는 외부 서비스를 제공 할 수 있어야합니다.

분산 시스템은 C, A, P의 세 가지 요구 사항을 동시에 충족 할 수 없으므로 선택하는 방법은 무엇입니까?

CAP는 3에서 2 개만 선택할 수 있습니다. 분산 시스템에서는 내결함성 P가 필수이므로 현재 두 가지 상황 만 있습니다. 네트워크 문제로 인해 오류 반환 또는 차단 대기가 발생합니다. 전자는 일관성을 희생하고 후자는 후자를 희생합니다. 유용성을 희생합니다.

독립 실행 형 소프트웨어의 경우 P는 다르게 간주되므로 MySQL과 같은 CA 유형이어야합니다.

분산 소프트웨어의 경우 P를 고려해야하므로 A와 C를 고려할 수없는 경우 HBase, Redis 등과 같이 A와 C 만 계량 할 수 있습니다. 이 서비스는 기본적으로 사용할 수 있으며 데이터는 최종적으로 일관성이 있습니다. 따라서 BASE 이론이 탄생했습니다.

7. 기본 이론

대부분의 경우 실제로는 강력한 일관성이 반드시 필요하지는 않습니다. 일부 비즈니스는 어느 정도의 지연 일관성을 허용 할 수 있습니다. 따라서 효율성을 고려하기 위해 최종 일관성 이론 BASE가 개발되었습니다. 핵심 아이디어는 다음과 같습니다. 강력한 일관성을 얻을 수 없습니다. 그러나 각 응용 프로그램은 자체 비즈니스 특성에 따라 시스템의 궁극적 인 일관성을 달성하기 위해 적절한 방법을 채택 할 수 있습니다.

한마디로 극단적 인 행동을 취하지 마십시오 .BASE는 CAP 이론에서 C와 A의 무게를 측정 한 결과입니다.

BASE 이론은 강력한 일관성이 아니라 최종 일관성을 달성합니다. 고 가용성이 아니라 기본 가용성입니다.

기본적으로 사용 가능 : 기본적으로 사용 가능함은 분산 시스템이 실패 할 때 코어를 사용할 수 있도록 가용성의 일부가 손실 될 수 있음을 의미합니다. 예 : Taobao Double 11, 시스템의 안정성을 보호하기 위해 정상적인 주문, 다른 에지 서비스를 일시적으로 사용하지 못할 수 있습니다.

최종 일관성 : 최종 일관성이란 시스템의 모든 데이터 복사본이 일정 시간 후에 마침내 일관성있는 상태에 도달 할 수 있음을 의미합니다.

앞으로 분산 시스템을 개발하면 비즈니스에 따라 고 가용성 또는 강력한 일관성을 추구 할 것인지 결정할 수 있습니다!

8. 요약

글쎄요, 분산 시스템의 데이터 일관성 문제는 거의 같습니다 Old Liu는 주로 분산 시스템 일관성의 배경과 구현에 대해 이야기했습니다. 현재 수준이 너희들만큼 좋지는 않지만 Lao Liu는 여전히 더 나아지고 더 많은 독학 파트너를 돕기를 희망합니다.

관련 질문이 있으시면 공식 계정 인 Lao Liu로 연락 주시고 열심히 노력하고 있으며 Lao Liu와 즐거운 교류를하시기 바랍니다. 도움이되었다고 느끼시면 마음에 드시고 팔로우 해주세요!
여기에 사진 설명 삽입

추천

출처blog.csdn.net/qq_36780184/article/details/112440446