WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

24
WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd

Transcript of WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

Page 1: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

WS-AtomicTransaction

Mark Little, Chief Architect

Arjuna Technologies Ltd

Page 2: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

2

Introduction• Coordinate agreement with ACID semantics

– Atomic, Consistent, Isolated, Durable

• Tried and trusted model– Simple application model– Synchronized state changes– Correctness in the face of failures– Widespread adoption– Proven protocols

Page 3: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

3

Model Assumptions

• Transactions are short lived– Resources isolated (locked) for duration

• Coordinator availability– Connected and responsive– Timely failure recovery

• Participants trust that the above are true

Page 4: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

4

Core Scenarios

• Some services require ACID properties

- Tight coordination of mission critical state• Use with service-based resource managers

– Example: Queue service

• Use within datacenter– Controlled environment

• Use with virtual datacenter– Between close partners– Contractual QOS

Page 5: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

5

Protocol• Defines WS-Coordination Coordination Type

– http://schemas.xmlsoap.org/ws/2004/10/wsat• Activities are transactions

– CreateCoordinationContext• Create transaction• Join transaction as subordinate

– Register• Create subordinate enlistment

• Three coordination protocols– Completion– Durable 2PC– Volatile 2PC

• Simple message patterns– One-way messages– Correlation using WS-Addressing

• Full state machines for 2PC

Page 6: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

6

The Actors

• Completion Initiator (I)– Signals coordinator to complete a transaction

• Can request commit or rollback

• Coordinator (C)– Responsible for coordinating a single outcome– Drives 2PC with participants

• Phase 1: Ensure all participants are prepared• Phase 2: Notify participants of outcome

• Participants (P)– Can vote to abort– Can vote “prepared to commit”

• Must honor coordinator’s commit decision

Page 7: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

7

WS-C and WS-AT

Application level

SOAP SOAPInitiator Application

ServiceRequest

Response

XML Messages

[application context]

UDDI/WSDL

ServiceRequestor

ServiceProvider

WS-AT ParticipantWS-BA WS-AT

SecuritySecurity

SOAP

WS-Coordination

[execution context]Coordination Messages SOAP

Infrastructure level

Page 8: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

8

CompletionProtocol

C I

CommitRollback

CommittedAborted

Page 9: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

9

2PC Protocol

C P

PreparedReadOnlyAborted

CommittedReplay

PrepareRollbackCommit

Page 10: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

10

Volatile versusDurable 2PC

• Two variants of 2PC protocol– One for volatile resources (e.g., cache)– One for durable resources (e.g., database)

• Phase 1 has sub-phasesA) Prepare all volatile participants

• This can cause more durable participant registrations

B) Prepare all durable participants

Page 11: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

11

Prepare message

<soapenv:Header> <wsa:To>http://localhost:8080/ws-t/Durable2PCParticipant</wsa:To> <wsa:ReplyTo> <wsa:Address>http://localhost:8080/ws-t/Durable2PCCoordinator</wsa:Address> <wsa:ReferenceProperties> <wsarjaddr:InstanceIdentifier>7f000001:8018:4369ea05:9</wsarjaddr:InstanceIdentifier> </wsa:ReferenceProperties> </wsa:ReplyTo> <wsa:Action>http://schemas.xmlsoap.org/ws/2004/10/wsat/Prepare</wsa:Action> <wsarjaddr:InstanceIdentifier>7f000001:8018:4369ea05:7</wsarjaddr:InstanceIdentifier> <wsa:MessageID>AUID:e0e1c2b07369e621</wsa:MessageID> </soapenv:Header> <soapenv:Body> <wsat:Prepare/> </soapenv:Body>

Page 12: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

12

Prepared message<soapenv:Header> <wsa:To>http://localhost:8080/ws-t/Durable2PCCoordinator</wsa:To> <wsa:ReplyTo> <wsa:Address>http://localhost:8080/ws-t/Durable2PCParticipant</wsa:Address> <wsa:ReferenceProperties> <wsarjaddr:InstanceIdentifier>7f000001:8018:4369ea05:7</wsarjaddr:InstanceIdentifier> </wsa:ReferenceProperties> </wsa:ReplyTo> <wsa:Action>http://schemas.xmlsoap.org/ws/2004/10/wsat/Prepared</wsa:Action> <wsarjaddr:InstanceIdentifier>7f000001:8018:4369ea05:9</wsarjaddr:InstanceIdentifier> <wsa:MessageID>AUID:e8022a77874bb1c9</wsa:MessageID> </soapenv:Header> <soapenv:Body> <wsat:Prepared/> </soapenv:Body>

Page 13: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

13

Commit message

<soapenv:Header> <wsa:To>http://localhost:8080/ws-t/Durable2PCParticipant</wsa:To> <wsa:ReplyTo> <wsa:Address>http://localhost:8080/ws-t/Durable2PCCoordinator</wsa:Address> <wsa:ReferenceProperties> <wsarjaddr:InstanceIdentifier>7f000001:8018:4369ea05:e</wsarjaddr:InstanceIdentifier> </wsa:ReferenceProperties> </wsa:ReplyTo> <wsa:Action>http://schemas.xmlsoap.org/ws/2004/10/wsat/Commit</wsa:Action> <wsarjaddr:InstanceIdentifier>7f000001:8018:4369ea05:c</wsarjaddr:InstanceIdentifier> <wsa:MessageID>AUID:ef3bda4cf07c9add</wsa:MessageID> </soapenv:Header> <soapenv:Body> <wsat:Commit/> </soapenv:Body>

