KR100233238B1 - 분산 트랜잭션 시스템에서 다중 쓰레드를 이용한 2단계 승인통신방법 - Google Patents

분산 트랜잭션 시스템에서 다중 쓰레드를 이용한 2단계 승인통신방법 Download PDF

Info

Publication number
KR100233238B1
KR100233238B1 KR1019960069811A KR19960069811A KR100233238B1 KR 100233238 B1 KR100233238 B1 KR 100233238B1 KR 1019960069811 A KR1019960069811 A KR 1019960069811A KR 19960069811 A KR19960069811 A KR 19960069811A KR 100233238 B1 KR100233238 B1 KR 100233238B1
Authority
KR
South Korea
Prior art keywords
result
rollback
transaction
threads
coordinator
Prior art date
Application number
KR1019960069811A
Other languages
English (en)
Other versions
KR19980050963A (ko
Inventor
문기영
박성준
류영철
남궁한
손덕주
Original Assignee
정선종
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 정선종, 한국전자통신연구원 filed Critical 정선종
Priority to KR1019960069811A priority Critical patent/KR100233238B1/ko
Publication of KR19980050963A publication Critical patent/KR19980050963A/ko
Application granted granted Critical
Publication of KR100233238B1 publication Critical patent/KR100233238B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Accounting & Taxation (AREA)
  • General Engineering & Computer Science (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Finance (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

1. 청구범위에 기재된 발명이 속한 기술분야
분산 트랜잭션 시스템에서 다중 쓰레드를 이용한 2단계 승인통신방법.
2. 발명이 해결하려고 하는 기술적 과제
개방형(X/Open)에서 제안한 비동기 함수를 사용하지 않고도 동시에 여러 참여자들에게 승인 요청을 할 수 있도록 하고자 함.
3. 발명의 해결방법의 요지
트랜잭션 상태가 승인이면 참여자 수만큼 준비 조정자 쓰레드를 생성 동시에 실행시켜 각 쓰레드의 실행 결과가 모두 준비가 아니면 준비된 참여자 수만큼 롤백 쓰레드를 생성하고, 모두 준비이면 참여자 수만큼의 승인 조정자 쓰레드를 생성 동시에 승인을 실행하여 각 쓰레드의 실행 결과가 모두 승인이면 자원 해제 승인을 반환하고, 모두 승인이 아니면 회복관리자에게 휴리틱 처리를 요청하며, 전역 트랜잭션 상태가 취소이면 참여자 수만큼 롤백 조정자 쓰레드를 생성 동시에 롤백을 실행하여 각 쓰레드의 실행 결과가 모두 최소이면 롤백을 반환하고, 취소가 아니면 회복관리자에게 휴리틱 처리를 요청하도록 이루어짐.

Description

분산 트랜잭션 시스템에서 다중 쓰레드를 이용한 2단계 승인통신방법
본 발명은 분산 트랜잭션 처리 시스템에서 쓰레드를 이용하여 분산된 지역에 있는 전역 트랜잭션 참여자에게 동시에 2단계 승인 프로토콜로 통신하는 방법에 관한 것이다.
분산처리 환경에서 분산 트랜잭션을 수행하기 위해서는 다수의 서버에 분산되어 있는 각각의 트랜잭션을 하나의 전역 트랜잭션으로 묶어 처리할 수 있어야 한다. 이와 같은 문제를 해결하기 위한 일반적인 방법은 하나의 전역 트랜잭션에서 발생된 참여 사이트들이 수행한 트랜잭션 결과를 전역 트랜잭션 승인/취소로 보장하는 2단계 승인 규약이다.
2단계 승인 규약은 트랜잭션에 참여한 참여자 사이트 중에 한 사이트가 조정자가 되어, 1단계에서 조정자가 참여자에게 준비 메시지를 전달한다. 각 참여자는 해당 사이트 상태를 확인하여 승인 찬성 메시지를 승인자에게 응답하면, 2단계에서 조정자는 승인을 결정하여 참여자에게 승인 메시지를 전달하는 방법이다.
종래의 개방형(X/Open) 분산 트랜잭션 처리 모델의 2단계 승인은 원거리 참여자에게 참여자들이 수행 완료를 기다리지 않고 메시지를 보내려면 비동기 방법으로 수행해야 했다.
비동기 방식의 2단계 승인은 비동기 플래그를 사용하여 원거리 참여자에게 비동기로 승인 요청을 하고 결과 값을 반환받지 않고 지역 자원 관리자에게 2단계 승인 요청을 수행한 다음, xa_complete()라는 함수를 사용하여 원거리 참여자들의 변환 값을 받는다. 이 방법은 비록 동시에 수행하는 방식은 아니지만 하나의 제어에서 동시에 수행하는 효과를 얻을 수 있다.
그러나, 비동기 승인을 위해 승인 요청 시, 결과 값을 돌려받기 위한 참여자 통신 통로(핸들)를 저장하기 때문에 부하가 가중되고, 반환 값을 받기 위해 모두 2번의 통신을 더 수행해야 하는 문제점이 있었다.
따라서, 상기와 같은 종래 기술의 문제점을 해결하기 위하여 안출된 본 발명은 2단계 승인 요청자를 다중 쓰레기 구조를 갖는 툴킷으로 설계하여, 전역 트랜잭션에 참여한 모든 참여자들 마다 하나의 2단계 승인 쓰레드를 할당하여 메시지를 주고 받도록 함으로써, 이들 다중 승인 쓰레드들은 참여자들에게 분산 컴퓨팅 환경(DCE : Distributed Computing Environment) 원격 처리 호출(RPC : Remote Procedure Call)을 통해 승인 메시지를 동시에 전달하므로, 개방형(X/Open)에서 제안한 비동기 함수를 사용하지 않고도 동시에 여러 참여자들에게 승인 요청을 할 수 있는 다중 쓰레드를 이용한 2단계 승인통신방법을 제공하는데 그 목적이 있다.
제1도는 개방형 분산 트랜잭션 처리 시스템의 개략적인 구조도.
제2도는 본 발명에서의 분산 트랜잭션 처리 시스템의 개략적인 구조도.
제3도는 본 발명에 따른 2단계 승인통신 방법을 설명하기 위한 설명도.
제4도는 본 발명에 따른 2단계 승인 주 쓰레드의 처리 흐름도.
제5도는 본 발명에 따른 준비 조정자 쓰레드의 처리 흐름도.
제6도는 본 발명에 따른 참여자 준비 쓰레드의 처리 흐름도.
제7도는 본 발명에 따른 승인 조정자 쓰레드의 처리 흐름도.
제8도는 본 발명에 따른 참여자 승인 조정자 쓰레드의 처리 흐름도.
제9도는 본 발명에 따른 롤백 조정자 쓰레드의 처리 흐름도.
제10도는 본 발명에 따른 참여자 롤백 쓰레드의 처리 흐름도.
상기 목적을 달성하기 위한 본 발명은, 분산 트랜잭션 시스템에 적용되는 2단계 승인통신방법에 있어서, 제1시스템에서 전역 트랜잭션 상태의 확인 결과 취소(abort)가 아니면 자신에 연결된 제2시스템의 수만큼의 준비(prepare) 조정자 쓰레드(thread)를 생성하여, 동시에 각각 대응되는 상기 제2시스템으로 준비 함수를 호출하는 제1단계; 상기 호출된 각각의 제2시스템에서 지시에 따라 수행한 결과를 반환하는 제2단계; 상기 제1시스템에서 상기 제2시스템로부터 반환된 결과를 확인하여, 모두 준비이면 상기 제2시스템의 수만큼의 승인(commit) 조정자 쓰레드를 생성하여, 동시에 각각 대응되는 상기 제2시스템으로 승인 함수를 호출하는 제3단계; 상기 호출된 각각의 제2시스템에서 지시에 따라 수행한 결과를 반환하는 제4단계; 상기 제1시스템에서 상기 제2시스템들로부터 반환된 결과를 확인하여, 모두 승인이면 자원을 해제하고 승인을 반환하며, 모두 승인이 아니면 회복관리자에게 휴리틱 처리를 요청하는 제5단계; 상기 제1시스템에서 전역 트랜잭션 상태가 취소이거나, 상기 제2단계의 수행결과 모두 준비가 아니면 상기 제2시스템의 수만큼의 롤백 조정자 쓰레드를 생성하여, 동시에 각각 대응되는 상기 제2시스템으로 롤백 함수를 호출하는 제6단계; 상기 호출된 제2시스템에서 지시에 따라 수행한 결과를 반환하는 제7단계; 및 상기 제1시스템에서 상기 제2시스템들로부터 반환된 결과를 확인하여, 모두 포기이면 자원을 해제하고 롤백을 반환하며, 모두 포기가 아니면 회복관리자에게 휴리틱 처리를 요청하는 제8단계를 포함하는 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명의 일 실시예를 상세히 설명하기로 한다.
제1도는 개방형 분산 트랜잭션 처리 시스템의 개략적인 구조도를 나타낸다.
개방형 분산 트랜잭션 처리 시스템은 응용 프로그램(AP : Application Program), 트랜잭션 관리자(TM : Transaction Manager), 자원 관리자(RM : Resource Manager), 그리고 통신자원 관리자(CRM : Communication Resource Manager)의 네가지 요소로 구성된다.
이들 요소들 간 인터페이스는 응용 프로그램(AP)과 트랜잭션 관리자(TM) 사이의 TX 인터페이스, 트랜잭션 관리자(TM)와 자원 관리자(RM) 사이는 XA 인터페이스, 그리고 트랜잭션 관리자(TM)와 통신자원 관리자(CRM) 사이에는 XA+ 인터페이스로 통신한다.
또 통신 자원 관리자와 통신 자원 관리자간에는 TxRPC, XATMI, PPC의 3가지 접속 규격이 있으며, 본 발명은 3가지 통신 방법 중에서 분산 컴퓨터 환경(DCE) 원격 처리 호출(RPC)을 이용하여 TxRPC(Transactional RPC)로 통신한다.
응용 프로그램은 전역 트랜잭션의 범위를 정의하고, 그 범위에서 수행하는 응용 작업을 기술한다.
트랜잭션 관리자는 응용 프로그램의 트랜잭션 지시를 받아 자원 관리자와 통신 관리자의 트랜잭션 상태를 제어하여 전역 트랜잭션을 처리한다.
자원 관리자는 트랜잭션 기능이 제공되는 데이터베이스 관리 시스템(DBMS)이나 C-ISAM 파일 시스템 같은 공유 자원으로 트랜잭션 관리자의 제어를 받아 응용 프로그램에게 공유 자원을 제공한다.
제2도는 본 발명에서의 분산 트랜잭션 처리 시스템의 개략적인 구조도를 나타낸다.
본 발명의 분산 트랜잭션 처리 시스템도 제1도의 개방형(X/Open) 분산 트랜잭션 처리(DTP) 모텔을 준수한다. 그러나, 트랜잭션 관리자와 통신 관리자 간의 인터페이스를 정의한 XA+는 완전히 규격화 되지 않은 상태이다. 그러므로, 트랜잭션 관리자와 통신 관리자 간의 인터페이스를 별도로 정의하여 사용하고 있다. OSI-TP 프로토콜은 서로 상이한 분산형 트랜잭션 처리(DTP) 사이에서 상호 운용성(interoperability)을 제공한다. 그러나, 본 발명의 분산 트랜잭션 처리 시스템은 OSI-TP가 OSI 7층 네트워크 스택을 요구하고, 구현의 복잡성 때문에 DCE RPC 통신 프로토콜을 이용하여 통신한다.
본 발명에서 전역 트랜잭션을 처음 발생시킨 클라이언트가 승인 조정자가 되고, 나머지 전역 트랜잭션에 관계된 사이트는 참여자가 된다. 그러나, 개방형(X/Open) 분산 트랜잭션 처리(DTP) 시스템 모델은 모든 사이트가 서버나 클라이언트로 운영이 된다.
본 발명의 2단계 승인은 그 2단계 승인에 관계된 요소들이 모두 툴킷으로 이루어진다. 즉, 응용 프로세스에서 DCE RPC를 이용하여 원격 조정자들과 개별적으로 2단계 승인을 수행한다.
응용 프로그램은 트랜잭션 범위 선언과 RPC 호출 서비스를 수행하고, 전역 트랜잭션이 완료되었음을 선언하면 트랜잭션 관리자는 2단계 승인 프로토콜을 이용하여 원거리 트랜잭션 관리자에게 트랜잭션을 승인/취소시킨다.
응용 쓰레드가 tx_commit()이나 tx_rollback()을 호출하면 2단계 승인 조정자는 참여자에게 준비(prepare)나 승인(commit), 취소(abort) 같은 승인 규약 함수를 RPC를 이용하면 수행한다. 참여자는 RPC 메시지를 전달받아서 2단계 승인 처리 루틴을 수행하여, 결과 값으로 준비(ready)나 취소(abort), 응답(ack) 메시지를 반환한다.
2단계 승인 조정자가 응용 프로그램과 같이 수행되기 위해서는 DCE RPC 2단계 승인 IDL(Interface Definition Language), 그리고 전역 조정자와 중간 조정자와 지역 조정자 함수가 있다.
응용 프로그램은 tx_begin()으로 전역 트랜잭션을 시작하여 응용 서버에게 RPC 호출로 서비스를 요청하거나, 지역 자원 관리자에게 서비스를 요청한다. 시스템 1은 클라이언트가 되면서 트랜잭션의 조정자 지역이 된다.
한 전역 트랜잭션은 시스템이 관할하는 분산된 지역의 모든 곳에서 발생되고, 한 전역 트랜잭션의 식별자는 전 시스템에 걸쳐 유일하면서 동일하다.
제3도는 본 발명에 따른 2단계 승인통신을 설명하기 위한 설명도이다.
본 발명의 2단계 승인 요청은 2개의 쓰레드 함수로 나눌 수 있다. 하나는 원거리 참여자를 위한 쓰레드 함수로 2단계 승인 시, 제3도와 같이 원거리 참여자들마다 하나씩 2단계 승인 쓰레드를 사용하여 승인 요청을 DCE RPC를 통해 수행한다. 또 하나의 2단계 승인 쓰레드는 지역 자원 관리자에게 승인 요청을 수행한다.
이들 쓰레드를 본 발명에서는 원거리 2단계 승인 쓰레드(R2PC thread)와 지역 자원 관리자 2단계 승인 쓰레드(L2PC thread)라고 한다. 원거리 2단계 승인 쓰레드 원거리 참여자 수만큼 생성되어 원거리 참여자와 1대1로 대응하여 각자 독립적으로 수행하므로, 동시에 2단계 승인을 수행한다. 지역 자원 관리자 2단계 승인 쓰레드는 지역 자원 관리자 수만큼 생성되어 원거리 2단계 승인 쓰레드와 동시에 수행된다.
시스템 1은 하나의 자원 관리자와 두 개의 원거리 참여자가 있고, 시스템 2는 하나의 자원 관리자와 하나의 원거리 참여자가 있으며, 시스템 3은 하나의 자원 관리자가 있다고 가정한다. 다중 쓰레드 기법을 이용하여 2단계 승인을 수행하면 시스템 1은 1개의 지역 자원 관리자 승인 쓰레드와 2개의 원거리 승인 쓰레드를 생성하여 동시에 3군데에 승인 요청을 한다. 시스템 2는 승인 요청을 받고 1개의 지역 자원 관리자 승인 쓰레드와 1개의 원거리 승인 쓰레드를 생성하여 동시에 2군데에 승인 요청을 한다. 시스템 3은 지역 자원 관리자 승인 쓰레드를 생성하여 승인을 수행한다. 이와 같이 본 발명은 다중 쓰레드를 이용하여 2단계 승인을 수행하여 개방형(X/Open)에서 제안한 비동기 승인 방법보다 부가적인 동작없이 수행할 수 있게 하였다.
다중 쓰레드를 이용한 2단계 승인을 위해 필요한 요소는 원거리 2단계 승인을 위한 2단계 승인 함수와 지역 자원 관리자를 위한 2단계 승인 함수, 그리고 원거리 참여자들과 DCE RPC 통신을 위한 2단계 승인 IDL(Interface Definition Language) 정의가 필요하다.
DCE RPC에서 서버는 rpc_server_listen()이라는 RPC 런타임 함수에 의해 클라이언트 요청을 기다린다. 전역 트랜잭션 승인 요청 시 각 사이트에 있는 2단계 승인 조정자들과 통신을 하기 위해 응용 프로그램 IDL외에 2단계 승인 IDL을 정의한다.
2단계 승인 IDL은 툴킷으로 구성되어 있어서 사용자에게는 숨겨져 있다. 다만 사용자가 시스템 사용 시작을 선언하면 자동적으로 응용 프로세스와 결합되어 수행된다.
DCE RPC는 동기화 통신만 한다. 그래서 특정 응용 프로그램이 여러 서버와 통신을 할 때, 순차적으로 제어를 서버와 클라이언트가 서로 주고 받으면서 통신을 한다.
제4도는 본 발명에 따른 2단계 승인 주 쓰레드의 처리 흐름도를 나타낸다.
먼저, 전역 트랜잭션 상태를 확인하여 취소(Abort)가 아니면(101) 참여자들 수만큼 준비(prepare) 조정자 쓰레드를 생성하여(102) 각 쓰레드 결과 상태를 확인한다(104).
확인결과 모두 준비(prepare)이면 다시 참여자 수만큼 승인(commit) 조정자 쓰레드를 생성하여(106) 각 쓰레드 결과 상태를 확인한다(108).
확인 결과 모두 승인이면(109) 자원은 해제하고, 승인을 반환하며(110), 모두 승인이 아니면 회복 관리자에게 휴리틱 처리를 요청한다(111).
반대로 전역 트랜잭션 상태가 취소(Abort)이거나 모두 준비(Prepare) 쓰레드가 아니면 참여자 수만큼 롤백(rollback) 조정자 쓰레드를 생성하여(112,113) 각 쓰레드 결과 상태를 확인한다(115).
확인결과 모두 취소(abort)이면 (116) 자원을 해제하고, 롤백(rollback)을 반환하며(117), 모두 취소가 아니면 회복 관리자에게 휴리틱 처리를 요청한다(118).
제5도는 본 발명에 따른 준비 조정자 쓰레드의 처리 흐름도를 나타낸다.
준비(prepare) 조정자 쓰레드는 각 쓰레드가 하나의 참여자와 연결되어 준비를 실시한다. 해당 참여자의 원격 처리 호(RPC) 핸들을 가져와서(121), RPC 호출로 참여자의 준비 함수를 호출한다(122,123).
RPC 호출의 반환값이 준비 성공이면(124) 쓰레드 관리 변수를 준비(prepare)로 설정하고(125), 변환 값이 준비 실패이면 쓰레드 관리 변수를 취소(abort)로 설정한다(126).
제6도는 본 발명에 따른 참여자 준비 쓰레드의 처리 흐름도를 나타낸다.
참여자는 조정자의 준비(prepare) 함수 호출로 준비(prepare) 쓰레드를 생성한다. 참여자는 트랜잭션 식별자(XID)로 해당 트랜잭션 리스트의 문맥(Context)을 찾는다(131). 참여자도 자신의 응용 흐름 속에 자원 관리자나 참여자가 있으면 부조장자가 된다. 그래서 다시 자신에 속한 참여자가 있는지 확인하여 참여자 수 만큼 준비(prepare) 조정자 쓰레드를 만들어(132) 조정자들에게 동시에 준비(prepare)를 수행시킨다.
모든 쓰레드가 완료된 후, 각 쓰레드가 관리하는 변수를 확인하여(133) 모두 준비(prepare)이면(134) 결과를 성공으로 하여 반환하고(135), 반대로 전역 트랜잭션 상태가 취소(abort)이거나 준비 단계gn 상태가 취소이면 참여자 수만큼 롤백(rollback) 쓰레드를 생성하야(136) 동시에 롤백을 실시하고 결과를 실패로 반환한다(137).
제7도는 본 발명에 따른 승인 조정자 쓰레드의 처리 흐름도이다.
승인(commit) 조정자 쓰레드는 각 쓰레드가 하나의 참여자와 연결되어 승인(commit)을 실시한다. 해당 참여자의 RPC 핸들을 가져와서(141) 호출로 참여자의 승인(commit) 함수를 호출한다(142,143). RPC 호출의 반환값이 응답으로 성공이면(144) 쓰레드 관리 변수를 승인(commit)으로 한다. 반환 값이 무응답으로 실패이면 취소(abort)로 설정한다(146).
제8도는 본 발명에 따른 참여자 승인 쓰레드의 처리 흐름도를 나타낸다.
참여자는 조정자의 승인(commit) 함수 호출로 승인(commit) 쓰레드를 생성한다. 참여자는 트랜잭션 식별자(XID)로 해당 트랜잭션 리스트 문맥(Context)을 찾는다(151). 참여자도 자신의 응용 흐름속에 자원 관리자나 참여자가 있으면 부조정자가 된다. 그래서 다시 자신에 속한 참여자가 있는지 확인하여 참여자 수만큼 승인(commit) 조정자 쓰레드를 만들어(152) 조정자들에게 동시에 승인(commit)을 수행시킨다.
모든 쓰레기가 완료된 후, 각 쓰레드가 관리하는 변수를 확인하여(153) 모두 승인(commit)이면(154) 응답을 반환하고(155), 반대로 전역 트랜잭션 상태가 취소(abort)이면 회복관리자에게 휴리틱 처리 요청을 한다(156).
제9도는 본 발명에 따른 롤백 조정자 쓰레드의 처리 흐름도를 나타낸다.
롤백(rollback) 조정자 쓰레드는 각 쓰레드가 하나의 참여자와 연결되어 롤백을 실시한다. 해당 참여자의 RPC 핸들을 가져와서(161), 호출로 참여자의 로백(rollback) 함수를 호출한다(162,163).
호출의 반환값이 응답으로 롤백 성공이면(164) 쓰레드 관리 변수를 취소(abort)로 설정하고(165), 변환 값이 무응답으로 롤백 실패이면 승인(commit)으로 설정한다(166).
제10도는 본 발명에 따른 참여자 롤백 쓰레드의 처리 흐름도를 나타낸다.
참여자는 조정자의 롤백(rollback) 함수 호출로 롤백 쓰레드를 생성한다. 참여자는 트랜잭션 식별자(XID)로 해당 트랜잭션 리스트 문맥(context)을 찾는다(171). 참여자도 자신의 응용 흐름 속에 자원 관리자나 참여자가 있으면 부조정자가 된다. 그래서 다시 자신에 속한 참여자가 있는지 확인하여 참여자 수만큼 롤백 조정자 쓰레드를 만들어(172) 조정자들에게 동시에 롤백을 수행시킨다.
모든 쓰레드가 완료된 후, 각 쓰레드가 관리하는 변수를 확인하여(173) 모두 롤백(rollback)이면(174) 응답으로 RPC를 반환하고(175). 반대로 전역 트랜잭션 상태가 승인(commit)이면 회복관리자에게 휴리틱 처리 요청을 한다(176).
이상에서 설명한 본 발명은 본 발명이 속하는 기술분야에서 통상의 지식을 가진자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위내에서 여러 가지 치환, 변형 및 변경이 가능하므로, 전술한 실시예 및 도면에 한정되는 것이 아니다.
상기와 같이 이루어지는 본 발명은, 동시에 모든 참여자들에게 승인을 요청할 수 있는 다중 쓰레드를 이용 2단계 승인을 수행함으로써, 부가적인 통신 횟수를 줄이고, 전역 트랜잭션에 참가한 참여자들에게 동시에 승인 요청을 수행하여 전체 시스템의 2단계 승인 성능을 높일 수 있는 효과가 있다.

Claims (4)

  1. 분산 트랜잭션 시스템에 적용되는 2단계 승인통신방법에 있어서, 제1시스템에서 전역 트랜잭션 상태의 확인 결과 취소(abort)가 아니면 자신에 연결된 제2시스템의 수만큼의 준비(prepare) 조정자 쓰레드(thread)를 생성하여, 동시에 각각 대응되는 상기 제2시스템으로 준비 함수를 호출하는 제1단계; 상기 호출된 각각의 제2시스템에서 지시에 따라 수행한 결과를 반환하는 제2단계; 상기 제1시스템에서 상기 제2시스템들로부터 반환된 결과를 확인하여, 모두 준비이면 상기 제2시스템의 수만큼의 승인(commit) 조정자 쓰레드를 생성하여, 동시에 각각 대응되는 상기 제2시스템으로 승인 함수를 호출하는 제3단계; 상기 호출된 각각의 제2시스템에서 지시에 따라 수행한 결과를 반환하는 제4단계; 상기 제1시스템에서 상기 제2시스템들로부터 반환된 결과를 확인하여, 모두 승인이면 자원을 해제하고 승인을 반환하며, 모두 승인 아니면 회복관리자에게 휴리틱 처리를 요청하는 제5단계; 상기 제1시스템에서 전역 트랜잭션 상태가 취소이거나, 상기 제2단계의 수행결과 모두 준비가 아니면 상기 제2시스템의 수만큼의 롤백 조정자 쓰레드를 생성하여, 동시에 각각 대응되는 상기 제2시스템으로 롤백 함수를 호출하는 제6단계; 상기 호출된 제2시스템에서 지시에 따라 수행한 결과를 반환하는 제7단계; 및 상기 제1시스템에서 상기 제2시스템들로부터 반환된 결과를 확인하여, 모두 포기이면 자원을 해제하고 롤백을 반환하며, 모두 포기가 아니면 회복관리자에게 휴리틱 처리를 요청하는 제8단계를 포함하는 분산 트랜잭션 시스템에서의 2단계 승인통신방법.
  2. 제1항에 있어서, 상기 제2단계는, 상기 각각의 제2시스템에서 트랜잭션 식별자(XID)로 해당 트랜잭션 리스트를 찾아 자신에 속한 참여자인 제3시스템 수만큼의 준비 조정자 쓰레드를 생성하여, 동시에 상기 제3시스템으로 준비를 수행시키는 단계; 상기 각 제3시스템으로부터의 결과를 확인하는 단계; 확인결과, 모두 준비이면 결과를 성공으로 하여 반환하는 단계; 및 확인결과, 모두 준비가 아니면 준비된 상기 제3시스템의 수만큼의 롤백 쓰레드를 생성하여 동시에 롤백을 실시하고, 결과를 실패로 반환하는 단계를 포함하는 것을 특징으로 하는 분산 트랜잭션 시스템에서의 2단계 승인통신방법.
  3. 제1항 또는 제2항에 있어서, 상기 제4단계는, 상기 각각의 제2시스템에서 트랜잭션 식별자(XID)로 해당 트랜잭션 리스트를 찾아 자신에 속한 참여자인 상기 제3시스템 수만큼의 승인 조정자 쓰레드를 생성하여, 동시에 상기 제3시스템으로 승을 수행시키는 단계; 상기 각 제3시스템으로부터의 결과를 확인하는 단계; 확인결과, 모두 승인이면 결과를 성공으로 하여 응답을 반환하는 단계; 및 확인결과, 모두 승인이 아니면 회복관리자에게 휴리틱 처리를 요청하고, 결과를 실패로 반환하는 단계를 포함하는 것을 특징으로 하는 분산 트랜잭션 시스템에서의 2단계 승인통신방법.
  4. 제3항에 있어서, 상기 제7단계는, 상기 각각의 제2시스템에서 트랜잭션 식별자(XID)로 해당 트랜잭션 리스트를 찾아 자신에 속한 참여자가 상기 제3시스템 수만큼의 롤백 조정자 쓰레드를 생성하여, 동시에 상기 제3시스템으로 룰백을 수행시키는 단계; 상기 각 제3시스템으로부터의 결과를 확인하는 단계; 확인결과, 모두 롤백이면 결과를 성공으로 하여 응답을 반환하는 단계; 및 확인결과, 모두 롤백이 아니면 회복관리자에게 휴리틱 처리를 요청하는 단계를 포함하는 것을 특징으로 하는 분산 트랜잭션 시스템에서의 2단계 승인통신방법.
KR1019960069811A 1996-12-21 1996-12-21 분산 트랜잭션 시스템에서 다중 쓰레드를 이용한 2단계 승인통신방법 KR100233238B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019960069811A KR100233238B1 (ko) 1996-12-21 1996-12-21 분산 트랜잭션 시스템에서 다중 쓰레드를 이용한 2단계 승인통신방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019960069811A KR100233238B1 (ko) 1996-12-21 1996-12-21 분산 트랜잭션 시스템에서 다중 쓰레드를 이용한 2단계 승인통신방법

Publications (2)

Publication Number Publication Date
KR19980050963A KR19980050963A (ko) 1998-09-15
KR100233238B1 true KR100233238B1 (ko) 1999-12-01

Family

ID=19490138

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960069811A KR100233238B1 (ko) 1996-12-21 1996-12-21 분산 트랜잭션 시스템에서 다중 쓰레드를 이용한 2단계 승인통신방법

Country Status (1)

Country Link
KR (1) KR100233238B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030013200A (ko) 2001-08-07 2003-02-14 한국전자통신연구원 객체 트랜잭션 서비스 조정자를 이용한 자바 트랜잭션서비스의 상태객체 제거방법
KR100474795B1 (ko) * 2003-03-25 2005-03-09 류재수 자동차 냉난방시스템의 풍향조절장치
KR101271211B1 (ko) * 2009-08-18 2013-06-07 한국전자통신연구원 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법
US9760584B2 (en) * 2012-03-16 2017-09-12 Oracle International Corporation Systems and methods for supporting inline delegation of middle-tier transaction logs to database
CN107493574B (zh) * 2013-12-31 2020-10-23 安科讯(福建)科技有限公司 无线控制器设备、并行认证处理方法、系统、组网装置

Also Published As

Publication number Publication date
KR19980050963A (ko) 1998-09-15

Similar Documents

Publication Publication Date Title
US4274139A (en) Digital telecommunication network having improved data processing systems
US6738971B2 (en) Using a resource manager to coordinate the comitting of a distributed transaction
EP0817445B1 (en) Apparatus and method for indentifying server computer aggregation topologies
EP1025497B1 (en) Method and apparatus for performing transactions in a stateless web environment which supports a declarative paradigm
US7415522B2 (en) Extensible framework for transferring session state
US6470342B1 (en) Process of maintaining a distributed map of transaction identifiers and using hashing to access these maps
AU746391B2 (en) Method and system for facilitating distributed software development in a distribution unaware manner
US6275843B1 (en) Method and apparatus for processing multiple service requests within a global transaction by a single server application program instance
US6157927A (en) Methods and apparatus for enabling a component in a first transaction processing environment to access a resource in another environment that is under the control of an Xatmi complaint transaction manager
EP0684569B1 (en) Database system
US5748897A (en) Apparatus and method for operating an aggregation of server computers using a dual-role proxy server computer
CN107203560B (zh) 数据库、多数据库操作事务一致性保证方法及系统
US6141679A (en) High performance distributed transaction processing methods and apparatus
EP0834807A1 (en) Method and apparatus for performing efficient corba transactions
KR100233238B1 (ko) 분산 트랜잭션 시스템에서 다중 쓰레드를 이용한 2단계 승인통신방법
JP3574030B2 (ja) コンピューティング装置、操作方法およびプログラム記憶装置
CA2533773C (en) Transparent session migration across servers
CN107465725A (zh) 基于客户信息控制系统的异构长事务处理系统及方法
JPH08272744A (ja) 情報処理方法及び装置
US6772176B1 (en) Coordinating a distributed transaction between participants unable to follow a two-phase commit
Böttcher et al. Reducing sub-transaction aborts and blocking time within atomic commit protocols
JP2007507762A (ja) ステートレスなセッションの透過的なサーバ間移送
CN111240827A (zh) 一种事务型数据库连接池的改进方法
Jeong et al. Dce (distributed computing environment) based dtp (distributed transaction processing)
CN112181377A (zh) 服务调用的事务管理器协同框架、设计方法及云平台

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20090914

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee