여러 가지 방법으로 분산 트랜잭션

비즈니스 요구에, 같은 사용자가 필요한 공제 상품 재고 모듈을 구매 한 사용자 모듈에 큰 응용 프로그램, 주문 모듈, 제품 모듈, 각 모듈은 자체 데이터베이스를 가지고 같은 비즈니스 요구에 따라 분할 할 수 주문, 주문 데이터의 필요성이 두 데이터베이스가 동일한 트랜잭션에서 수행되는 것을 보장하기 위해이 시간을 추가 할 수 있도록이 분산 된 트랜잭션을 모듈

1. LCN 트랜잭션 모드
첫째, 원칙은 소개 :
LCN 모드 제어 거래의 TxManager 조화에 의해 다음, 방법의 프록시 연결의 로컬 업무를 운영함으로써 달성된다. 로컬 트랜잭션이 커밋 또는 롤백 작업이 연결이 거짓 수행 닫을 때, 프록시 연결은 연결 풀 관리를 LCN 것입니다.
둘째, 특성 모드 :
이 모드는 낮은 임베디드 코드입니다.
이 모드는 제한되고 접속 대상물에 의해 제어 될 수있는 로컬 트랜잭션 모듈의 접속 대상물이 존재한다.
트랜잭션 커밋이 모드에서 롤백은 로컬 업체의 업무, 높은 보호를위한 데이터 일관성에 의해 제어됩니다.
거래와 프록시 모드 연결에 결함 거짓말은 해당 연결과 관련된 시간을 증가, 모두 연결을 해제 개시가 필요합니다.

2. TCC 트랜잭션 모드
: 첫째, 원칙 도입
기존의 트랜잭션 메커니즘 (는 X / Open XA 2 상과 관련하여 TCC 거래 메커니즘을 -commit) 는 자원 관리자 (RM) XA 지원에 의존하지 않는 것을 특징으로하지만,에 의해 (서비스 시스템에 의해 제공) 비즈니스 로직을 예약하는 것은 분산 트랜잭션을 구현합니다. 주로 세 단계의 조작에 의해 시도 : 비즈니스, 확인을하려고 : 사업이 취소되었는지 확인합니다 실행 사업을 취소 할 수 있습니다.
둘째, 특성 패턴 :
높은 임베디드 코드의 패턴은 쓰기 작업은 각 단계의 비즈니스 요구의 3 종류가 필요합니다.
로컬 트랜잭션 제어 모드의 존재 또는 부재는 광범위한 사용을 지원할 수있다.
데이터 일관성 제어가 거의 전적으로 개발자에 의해 제어되고, 사업 개발 어려움의 높은 수준을 필요로한다.

3. TXC 트랜잭션 모드
첫째, 원칙 소개 :
TXC 모델 이름은 Taobao에서 유래는, 원칙은 다음 SQL 실행 정보와 속보 락의 생성 저장, SQL, SQL 쿼리 첫번째 충격 데이터를 실행하기 전에 달성하는 것입니다. 그는 이러한 데이터 레코드 데이터베이스 롤백을 사용하여 롤 다시 할 필요는 본 잠금 구현은 잠금 제어 분산 레디 스 의존합니다.
둘째, 특성 모드 :
이 모드는 같은 낮은 임베디드 코드입니다.
이 모드는 모듈을 지원하는 SQL 모드 지원으로 제한됩니다.
때문에 각 SQL 실행하기 전에 충격 쿼리 데이터 모델의 요구는, 비교 LCN 모드 소비하는 자원과 시간을 더합니다.
이 모드는 연결 자원 데이터베이스를 사용하지 않습니다.
----------------

분산 일관성의 문제를 해결하기 위해, 성능 절충 과정에서 전임자 프로토콜과 알고리즘과 데이터 일관성 고전의 많은 요약. 비교적 잘 알려진 : ISR 2PC, 3PC, TCC, Paxos, 뗏목, ZAB을. 이 외에도, 가장 널리 사용되는 산업은 실제로 MQ 구현을 기반으로합니다.

  2PC는 (두 단계 커밋) 2 단계 커밋 일반은 XA 두 단계에 기초하는 것을 커밋 프로토콜. 일반적인 JTA의 계약도 있습니다.

  XA는 분산 트랜잭션 프로토콜입니다. 로컬 트랜잭션 관리자 및 자원 관리자 : 그것은 크게 두 부분으로 나누어 져 있습니다. 지역 자원 관리자는 종종 오라클과 같은 데이터베이스에 의해 구현되는 경우, DB2 XA 인터페이스가 구현됩니다. XA 지원을위한 MySQL은 매우 좋지 않다. 다양한 지역 자원을 담당하는 글로벌 스케줄로 트랜잭션 매니저는 커밋 및 롤백.

   두 단계의 장점은 커밋 : 원칙을 쉽게 구현하기 위해, 간단하다. 단점은 동기 차단, 단일 포인트 문제 일관성 데이터이다.

   

  CanCommit이 PreCommit가, 음주 세 단계 커밋 구분 : 3PC (세 프레이즈 커밋)의 세 단계를 제출했다. 두 번째 단계는 두 단계로 1 커밋 나눌 수있을 때 미리 신청을 반환하는 경우 참가자 또는 거래 인터럽트 없음 시간 제한.

  단계 커밋 세 가지 장점은 참가자 차단, 실패의 단일 지점 이후에 계속하기로 합의의 범위를 줄이는 것입니다. 단점은 그 preCommit 스테이지 네트워크 분할이 발생하는 경우,이 단계에서, 조정자는, 참가자가 여전히 일관성 데이터의 결과로, 일반 물리적 통신 참가자들에 의해 제출 될 수 있기 때문이다.

 

  TCC (TRY-확인-취소)

    보십시오 : 모든 검사, 필수 보유 자원의 완료를

    확인 : 당신이 이상 할 경우, 당신은 재시도 원하는 비즈니스의 구현 단계에 예약 된 자원을 사용해보십시오

    취소 : 예약 된 자원 단계를 해제하십시오

    TCC는 분산 트랜잭션 분리, 고정 제출 별도로 출시 된 각 자원에의 할 수있다. 같은 엄격한, 짧은 실행 시간, 현장의 높은 실시간 요구 사항에 적용됩니다.

 

  Paxos 알고리즘 : 전에 책 "Paxos에서 사육사에"볼, 나는 방법을 이해하지 않았다. 더 복잡한 달성하기 위해 사육사 분산 합의가 달성하기 위해 이것을 사용하는 것입니다. Paxos 알고리즘, 뗏목 프로토콜과 ZAB (사육사 원자 방송) 프로토콜은 데이터 일관성을 보장하기 위해 대기에 의한 다수결의 일종이다.

  

  ISR (- 싱크 복제본) 메커니즘 : 카프카 데이터 일관성을 보장하기 위해이 메커니즘을 사용한다. 2 개 + 1 사본 고려 ISR, 대다수의 투표 메커니즘은 지원 내결함성에 두 개의 사본을 원하는 경우에만 최소 5 개 사본을 유지하기 위해 필요, F 사본의 최대 실패 할 수 있어야합니다.

  

  MQ 구현은 구현의 비동기 유형을 확인하는 것이 필수적이다. 동기 블로킹 트랜잭션은 데이터베이스 트랜잭션의 경쟁을 피하고, 비동기된다.

 

