문제

XA 분산 트랜잭션을 구현할 수있는 좋은 C ++ 프레임 워크가 있습니까?

"좋은"이라는 용어로, 나는 유용하고 단순하다는 것을 의미합니다 ( "쉬운"을 암시하지 않음).

연구 이유로 인해 현재 X/Open XA 사양에 따라 개인 구현을 진행하고 있습니다.

미리 감사드립니다.

도움이 되었습니까?

해결책

나는 어느 정도의 성숙도가있는 오픈 소스 또는 무료 거래 모니터를 모릅니다. 이 링크 팬 아웃이 있습니다. 현직 상업용은입니다 Bea의 턱시도, TIBCO 's 엔터프라이즈 메시지 서비스 (실제로 IBM의 MQ와 같은 트랜잭션 메시지 대기열 관리자) 및 TransArc 's encina (현재 IBM 소유). 이 시스템은 모두입니다 매우 값비싼.

자신만의 것을 만들고 싶다면 (그리고 우연히 오픈 소스 소프트웨어 공간에서 공극을 채워서 약간의 이름을 만들어) 사본을 얻으십시오. 회색과 Reuter. 이는이 분야의 최고 전문가 중 두 명이 작성한 거래 처리 시스템 아키텍처에 대한 결정적인 작업입니다.

흥미롭게도, 그들은 약 10,000 줄의 C에서 작동하는 TP 모니터를 구현할 수 있다고 주장합니다. 이것은 실제로 그 일이 그렇게 복잡하지 않기 때문에 실제로 합리적으로 들립니다. 때때로 나는 시도하고 싶은 유혹을 받았다.

기본적으로 데몬 프로세스로 실행되는 분산 거래 코디네이터를 만들어야합니다. 리소스 관리자 프로토콜을 작동시켜야하므로 프로토 타입으로 시작하는 것이 좋습니다. 독립적으로 롤백하거나 거래를 커밋 할 수있는 경우 TM-RM 인터페이스의 기초가 있습니다.

사양에 정의 된 XA API는 트랜잭션 관리자를 제어하기위한 API입니다. 엄밀히 말하면,이 종류의 분산 트랜잭션을 사용하기 위해 3 계층 아키텍처를 만들 필요는 없지만 TP 모니터가 없으면 다소 무의미합니다. 프론트 엔드에서 중간 계층으로 의사 소통하는 방법은 독자의 운동으로 남겨질 수 있습니다. 당신은 아마도 기존 구를 사용하는 것이 가장 좋습니다. 그 중 몇 가지 좋은 오픈 소스 구현을 사용할 수 있습니다.

DTC와 App 서버를 별도의 프로세스로 만들려면 (안정성에 바람직하지만 엄격하게 필요하지 않음) DTC 서버의 기초로 ACE를 사용할 수도 있습니다.

고성능 중간 계층 서버를 만들고 싶다면 Douglas Schmidt 's를 확인하십시오. 에이스 프레임 워크. 여기에는 tao라는 구가 함께 제공되며, 공상을 취하는 스레딩 모델을 다소 사용할 수있을 정도로 유연합니다. 이것을 사용하는 것은 그것을 배우는 것과 자신의 글을 쓰고 모든 동기화 및 동의 문제를 디버깅하려는 노력 사이의 상충 관계입니다.

다른 팁

어쩌면 당신의 작업에 꽤 늦을 지 모르지만 다른 사용자에게 유용 할 수 있습니다. lixa "프레임 워크"는 아니지만 TX Transaction DeMarcation 사양에 대한 구현을 제공하며 대부분의 XA 기능을 지원합니다. TX 사양은 C 및 COBOL 언어를위한 것이지만 C ++ 프로젝트 내부의 C 버전의 통합은 쉽지 않아야합니다.

다른 옵션은 오픈 소스입니다 Enduro/X 분산 트랜잭션 처리 프레임 워크 이를 통해 리소스 관리자 (예 : 데이터베이스)와 함께 작동 할 수있는 간단한 C/C ++ 서비스를 작성할 수 있으며 다른 리소스/데이터베이스와 함께 작업 한 동일한/다른 물리적 서버에서 여러 가지 다른 실행 파이브에서 수행 한 작업을 커밋하거나 중단 할 수 있습니다.

내부적으로 XA 2PC가 사용됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top