분산 트랜잭션 특성, 분산 트랜잭션 처리

1 : 이해하는 일을 분산 : 

     분산 트랜잭션은 트랜잭션의 참가자, 트랜잭션 서버, 서버, 트랜잭션 관리 자원이 다른 분산 시스템의 서로 다른 노드에 위치를 말합니다. 이러한 작은 작업이 다른 서비스 노드에서 다른 작은 동작의 구성에 의해 주요 동작 분산되어, 분산 트랜잭션은 이러한 작은 작업 중 하나를 모두 성공하거나 모두 실패 있는지 확인해야합니다, 본질적으로 분산 트랜잭션을 보장하는 것입니다 다른 데이터베이스에서 데이터의 일관성.

2 : 오류의 분산 원인 :

A) 데이터베이스 하위 라이브러리 하위 테이블;

   데이터베이스 테이블 한 해의 데이터가 1000W 이상을 생성 할 때, 우리는 서브 테이블의 서브 라이브러리 고려해야합니다, 단순히 원본 데이터베이스가 여러 데이터베이스,이 시간, 작업의 경우 액세스 01 라이브러리를 모두 액세스 02이되는 것을 의미한다 라이브러리뿐만 아니라, 데이터 일관성을 보장하기 위해서는 분산 트랜잭션을 사용하는 것이 필요하다.

 

b) 상기 SOA의 적용;

이 서비스의 사업이다. 원래 독립 실행 형 전체 전기 공급 업체 사이트, 전체 사이트의 지금은 해체를 지원하는 등, 주문 센터, 주문 센터 고객 센터, 재고 센터, 주문 정보를 저장하는 전용 데이터베이스를 격리, 사용자 센터도 전용 데이터베이스 스토리지를 가지고 당신은 주문 및 재고 운영, 그것은 데이터 일관성을 보장하기 위해, 주문 데이터베이스 및 재고 데이터베이스에 관련된 것입니다하려는 경우 사용자 정보, 재고 센터, 재고 정보를 저장하는 전용 데이터베이스를해야합니다, 당신은 분산 트랜잭션을 사용해야합니다.

 

두 경우 모두 다른 모습,하지만 본질적으로 동일한 데이터베이스가 작동 할 수 있기 때문에 많이 바 꾸었습니다.

3) 분산 사용 시나리오 :

지불 : 합계 지불, 구매자는 자동 이체 계좌,하지만, 이러한 작업은 단일 트랜잭션에서 실행해야합니다 판매자 계정에 돈을 추가하거나 모두 성공하거나 모두 실패와 판매자의 계정 데이터베이스는 판매자에게 해당 구매자 대응 구매자 데이터베이스는 다른 데이터베이스에서 동작하는 분산 트랜잭션 (transaction)의 도입을 필요로한다.

온라인 주문 : 전자 비즈니스 플랫폼의 주문은 종종 두 가지 작업 한 버클 인벤토리를 포함, 두 번째는 일반적으로 데이터 일관성을 보장하기 위해 분산 트랜잭션을 사용할 필요가, 다른 데이터베이스에 속하는 주문 상태, 재고 및 주문을 업데이트하는 것입니다 .

4) 공통 분산 트랜잭션 솔루션 :

a) 두 단계 XA 제출 프로토콜에 기초하여,

    로컬 트랜잭션 관리자 및 자원 관리자 : XA 분산 트랜잭션 계약입니다, XA는 크게 두 부분으로 나누어집니다. 지역 자원 관리자는 종종 글로벌 스케줄로 데이터베이스 및 트랜잭션 관리자에 의해 구현되는 경우, 다양한 지역 자원에 대한 책임은 커밋 및 롤백.

 

   성능이하지 만족, 즉, XA 프로토콜은 비교적 간단하고, 상용 데이터베이스는 XA 프로토콜뿐만 아니라 분산 트랜잭션을 사용하는 비용을 달성하기 위해 한 번, XA는 치명적인 결함을 가지고, 종종 높은 동시성, XA는 높은 동시성 시나리오를 충족시킬 수 없다.

b) 최종 메시지 트랜잭션 일관성 +

거래의 소위 뉴스는 메시징 미들웨어의 2 단계 제출을 기반으로하는 메시징 미들웨어 본질의 특별한 사용, 그것은 로컬 트랜잭션 메시지입니다 및 분산 트랜잭션에 배치, 또는 로컬 작업의 성공이 성공 보장하는 것입니다 메시지와 보내는 메시지는 성공하거나 모두이 기능을 지원하는 오픈 소스 RocketMQ을 실패합니다.

특정 원칙 :

 

실행 순서 :

