이 기사는 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. 디자인 컨셉 다이어그램
트랜잭션 코디네이터 , 글로벌 트랜잭션의 실행 상태를 유지 관리하고 글로벌 트랜잭션의 제출 또는 롤백을 조정하고 추진하는 일을 담당합니다.
글로벌 트랜잭션의 경계를 제어하고, 글로벌 트랜잭션 시작을 담당하고, 궁극적으로 글로벌 커밋 또는 글로벌 롤백 해결을 시작합니다.
지점 트랜잭션 제어, 지점 등록, 상태 보고, 트랜잭션 코디네이터로부터 지침 수신, 지점(로컬) 트랜잭션 제출 및 롤백을 담당합니다.
데이터베이스 계층에 있으며, RM은 본질적으로 데이터베이스 자체입니다(응용 프로그램에서 사용할 수 있도록 XA를 지원하는 드라이버 제공).
측에서 2차 패키지 형태로 미들웨어 레이어로 배포되며, 데이터베이스 자체에 의존하지 않고 프로토콜 지원을 요구하지 않으며 물론 필요하지 않습니다. XA 계약을 지원하는 데이터베이스 . 이는 마이크로서비스 기반 아키텍처에 매우 중요합니다. 애플리케이션 계층은 로컬 트랜잭션과 분산 트랜잭션을 위해 서로 다른 두 가지 데이터베이스 드라이버 세트에 적응할 필요가 없습니다.
프로토콜 지원
동시에 현지 거래가 종료되면서
브랜치 트랜잭션 데이터의
글로벌 잠금이 유지됩니다.
이 설계는 지점 트랜잭션에 의한 리소스(데이터 및 연결)의 잠금 시간을 크게 줄여 전반적인 동시성 및 처리량을 향상시키기 위한 기반을 제공합니다.인 Fescar의 JDBC 데이터 소스 프록시를 사용해야 합니다.
Fescar의 JDBC 데이터 소스 에이전트는 비즈니스 SQL을 구문 분석하고 업데이트 전후의 비즈니스 데이터에 대한 데이터 미러링을 롤백 로그로 구성하고 로컬 트랜잭션의 ACID 특성을 사용하여 비즈니스를 업데이트하고 롤백합니다. 데이터 로그 쓰기는 동일한 로컬 트랜잭션 내에서 커밋됩니다.
이런 방식으로 제출된 비즈니스 데이터의 모든 업데이트에는 해당 롤백 로그existing
이 있어야 함을 보장할 수 있습니다. 해결 방법이 글로벌 제출인 경우 지점 트랜잭션이 여기에 제출되었습니다. 시간, 필요 없음 동기식 조정 처리(비동기식 롤백 로그 정리만), Phase2는 매우 빠르게 완료될 수 있습니다.
해결 방법이 글로벌 롤백인 경우 RM은 코디네이터로부터 롤백 요청을 받고 XID와 Branch ID를 통해 해당 롤백 로그 기록을 찾아 롤백 기록을 통해 역 업데이트 SQL을 생성한 후 Complete Branch를 실행합니다. 롤백.
이러한 방식으로 서비스 링크의 모든 데이터베이스 업데이트 작업은 XID로 표시되는 글로벌 트랜잭션으로 지점을 등록하고 동일한 글로벌 트랜잭션의 관할권에 포함됩니다.
이 메커니즘을 기반으로 Fescar는 모든 마이크로서비스 RPC 프레임워크를 지원할 수 있습니다. Dubbo의 Filter + RpcContext와 같이 XID를 투명하게 전파할 수 있는 특정 프레임워크에서 메커니즘을 찾으세요.
글로벌 트랜잭션의 일부인 브랜치 트랜잭션에는 자체 비즈니스 로직 외에도 코디네이터와 상호 작용하는 4가지 동작이 포함됩니다.
브랜치 등록 : 지점에서 트랜잭션 데이터 작업을 수행하기 전에 코디네이터에 등록해야 하며, 이미 열려 있는 글로벌 트랜잭션의 관리에 향후 지점 트랜잭션 데이터 작업을 통합해야 합니다. 데이터 작업은 지점 등록 후에만 수행할 수 있습니다. 성공했습니다.
상태 보고: 지점 트랜잭션의 데이터 작업이 완료된 후 해당 실행 결과를 트랜잭션 코디네이터에게 보고해야 합니다.
지점 제출 : 코디네이터가 발행한 지점 거래 제출 요청에 응답하고 지점 제출을 완료합니다.
브랜치 롤백 : 코디네이터가 발행한 브랜치 트랜잭션 롤백 요청에 응답하고 브랜치 롤백을 완료합니다.
비즈니스 로직은 트랜잭션 메커니즘에 주의를 기울일 필요가 없으며 브랜치와 글로벌 트랜잭션 간의 상호 작용 프로세스가 자동으로 수행됩니다
의 비즈니스 로직은 준비/커밋/롤백, MT 브랜치 형성 및 글로벌 트랜잭션 추가의 세 부분으로 분해되어야 합니다.
AT와 MT 모드의 분기는 기본적으로 동일하므로 완전히 호환 가능합니다. 즉, 글로벌 트랜잭션에서는 AT와 MT가 모두 존재할 수 있습니다. 같은 시간. 지점 . 이러한 방식으로 비즈니스 시나리오의 포괄적인 적용 범위라는 목적을 달성할 수 있습니다. AT 모드가 지원되면 AT 모드를 사용하고, 일시적으로 AT 모드를 지원할 수 없으면 대신 MT 모드를 사용하세요. 또한, 당연히 MT 모드로 관리되는 비트랜잭션 자원도 트랜잭션을 지원하는 관계형 데이터베이스 자원과 함께 동일한 분산 트랜잭션 관리에 포함될 수 있다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!