rfc2372.txt
来自「RFC 的详细文档!」· 文本 代码 · 共 1,348 行 · 第 1/4 页
TXT
1,348 行
Network Working Group K. Evans
Request for Comments: 2372 J. Klein
Category: Informational Tandem Computers
J. Lyon
Microsoft
July 1998
Transaction Internet Protocol - Requirements and
Supplemental Information
Status of this Memo
This memo provides information for the Internet community. It does
not specify an Internet standard of any kind. Distribution of this
memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (1998). All Rights Reserved.
Abstract
This document describes the purpose (usage scenarios), and
requirements for the Transaction Internet Protocol [1]. It is
intended to help qualify the necessary features and functions of the
protocol. It also provides supplemental information to aid
understanding and facilitate implementation of the TIP protocol.
Table of Contents
1. Introduction 2
2. The Transaction Internet Protocol 3
3. Scope 4
4. Anticipated Usage of TIP 4
5. TIP Compliant Systems 4
6. Relationship to the X/Open DTP Model 5
7. Example TIP Usage Scenario 5
8. TIP Transaction Recovery 9
9. TIP Transaction and Application Message Serialisation 10
10. TIP Protocol and Local Actions 10
11. Security Considerations 11
12. TIP Requirements 11
References 14
Authors' Addresses 15
Comments 15
A. An Example TIP Transaction Manager API 16
Full Copyright Statement 24
Evans, et. al. Informational [Page 1]
RFC 2372 TIP Requirements and Supplemental Information July 1998
1. Introduction
Transactions are a very useful programming paradigm, greatly
simplifying the writing of distributed applications. When
transactions are employed, no matter how many distributed application
components participate in a particular unit-of-work, the number of
possible outcomes is reduced to only two; that is, either all of the
work completed successfully, or none of it did (this characteristic
is known as atomicity). Applications programming is therefore much
less complex since the programmer does not have to deal with a
multitude of possible failure scenarios. Typically, transaction
semantics are provided by some underlying system infrastructure
(usually in the form of products such as Transaction Processing
Monitors, and/or Databases). This infrastructure deals with failures,
and performs the necessary recovery actions to guarantee the property
of atomicity. The use of transactions enables the development of
reliable distributed applications which would otherwise be difficult,
if not impossible.
A key technology required to support distributed transactions is the
two-phase commit protocol (2-pc). 2-pc protocols have been used in
commercial Transaction Processing (TP) systems for many years, and
are well understood (e.g. the LU6.2 2-pc (syncpoint) protocol was
first implemented more than 12 years ago). Today a number of
different 2-pc protocols are supported by a variety of TP monitor and
database products. 2-pc is used between the components participating
in a distributed unit-of-work (transaction) to ensure agreement by
all parties regarding the outcome of that work (regardless of any
failure).
Today both standard and proprietary 2-pc protocols exist. These
protocols typically employ a "one-pipe" model. That is, the
transaction and application protocols are tightly-integrated,
executing over the same communications channel. An application may
use only the particular communications mechanism associated with the
transaction protocol. The standard protocols (OSI TP, LU6.2) are
complex, with a large footprint and extensive configuration and
administration requirements. For these reasons they are not very
widely deployed. The net of all this is restricted application
flexibility and interoperability if transactions are to be used.
Applications may wish to use a number of communications protocols for
which there are no transactional variants (e.g. HTTP), and be
deployed in very heterogeneous application environments.
In summary, transactions greatly simplify the programming of
distributed applications, and the 2-pc protocol is a key
transactional technology. Current 2-pc protocols only offer
transaction semantics to a limited set of applications, operating
Evans, et. al. Informational [Page 2]
RFC 2372 TIP Requirements and Supplemental Information July 1998
within a special-purpose (complex, homogeneous) infrastructure, using
a particular set of intercommunication protocols. The restrictions
thus imposed by current 2-pc protocols limits the widespread use of
the transaction paradigm, thereby inhibiting the development of new
distributed business applications.
(See [2] for more information re transactions, atomicity, and two-
phase commit protocols in general.)
2. The Transaction Internet Protocol (TIP)
TIP is a 2-pc protocol which is intended to provide ubiquitous
distributed transaction support, in a heterogeneous (networked)
environment. TIP removes the restrictions of current 2-pc protocols
and enables the development of new distributed business applications.
This goal is achieved primarily by satisfying two key requirements:
1) Keep the protocol simple (yet functionally sufficient). If the
protocol is complex it will not be widely deployed or quickly
adopted. Simplicity also means suitability to a wide range of
application environments.
2) Enable the protocol to be used with any applications
communications protocol (e.g. HTTP). This ensures heterogeneous
environments can participate in distributed work.
TIP does not reinvent the 2-pc protocol itself, the well-known
presumed-abort 2-pc protocol is used as a basis. Rather the novelty
and utility of TIP is in its separation from the application
communications protocol (the two-pipe model).
+-------------+ Application Communication +-------------+
| Application |---------------------------| Application |
| Program | "Pipe 1" | Program |
+-------------+ +-------------+
| |
| TIP TM API TIP TM API |
| |
+-----------------+ TIP 2-pc Protocol +-----------------+
| TIP Transaction |-----------------------| TIP Transaction |
| Manager | "Pipe 2" | Manager |
+-----------------+ +-----------------+
Fig 1: The two-pipe nature of TIP
Evans, et. al. Informational [Page 3]
RFC 2372 TIP Requirements and Supplemental Information July 1998
3. Scope
TIP does not describe how business transactions or electronic
commerce are to be conducted on the internet, it specifies only the
2-pc transaction protocol (which is an aid in the development of such
applications). e.g. TIP does not provide a mechanism for non-
repudiation. Such protocols might be a subject for subsequent IETF
activity, once the requirements for general electronic commerce are
better understood. TIP does not preclude the later definition of
these protocols.
TIP does not specify Application Programming Interfaces (note that an
example TIP TM API is included in this document (Appendix A), as an
aid to understanding).
4. Anticipated Usage of TIP
As described above, transactions are a very useful tool in
simplifying the programming of distributed applications. TIP is
therefore targeted at any application that involves distributed work.
Such applications may comprise components executing within a single
system, across a corporate intranet, across the internet, or any
other distributed system configuration. The application may be of
"enterprise" class (requiring high-levels of performance and
availability), or be less demanding. TIP is intended to be generally
applicable, meeting the requirements of any application type which
would benefit from the provision of transaction semantics.
5. TIP Compliant Systems
There are two classes of TIP compliant Transaction Manager system:
1) Client-only systems. Those which provide an application
interface to demarcate TIP transactions, but which do not offer
access to local recoverable resources. Such a lightweight
implementation is useful for systems which host client
applications only (e.g. desktop machines). Such client systems may
be unreliable, and are not appropriate as transaction coordinators
(their unavailability might cause resources on other transaction
participant systems to remain locked and unavailable). These so-
called "volatile client" systems therefore delegate the
responsibility to coordinate the transaction (and recover from
failures), to other "full" (server) TIP system implementations.
For these lightweight systems, only the TIP IDENTIFY, BEGIN,
COMMIT, and ABORT commands are needed; no transaction log is
required.
Evans, et. al. Informational [Page 4]
RFC 2372 TIP Requirements and Supplemental Information July 1998
2) Server systems. Those which offer the above support, plus TIP
transaction coordination and recovery services. These systems may
also provide access to recoverable resources (e.g. relational
databases). Server systems support all TIP commands, and provide a
recoverable transaction log.
A TIP compliant Transaction Manager (TM), will also supply
application programming interfaces to demarcate transactions (e.g.
the X/Open TX interface [3]), plus commands to generate TIP URLs, to
PUSH/PULL TIP transactions, and to set the current TIP transaction
context. TIP support can be added to TMs with existing APIs and 2-pc
protocols, and transactions may comprise both proprietary and TIP
transaction branches (it is assumed existing TM implementations will
provide "TIP gateway" facilities which will coordinate between TIP
and other transaction protocols).
6. Relationship to the X/Open DTP Model
The X/Open Distributed Transaction Processing (DTP) Model [4] defines
four components: 1) Application Program (AP), 2) Transaction Manager
(TM), 3) Resource Manager (RM), and 4) Communications Resource
Manager (CRM). In this model, TIP defines a TM to TM interoperability
protocol, which is independent of application communications (there
is no such equivalent protocol specified by X/Open, where all
transaction and application communication occurs between CRMs (the
one-pipe model)). Programmatic interfaces between the AP and TM/RM
are unaffected by, and may be used with TIP. The TM to RM interaction
is defined via the X/Open XA interface specification [5]. TIP is
compatible with XA, and a TIP transaction may comprise applications
accessing multiple RMs where the XA interface is being used to
coordinate the RM transaction branches.
7. Example TIP Usage Scenario
It is expected that a typical internet usage of TIP will involve
applications using the agency model. In this model, the client node
itself is not directly involved in the TIP protocol at all, and does
not need the services of a local TIP TM. Instead, an agency (server)
application handles the dialogue with the client, and is responsible
for the coordination of the TIP transaction. The agency works with
other service providers to deliver the service to the client. e.g. as
a Travel Agency acts as an intermediate between airlines/hotels/etc
and the customer. A big benefit of this model is that the agency is
trusted by the service providers, and there are fewer such agencies
(compared to user clients), so issues of security and performance are
reduced.
Evans, et. al. Informational [Page 5]
RFC 2372 TIP Requirements and Supplemental Information July 1998
Consider a Travel Agency example. A client running a web browser on a
network PC accesses the Travel Agency web page. Via pages served up
by the agency (which may in turn be constructed from pages provided
by the airline and hotel servers), the client creates an itinerary
involving flights and hotel choices. Finally, the client clicks the
"make reservation" button. At this point the following sequence of
events occurs (user-written application code is invoked by the
various web servers, via any of the standard or proprietary
techniques available (e.g. CGI)):
1) The travel agency begins a local transaction, and gets a TIP URL
for this transaction (both of these functions are performed using
the API of the local TM. e.g. "tip_xid_to_url()" would return the
TIP URL for the local transaction). The TIP URL contains the
listening endpoint IP address of the local TM and the transaction
identifier of the local transaction.
2) The travel agency application sends a request to the airline
server (via some protocol (e.g. HTTP)), requesting the
"book_flight" service, passing the flights selected by the client,
and the TIP URL (obtained in 1. above).
3) The request is received by the airline server which invokes the
book_flight application. This application retrieves the TIP URL
from the input data, and passes this on a "tip_pull()" API request
to its local TM. The tip_pull() function causes the following to
occur:
a. the local TM creates a local transaction (under which the
work will be performed),
b. if a TIP connection does not already exist to the superior
(travel agency) TM (as identified via the IP address passed in
the TIP URL), one is created and an IDENTIFY exchange occurs
(if multiplexing is to be used on the connection, this is
followed by a MULTIPLEX exchange),
c. a PULL command is sent to the superior TM,
d. in response to the PULL, the superior TM associates the
subordinate (airline) TM with the transaction (by associating
the connection with the transaction), and sends a PULLED
response to the subordinate TM,
e. the subordinate TM returns control to the book_flight
application, which is now executing in the context of the newly
created local transaction.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?