B.1)을 준비 시스템은 메시지 브로커에게 메시지를 전송한다;

B.2) 메시지를 저장하고 성공을 반환 할 준비가 메시징 미들웨어;

B.3) 메시지를 저장하고 성공을 반환 할 준비가 메시징 미들웨어;

B.4)는이 커밋 메시지를 송신하기위한 메시지 미들웨어;

이 순서로 수행 된 분석 :

   단차 오차가 전체 트랜잭션이 실패하는 로컬 동작을 수행하지 않는다;

   이 오류 단계 것은 전체 트랜잭션이 실패, 그것은의 로컬 작업을 수행하지 않는다;

   세 가지 오류, 이번에는 프로비저닝 메시지를 롤백 할 필요가 롤백 방법, : 시스템이 다시 실패하면 메시징 미들웨어, 트랜잭션 실행의 성공 여부 확인, 콜백 인터페이스를 수행하는 것, 콜백 인터페이스 메시징 미들웨어를 구현 단계 규정 메시지 굴립니다.

 롤백이 필요하지 않습니다, 네 실수,이 시간 로컬 트랜잭션이 롤백 성공적인 지역 운영, 성공 단계 : 팩트는 미들웨어 메시징, 콜백 인터페이스를 통해 성공적으로 수행하기 위해 확인하실 수 있습니다를, 이번에는 사실을 보낼 필요가 없습니다 따라서 전체 메시지 트랜잭션을 완료, 자신의 메시지를 전송할 수있는 미들웨어 메시징, 뉴스를 제출합니다.

c) 상기 분산 트랜잭션 기반 메시징 미들웨어는 두 단계 높은 동시성 시나리오입니다 제출

 예를 들어 분산 트랜잭션은 트랜잭션 메시지 (A 메시징 시스템 로컬 운영 +) + B 로컬 운영 체제로 분할

 

   B가 한 메시지 트랜잭션이 성공적으로 다음 A가 성공적으로 작동해야하며, 운영 시스템 메시지에 의해 구동되고, 메시지가 전송되어야하며,이 시간 B는 로컬 운전 메시지가 나타납니다. 지역 B가 실패하면 B 작업이 성공할 때까지 메시지를 다시 입력합니다. 이 변장 각각 분산 트랜잭션 A와 B,.

위의 방식이 작동 A와 B, 그러나를 완료 할 수 있습니다와 B는 B가 실패 구현되어있는 경우 물론,이 놀이는, 위험, 엄격하게 동일하지만, 결국 일치하지 않는 반면, 일관성이 될 것입니다 파괴, 재생하기 위해 특별히 여부, 여전히 위험 기업이 감당할 수있는 양을 볼 수 있습니다.

d) TCC 프로그래밍 모드

TCC 프로그래밍 모드는, 2 단계 커밋의 변종이다.

TCC는 전체 비즈니스 로직은 세 가지로 구분되어, 프로그래밍 프레임 워크를 제공합니다 : 취소 세 가지 작업을 확인,보십시오.

  온라인 주문, 예를 들어 : 물품을 복원 갈 것입니다, 다음 단계를 취소 입력, 재고 단계 버클하려고 시도 업데이트가 실패 할 경우, 단계는 주문 상태를 업데이트하는 것입니다 순서를 확인, TCC는 2 단계를 달성 코드를 통해 인간을 커밋 다르다 코드 작성 비즈니스 시나리오는 복잡 동일하지 동일한 수준이 아니며, 따라서이 모델은 아주 잘 재사용 할 수 없습니다.

4) 요약 :

어떤 제어 부분 제어 및 전체 제어 : 제어의 노력에 따라이로 나눌 수 있습니다에 분산 트랜잭션, 거래는 본질적으로 더 통합 제어 데이터베이스입니다. 그것은 분산 트랜잭션 제어를 도입하지 않고 아니며 두 단계의 완전한 제어가 완전히 실현되어 커밋 제어부는 상술 된 메시지 처리 + 최종 농도는 TCC 모드를 포함하는 두 단계의 변형 다양한 커밋된다.

부분 제어 혜택 동시성과 성능의 좋은 양, 데이터 일관성 단점이 약화되고, 완벽하게 제어 할 궁극적으로, 일관성을 보장, 성능의 비용으로 어떻게 든 특정 비즈니스 현장에 달려
----- -----------
면책 조항 :이 문서에 원래 문서 CSDN 블로거 "wanghang88"이며, BY-SA 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요 CC 4.0을 따릅니다.
원본 링크 : HTTPS : //blog.csdn.net/wanghang88/article/details/79762761

추천

출처www.cnblogs.com/spark9988/p/11516800.html