Page 14: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

14

Committedmessage

<soapenv:Header> <wsa:To>http://localhost:8080/ws-t/Durable2PCCoordinator</wsa:To> <wsa:Action>http://schemas.xmlsoap.org/ws/2004/10/wsat/Committed</wsa:Action> <wsarjaddr:InstanceIdentifier>7f000001:8018:4369ea05:e</wsarjaddr:InstanceIdentifier> <wsa:MessageID>AUID:ca2178bb6e56949c</wsa:MessageID> </soapenv:Header> <soapenv:Body> <wsat:Committed/> </soapenv:Body>

Page 15: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

15

Policy assertions• Transaction flow assertion

– <wsat:ATAssertion wsp:optional=“true”/>– Operation Policy Subject– Used by applications to indicate willingness to accept

incoming transactions– Wire format of serialized transaction is

<wscoor:CoordinationContext> header

• Atomic service assertion– <wsat:ATAlwaysCapability />– Operation Policy Subject– Used by applications to indicate that a requester’s

message will be processed transactionally

Page 16: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

16

WS-Addressing• Specification uses WS-Addressing

– Important for interoperability

• Different message classifications– Request messages– Reply messages– Notification messages– Fault messages

Page 17: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

17

But why…?

• Web services are “for the internet”– B2B communication– Separate trust domains– Why WS-AT?

• Two reasons– Interoperability

• Heterogeneous systems

– Ubiquity• Vision of WS-* scale down

Page 18: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

18

Resources• WS-AtomicTransaction

– http://schemas.xmlsoap.org/ws/2004/10/wsat/default.htm

• Web services whitepapers, specs, workshops– http://msdn.microsoft.com/webservices/

Page 19: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

19

State tables (I)Atomic Transaction 2PC protocol

(Coordinator View)

InboundEvents

States

None Active Preparing Prepared PreparedSuccess Committing Aborting

RegisterInvalid State

NoneSend RegisterResponse

Active

Durable: Invalid StateAborting

Volatile: Send RegisterResponseActive

N/AInvalid State

PreparedSuccessInvalid StateCommitting

Invalid StateAborting

Prepared

Durable: Send Rollback

Volatile: InvalidStateNone

Invalid StateAborting

Record VotePreparing

N/AIgnore

PreparedSuccessResend CommitCommitting

Resend Rollback, and forgetAborting

ReadOnlyIgnoreNone

ForgetActive

ForgetPreparing

N/AInvalid State

PreparedSuccessInvalid StateCommitting

ForgetAborting

AbortedIgnoreNone

ForgetAborting

ForgetAborting

N/AInvalid State

PreparedSuccessInvalid StateCommitting

ForgetAborting

CommittedIgnoreNone

Invalid StateAborting

Invalid StateAborting

N/AInvalid State

PreparedSuccessForget

CommittingInvalid StateAborting

Replay

Durable: Send Rollback

Volatile: InvalidStateNone

Send RollbackAborting

Send RollbackAborting

N/AIgnore

PreparedSuccessSend CommitCommitting

Send RollbackAborting

Page 20: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

20

State tables(II)Atomic Transaction 2PC protocol

(Participant View)

InboundEvents

States

None Active Preparing Prepared PreparedSuccess Committing Aborting

RegisterResponse

Register Subordinate

Active

Invalid StateActive

Invalid StateAborting

Invalid StatePrepared

Invalid StatePreparedSuccess

Invalid StateCommitting

Invalid StateAborting

PrepareSend Aborted

None

Gather Vote DecisionPreparing

IgnorePreparing

IgnorePrepared

Resend PreparedPreparedSuccess

IgnoreCommitting

Resend Aborted, and forgetAborting

CommitSend Committed

NoneInvalid StateAborting

Invalid StateAborting

Invalid StateAborting

Initiate commit decisionCommitting

IgnoreCommitting

InconsistentInternalStateAborting

RollbackSend Aborted

None

Initiate Rollback,Send Aborted,

and ForgetAborting

Initiate Rollback,Send Aborted, and

ForgetAborting

Initiate Rollback,Send Aborted, and

ForgetAborting

Initiate Rollback,Send Aborted, and Forget

Aborting

InconsistentInternalStateCommitting

Send Aborted, and ForgetAborting

Page 21: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

21

Workshops

• March 2004 for feedback workshop• January 2005 for interoperability workshop

– http://msdn.microsoft.com/webservices/community/workshops/transactionsinterop1204.aspx

• Several public endpoints, including …– http://wsi.alphaworks.ibm.com:8080/wstx/services/Int

eropService

– http://mssoapinterop.org/ws/– http://213.162.124.157:8080/– http://62.190.208.196:8080/WsTxTester/ep

Page 22: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

22

Testing scenarios

• Explicitly tested WS-AT and WS-BA– Implicitly tested WS-C

• Many different test cases– Both for coordinator and participants– Included failures

Page 23: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

23

General flowImplementation BImplementation A

InitiatorApp (IA)CoordinatorProtocolService

(CS)ParticipantApp (PA)

tns:Request()

ParticipantProtocolService(PS)

tns:Response()

wscoor:RegisterRequest()

wscoor:RegisterResponse()

wsat:Protocol()

Page 24: WS-AtomicTransaction Mark Little, Chief Architect Arjuna Technologies Ltd.

24

Interoperability results