2.X / OpenDTP 트랜잭션 모델의
개념 : X / 열기는 조직 정의하는 분산 트랜잭션 표준의 집합이 정의하는 표준화 된 API 인터페이스 역할 :

응용 프로그램 AP에
RM Resouces 관리자 탐색기
TM 트랜잭션 관리자 트랜잭션 관리자
처리 3.Mysql 거래
3.1 리두 로그와 언두 로그 레코드 디스크 지속에 로그하도록
3.2 업데이트 데이터 레코드
3.3 트랜잭션을 커밋, 리두 쓰기는 기록을 커밋

4. 2PC 프로토콜
2 단계 커밋

을 단계 : 트랜잭션 요청 제출
트랜잭션의 실행이 커밋 여부를 묻는 모든 AP를 전송 거래 내용에 TM을, 그리고 각 AP의 응답을 기다리는
시행 가지
트랜잭션 로그에 실행 취소 및 다시 실행 정보를 기록, 트랜잭션 작업을 수행하기 위해 각 AP 노드, 시도는 시간이 많이 걸리는 작업과 준비 기간 동안 제출 후 후속 보장하기 위해 사전에 완료되어
제출 된 거래의 성공률
TM 의견을 업무에 각 AP에 대한 응답으로 물어
다시 응답의 TM의 예에 트랜잭션 작업의 각 AP 성공적인 실행을, AP 경우 성공적 트랜잭션 응답 피드백 TM 전혀 실행되지
단계 II를 다음 트랜잭션의 커밋 구현

의 문제
데이터 일관성 문제 : AP와 TM가 다운, 나머지 두 가지의 작업이 AP 살아 있다면 결국 새로운 선출 TM 다운 타임의 AP가 완료 작업을하고있다 모르는 경우 (커밋 또는 중단 ) 판사, 그 가능성으로 인해 일관성없는 데이터 결과 작동 중단 시간과 생존 동작 불일치 인
동기 폐색 : 제 2 단계의 AP 모두 만 리턴 할 수있는 AP TM의 블록 기다리며 경우
5.3PC 계약
스테이지 A : canCommit : TM은 여부 요청 AP 커밋
precommit의 : 단계 II
단계 세 : doCommit가
분산 트랜잭션 6. 구현
Atomikos
7.MQ 최종 농도를 달성
7.1 중복 메시지 소비자 용액
멱등 검사 : 소비자의 새로운 단말 테이블, 고유 인덱스를 사용하여 데이터 삽입 데이터 테이블에 소비 데이터 액세스가 성공적으로 삽입이 처음으로 증명하는 경우 소비자 삽입하지 처음으로 소비자 증명하지 못할 경우
판사 로그 테이블 또는 잠금의 상태를 판단 할 수, 소비자 측의 상태 업데이트에 ID와 국가 소비자, 소비 후 성공을 삽입, 로그 테이블을 만들 수 있습니다
: 최종 일관성 모델
쿼리 모드
자동 재의 실패 후, 통화 B : 보상 모드 롤백 원래의 작동, 자동으로 통지 사업자 (예 : 수동 조정 등) 노동 보상, 또는 통지 기술, 감시, 재 시도 할 수없는 경우 조기 경보
TCC 트랜잭션 모델

8.LCN 달성
서비스 소비자 주석 @TxcTransaction (제한 시간 = 1000 * 10)
글로벌 트랜잭션 ID를 획득하기 위해 서비스 제공자, 및 문맥에 바인드
공개 INT의 updateStock (OrderDO orderDO) {

글로벌 트랜잭션 ID를 가져옵니다 // 및 문맥에 바인드

문자열 XID = RpcContext.getContext () getAttachment ( "XID.");

TxcContext.bind (XID, NULL);

자신의 비즈니스 로직을 구현 //

INT RET = jdbcTemplate.update ( "갱신 재고 설정 금액 = 양 - 어디 PRODUCT_ID =?", 새로운 객체 [] {orderDO.getNumber (), orderDO.getProductId ()});

TxcContext.unbind ();

권리를 반환;

}

 

추천

출처www.cnblogs.com/klb561/p/12031598.html