> Java > java지도 시간 > 본문

페스카 분산거래 상세 소개(사진 및 본문)

不言
풀어 주다: 2019-01-31 11:04:47
앞으로
3426명이 탐색했습니다.

이 기사는 fescar 분산 거래에 대한 소개(사진 및 텍스트)를 제공합니다. 이는 특정 참고 가치가 있으므로 도움이 필요한 친구가 될 수 있기를 바랍니다.

1. fescar 분산 트랜잭션(개요)

1.1. 개요

Fescar는 비즈니스에 대한 효율적이고 방해가 없는 방식으로 마이크로서비스 시나리오에서 직면한 문제를 해결하는 Alibaba의 오픈 소스 분산 트랜잭션 미들웨어입니다. 거래 문제.

1.2. 페스카 개발 이력

2014년 알리바바 미들웨어 팀은 그룹 내 애플리케이션에 대한 분산 거래 서비스를 제공하기 위해 TXC(Taobao Transaction Constructor)를 출시했습니다.

2016년 TXC는 제품 변형을 거쳐 Alibaba Cloud에 GTS(Global Transaction Service)로 상륙하여 당시 업계 유일의 클라우드 분산 거래 제품이 되었으며 Ayun의 퍼블릭 클라우드와 프라이빗 클라우드에서 해결할 수 있습니다. 계획에 따라 우리는 많은 외부 고객에게 서비스를 제공하기 시작했습니다.

2019년부터 Alibaba 미들웨어 팀은 TXC와 GTS의 기술 축적을 기반으로 오픈 소스 프로젝트 Fescar(Fast & EaSy Commit And Rollback, FESCAR)를 출시하여 커뮤니티와 함께 ​​분산 거래 솔루션을 구축했습니다.

1.3. 독창적인 디자인 의도

업무 방해 금지

고성능

1.4. 원리 및 디자인

1.4.1. 디자인 컨셉 다이어그램

페스카 분산거래 상세 소개(사진 및 본문)

  1. 트랜잭션 코디네이터 , 글로벌 트랜잭션의 실행 상태를 유지 관리하고 글로벌 트랜잭션의 제출 또는 롤백을 조정하고 추진하는 일을 담당합니다.

  2. 트랜잭션 관리자(TM):

    글로벌 트랜잭션의 경계를 제어하고, 글로벌 트랜잭션 시작을 담당하고, 궁극적으로 글로벌 커밋 또는 글로벌 롤백 해결을 시작합니다.

  3. Resource Manager(RM):

    지점 트랜잭션 제어, 지점 등록, 상태 보고, 트랜잭션 코디네이터로부터 지침 수신, 지점(로컬) 트랜잭션 제출 및 롤백을 담당합니다.

1.4.2.XA와의 차이점은 무엇인가요?

페스카 분산거래 상세 소개(사진 및 본문)

  1. XA 솔루션의 RM은 실제로

    데이터베이스 계층에 있으며, RM은 본질적으로 데이터베이스 자체입니다(응용 프로그램에서 사용할 수 있도록 XA를 지원하는 드라이버 제공).

  2. 그리고 Fescar의 RM은 애플리케이션

    측에서 2차 패키지 형태로 미들웨어 레이어로 배포되며, 데이터베이스 자체에 의존하지 않고 프로토콜 지원을 요구하지 않으며 물론 필요하지 않습니다. XA 계약을 지원하는 데이터베이스 . 이는 마이크로서비스 기반 아키텍처에 매우 중요합니다. 애플리케이션 계층은 로컬 트랜잭션과 분산 트랜잭션을 위해 서로 다른 두 가지 데이터베이스 드라이버 세트에 적응할 필요가 없습니다.

  3. 이 디자인은 데이터베이스의

    프로토콜 지원

1.4.3 XA

