이러한 요구가있다 :
제이미가에 위치한 두 개의 계정을 가지고, B 두 개의 데이터베이스는 샤오 밍은에서의 B에 자금을해야합니다.
우리는 어떻게 달성합니까?
다음과 같은 방법을 달성하기 위해 문제가있는 경우를 참조하십시오.
- 데이터베이스 연결 (A)는, 연결 connA을 취득
- connA 열린 트랜잭션
- 라이브러리 펀드는 100 감소
- 링크 라이브러리 B, connB 연결을 취득
- connB 열린 트랜잭션
- B (100)의 증가 라이브러리 자금
- connA.commit ()
- connB.commit ()
위의 동작은, 일반적으로 아무 문제가 없다.
7 단계가 성공하면, 네트워크 문제는, 8 단계는이 시간에 결과가 제출 실패 : 자금이 100 감소 라이브러리를, B 라이브러리 자금이 증가하지 않은, 그것은 네트워크 문제는 우리의 사업의 실패로 이끄는 것입니다 네트워크 요소는 제어 할 수없는 요인 프로그램뿐만 아니라 7 후에 실행되어 같은 다른 시스템 전원이 갑자기 동일한 결과가 발생할 수있다. 비즈니스에 미치는 영향에 데이터 오류의 결과로 상대적으로 크다.
분산 트랜잭션이 이해 될 수있다 : 비즈니스 작업을 여러 하위 작업을 포함, 각 하위 사업은 별도의 우리가 고려해야 거래, 이러한 작업이 성공적 자녀, 또는 실패했는지 확인하는 방법입니다.
궁극적 인 일관성은 무엇입니까?
, 프로 시저 B는 자본 라이브러리 B의 증가없이 결과, 라이브러리를 분리 connB 네트워크 문제로 인해 위의 전송, 라이브러리가 감소 자본을 가지고, 네트워크가 복원되면 네트워크 문제는 복원 할 수있는 시스템이 있습니다 B 플러스 수도 위해, 최종 데이터가 올 수 있도록 상기 라이브러리 자금의 중간 부분이 일치 AB 이번에 ( 100 라이브러리의 감소, 100 B 라이브러리는 일관성 데이터의 증가없이 증가한다 ),하지만 결국 어떤 점은 시간에 데이터가 일관성이된다. 시간 불일치 문제를 최소화 할 수 있어야하면 시스템이 고려 될 필요가있다 .
분산 트랜잭션, 우리는 특정 기간 내에 일치하지 않는 데이터를 받아 들일 수 있지만, 어떤 점에서 최종 데이터가 일치한다.
https://www.cnblogs.com/itsoku123/p/10875203.html