XA 2PC의 2단계 커밋에 대한 요구 사항을 제거합니다. process

  1. 페스카 분산거래 상세 소개(사진 및 본문)

    Phase2의 해결이 커밋이든 롤백이든 상관없이 트랜잭션 리소스의 잠금은 Phase2가 완료되어 릴리스되기 전까지 유지되어야 합니다.
  2. 정상적으로 운영되는 비즈니스를 상상해 보세요. 결국 90% 이상의 거래가 성공적으로 제출될 확률이 높습니다. 1단계에서 로컬 거래를 제출할 수 있을까요? 이러한 방식으로 90% 이상의 경우에 2단계의 잠금 유지 시간이 절약되고 전반적인 효율성이 향상될 수 있습니다.

  3. 1.4.3.2.fescar의 2PC 프로세스

페스카 분산거래 상세 소개(사진 및 본문)

지점 트랜잭션의 데이터에 대한
    로컬 잠금
  1. 은 로컬 트랜잭션에 의해 관리되며 지점 트랜잭션 Phase1이 끝나면 해제됩니다.

    동시에 현지 거래가 종료되면서
  2. connection
  3. 도 해제됩니다.

    브랜치 트랜잭션 데이터의
  4. 글로벌 잠금
  5. 은 트랜잭션 코디네이터 측에서 관리됩니다. Phase2 글로벌 커밋이 해결되면 글로벌 잠금이 즉시 해제될 수 있습니다. 글로벌 롤백의 경우에만 브랜치 2단계 종료시까지

    글로벌 잠금이 유지됩니다.

    이 설계는 지점 트랜잭션에 의한 리소스(데이터 및 연결)의 잠금 시간을 크게 줄여 전반적인 동시성 및 처리량을 향상시키기 위한 기반을 제공합니다.
  6. 1.4.4.브랜치 트랜잭션을 커밋하고 롤백하는 방법은 무엇입니까? (핵심)

우선 애플리케이션은 Fescar의 RM
  1. Fescar의 JDBC 데이터 소스 프록시를 사용해야 합니다.

  2. Fescar의 JDBC 데이터 소스 에이전트는 비즈니스 SQL을 구문 분석하고 업데이트 전후의 비즈니스 데이터에 대한 데이터 미러링을 롤백 로그로 구성하고 로컬 트랜잭션의 ACID 특성을 사용하여 비즈니스를 업데이트하고 롤백합니다. 데이터 로그 쓰기는 동일한 로컬 트랜잭션 내에서 커밋됩니다.

  3. 이런 방식으로 제출된 비즈니스 데이터의 모든 업데이트에는 해당 롤백 로그existing
    페스카 분산거래 상세 소개(사진 및 본문)

  4. 이 있어야 함을 보장할 수 있습니다. 해결 방법이 글로벌 제출인 경우 지점 트랜잭션이 여기에 제출되었습니다. 시간, 필요 없음 동기식 조정 처리(비동기식 롤백 로그 정리만), Phase2는 매우 빠르게 완료될 수 있습니다.

  5. 해결 방법이 글로벌 롤백인 경우 RM은 코디네이터로부터 롤백 요청을 받고 XID와 Branch ID를 통해 해당 롤백 로그 기록을 찾아 롤백 기록을 통해 역 업데이트 SQL을 생성한 후 Complete Branch를 실행합니다. 롤백.

1.4.5 트랜잭션 전파 메커니즘

  1. 이러한 방식으로 서비스 링크의 모든 데이터베이스 업데이트 작업은 XID로 표시되는 글로벌 트랜잭션으로 지점을 등록하고 동일한 글로벌 트랜잭션의 관할권에 포함됩니다.

  2. 이 메커니즘을 기반으로 Fescar는 모든 마이크로서비스 RPC 프레임워크를 지원할 수 있습니다. Dubbo의 Filter + RpcContext와 같이 XID를 투명하게 전파할 수 있는 특정 프레임워크에서 메커니즘을 찾으세요.

1.4.6 브랜치의 기본 동작 패턴

글로벌 트랜잭션의 일부인 브랜치 트랜잭션에는 자체 비즈니스 로직 외에도 코디네이터와 상호 작용하는 4가지 동작이 포함됩니다.

  1. 브랜치 등록 : 지점에서 트랜잭션 데이터 작업을 수행하기 전에 코디네이터에 등록해야 하며, 이미 열려 있는 글로벌 트랜잭션의 관리에 향후 지점 트랜잭션 데이터 작업을 통합해야 합니다. 데이터 작업은 지점 등록 후에만 수행할 수 있습니다. 성공했습니다.

  2. 상태 보고: 지점 트랜잭션의 데이터 작업이 완료된 후 해당 실행 결과를 트랜잭션 코디네이터에게 보고해야 합니다.

  3. 지점 제출 : 코디네이터가 발행한 지점 거래 제출 요청에 응답하고 지점 제출을 완료합니다.

  4. 브랜치 롤백 : 코디네이터가 발행한 브랜치 트랜잭션 롤백 요청에 응답하고 브랜치 롤백을 완료합니다.
    페스카 분산거래 상세 소개(사진 및 본문)

    1.4.7 AT 모드 브랜치의 동작 모드

  5. 비즈니스 로직은 트랜잭션 메커니즘에 주의를 기울일 필요가 없으며 브랜치와 글로벌 트랜잭션 간의 상호 작용 프로세스가 자동으로 수행됩니다
    페스카 분산거래 상세 소개(사진 및 본문)

1.4.8. MT 모드 브랜치의 동작 패턴

  1. 의 비즈니스 로직은 준비/커밋/롤백, MT 브랜치 형성 및 글로벌 트랜잭션 추가의 세 부분으로 분해되어야 합니다.
    페스카 분산거래 상세 소개(사진 및 본문)

1.4.9. 혼합 모드

AT와 MT 모드의 분기는 기본적으로 동일하므로 완전히 호환 가능합니다. 즉, 글로벌 트랜잭션에서는 AT와 MT가 모두 존재할 수 있습니다. 같은 시간. 지점 . 이러한 방식으로 비즈니스 시나리오의 포괄적인 적용 범위라는 목적을 달성할 수 있습니다. AT 모드가 지원되면 AT 모드를 사용하고, 일시적으로 AT 모드를 지원할 수 없으면 대신 MT 모드를 사용하세요. 또한, 당연히 MT 모드로 관리되는 비트랜잭션 자원도 트랜잭션을 지원하는 관계형 데이터베이스 자원과 함께 동일한 분산 트랜잭션 관리에 포함될 수 있다.

1.5. 예비 버전 계획

v0.1.0

  • 마이크로 서비스 프레임워크 지원: Dubbo

  • 데이터베이스 지원: MySQL

  • Spring AOP 기반 주석

  • ator: 독립형 버전

v0.5.x

  • 마이크로서비스 프레임워크는 다음을 지원합니다: Spring Cloud

  • MT 모드

  • TCC 모드 트랜잭션 적응 지원

  • 동적 구성 및 서비스 검색

  • 트랜잭션 코디네이터: 사용 가능한 클러스터 version

v0.8.x

  • Metrics

  • 콘솔: 모니터링/배포/업그레이드/스케일링/스케일링

v1.0.0

  • 일반 가용성: 적합 제작환경

v1.5.x

  • 데이터베이스 지원: Oracle/PostgreSQL/OceanBase

  • Spring AOP의 Annotation에 의존하지 않음

  • 핫 데이터의 최적 처리 메커니즘

  • RocketMQ 트랜잭션 메시지가 통합됨 안으로 글로벌 트랜잭션 관리

  • NoSQL은 글로벌 트랜잭션 관리의 적응 메커니즘에 통합되었습니다

  • HBase 지원

  • Redis 지원

v2.0.0

  • XA 지원
    물론, 프로젝트의 반복적인 발전 과정에서 우리가 가장 중요하게 생각하는 것은 커뮤니티의 목소리입니다. 로드맵은 커뮤니티와 충분히 소통되고 적시에 조정될 것입니다.

1.6.요약

 개요를 읽어보니 모든 마이크로서비스 RPC 프레임워크를 지원한다고 명시되어 있습니다. 이제 Spring Cloud에 적합한 분산 트랜잭션 솔루션 중 하나를 선택해야 합니다. 다음 버전에는 Spring Cloud가 통합될 예정입니다. 합격하신 분들은 추천해주세요

1.7.github 오픈소스 주소

https://github.com/alibaba/fescar/

위 내용은 페스카 분산거래 상세 소개(사진 및 본문)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