KR101126979B1 - 분산형 고장 허용 및 고가용성 컴퓨팅 시스템 - Google Patents

분산형 고장 허용 및 고가용성 컴퓨팅 시스템 Download PDF

Info

Publication number
KR101126979B1
KR101126979B1 KR1020097016949A KR20097016949A KR101126979B1 KR 101126979 B1 KR101126979 B1 KR 101126979B1 KR 1020097016949 A KR1020097016949 A KR 1020097016949A KR 20097016949 A KR20097016949 A KR 20097016949A KR 101126979 B1 KR101126979 B1 KR 101126979B1
Authority
KR
South Korea
Prior art keywords
component
message
deterministic
components
execution
Prior art date
Application number
KR1020097016949A
Other languages
English (en)
Other versions
KR20090118934A (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 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20090118934A publication Critical patent/KR20090118934A/ko
Application granted granted Critical
Publication of KR101126979B1 publication Critical patent/KR101126979B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1461Backup scheduling policy
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/835Timestamp

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Retry When Errors Occur (AREA)

Abstract

컴포넌트 상태가 지속적이도록 하기 위해 이들 컴포넌트의 기록자가 (엔티티 빈 또는 데이터베이스 트랜잭션과 같이) 코드를 명시적으로 기록해야 할 필요 없이, 분산 컴퓨팅 시스템에서 컴포넌트의 고가용성, 고장 허용 실행을 달성하기 위한 방법 및 시스템이 개시된다. 이는 분산 시스템의 본질적인 비결정론적 거동을 결정론적 거동으로 전환함으로써 달성되며, 그리하여 유리하게 효율적인 체크포인트 재생(checkpoint-point) 기술에 의해 상태 복구가 달성될 수 있다. 본 방법은, 컴포넌트들 간의 메시지 통신을 가능하게 하도록 실행 환경을 적응시키고, 프로그램 실행 동안 전송지 컴포넌트로부터 수신지 컴포넌트로 전달될 메시지와 함께 결정론적 타임스탬프를 자동으로 연관시키는 것을 포함하며, 상기 타임스탬프는 수신지 컴포넌트에서의 메시지의 추정되는 도달 시간을 나타낸다. 컴포넌트에서, 프로그램 실행 동안 그 컴포넌트의 상태를 추적하고, 로컬 저장 디바이스에 상태를 주기적으로 체크포인트하는 것을 포함한다. 컴포넌트의 고장시, 컴포넌트 상태는 최근 저장된 체크포인트를 복구하고 최근 저장된 체크포인트 이래로 발생한 이벤트를 재실행함으로써 복원된다. 시스템은 그들 연관된 타임스탬프와 동일한 순서로 메시지를 처리함으로써 수신 컴포넌트의 실행을 반복함으로써 결정론적이다.

Description

분산형 고장 허용 및 고가용성 컴퓨팅 시스템{DISTRIBUTED, FAULT-TOLERANT AND HIGHLY AVAILABLE COMPUTING SYSTEM}
본 발명은 일반적으로 분산 시스템(distributed systems)을 개발하고 실행시키기 위한 애플리케이션 개발 툴, 방법 및 시스템에 관한 것으로, 보다 상세하게는 컴포넌트 지향 애플리케이션을 실행시키기 위한 분산형, 투과적(transparently) 고장 허용(fault-tolerant), 및 고가용성(highly available) 시스템을 개발하고 실행시키기 위한 개선된 환경에 관한 것이다.
SCA 서비스 컴포넌트 아키텍쳐(Service Component Architecture)는 비즈니스 함수를 정의하는 IT 서비스를 구현하기 위한 개방형 기술 중립적 모델을 제공한다. SCA는 또한, 개별 서비스들의 수집으로부터의 비즈니스 솔루션의 어셈블리에 대한 모델을, 액세스 방법 및 보안과 같은 솔루션 양상에 걸친 제어와 함께, 제공한다. SCA를 이용하여, 고객은 보다 용이하게 새로운 IT 자산을 생성하고 기존의 IT 자산을 변하는 비즈니스 요건에 빠르게 적응될 수 있는 재사용 가능한 서비스로 변환할 수 있다. SCA (미들웨어) 컴포넌트의 구축을 가능하게 하는 사양은, 비즈니스 함수를 수행하는 일련의 재사용 가능한 서비스로서 IT 자산을 구조화하는 서비스 지향 아키텍쳐(SOA; Service-Oriented Architecture)를 활용한다. 서비스 지향 아키텍쳐 는, 원격 객체 및 함수("서비스"라 부름)를 호출할 수 있는 능력을, 동적 서비스 탐색을 위한 툴과 조합하며, 상호운용성(interoperability)에 중점을 둔다. 현재, 산업계의 목표는, SOA에 기초하여 애플리케이션을 구성하는 것의 보다 단순하고 보다 강력한 방식을 애플리케이션 개발자에게 제공하는 것이다.
또한, SCA 컴포넌트를 구현하는 분산 시스템의 개발에 있어서, 지속적인(persistent) '설정'(분산 시스템 전체에 걸쳐 매스 미디어를 통해 저장됨) 또는 고장 허용 방식으로 보존된 '상태'를 나타내는 것일 수 있는 '비휘발성' 데이터의 투과적 및 고장 허용 이용능력을 제공하는 것이 목표이다. 현재, 분산형 고장 허용 및 고가용성 시스템의 개발은 임시적이고(ad-hoc) 오류가 일어나기 쉬우며 많은 시간이 소모된다. 현행 솔루션은, 통화 가격의 변동 및 환전 동작이 순서를 따르지 않거나 비원자형(non-atomic)일 수 있는 예시적인 통화 교환(currency exchange) 시스템과 유사하다. 실행은 보통 네트워크 또는 스레딩(threading)으로 인해 비결정론적(non-deterministic)이며, 지속성을 위한 기존의 메커니즘(엔티티 빈(entity bean), JDBC 등)은 중량급이고, 추가의 지식 및 추가의 코드를 필요로 한다.
예를 들어, 현행 솔루션은 엔티티 빈, 예를 들어 J2EE 플랫폼에 대한 서버측 컴포넌트 아키텍쳐를 포함하는 "엔터프라이즈 자바 빈(EJB; Enterprise Java Bean)"을 구현한다. EJB는 분산형, 트랜잭션, 보안 및 휴대용 자바 애플리케이션의 빠르고 단순화된 개발을 지원하는 것으로 알려져 있다. EJB는 메시지의 동시 소비를 가능하게 하는 컨테이너 아키텍쳐를 지원하고 분산 트랜잭션에 대한 지원을 제공하며, 그리하여 J2EE 아키텍쳐를 사용하는 엔터프라이즈 시스템에의 접속, 메시 지 처리, 및 데이터베이스 업데이트가 동일한 트랜잭션 컨텍스트에 참여할 수 있다.
그 상태를 지속하기 위해 컴포넌트 상태를 개별 객체들로 가려내는 트랜잭션, JDBC, 또는 엔티티 빈과 같은 특수화된 방법론 및 구조를 프로그래머가 학습하여야 할 필요성을 제거하고, 대신에 보통의 코드에 대하여 지속성 및 고장 허용(투과적 고장 허용이라고도 부름)을 자동으로 제공하는 것이 매우 바람직할 것이다.
본 발명의 양수인이 공동으로 소유하는 미국 특허 제4,665,520호에 기재된 기술을 포함하여, 분산 시스템에서의 투과적 고장 허용을 위한 기술이 존재한다. 이러한 기술의 성능은, 하나의 분산 컴포넌트로부터 다른 것으로의 각각의 통신이 로깅될 필요가 있기 때문에, 분산 시스템에 있어서 통신 컴포넌트의 거동의 비결정론에 의해 제한된다.
또한, 비결정론적 분산 시스템을 복구하는 것의 성능 문제를 피하기 위해, 결정론적(deterministic) 실행, 고장 허용 및 고가용성을 투과적으로 지원하는 실행 서버를 제공하는 것이 매우 바람직할 것이다.
더욱이, 프로그래머에 대하여 단순한 컴포넌트 기반의 모델을 제공하고, 특히 미들웨어 기능을 애플리케이션 개발자가 보다 액세스 가능하게 만드는 시스템 및 방법을 제공하는 것이 매우 바람직할 것이다.
따라서, 여기 상기에 기재된 바와 같은 종래 기술의 단점을 개선하는 것이 본 발명의 넓은 목적이다.
컴포넌트 지향 애플리케이션에 대하여 결정론적 실행, 고장 허용 및 고가용성을 투과적으로 지원하는 실행 환경을 제공하는 것이 본 발명의 또 다른 목적이다.
컴퓨팅 시스템 및 방법론에 의해 이들 및 기타 관련 목적의 달성이 이루어진다. 본 결정론적 컴퓨팅 시스템은,
각각이 작업을 수행할 로직을 구현하는 것인 복수의 소프트웨어 컴포넌트 - 상기 컴포넌트는, 네트워크에서 접속되어 있는 하나 이상의 머신을 포함하며 상기 컴포넌트들 간에 메시지를 통신하도록 적응된 실행 환경에서 실행됨 - ;
프로그램 실행 동안 송신지 컴포넌트로부터 수신지 컴포넌트로 전달될 메시지와 함께 결정론적 타임스탬프를 자동으로 연관시키는 수단 - 상기 타임스탬프는 수신지 컴포넌트에서의 상기 메시지의 추정되는 도달 시간을 나타냄 - ;
입력 메시지들의 고유의 도달 순서를 생성하도록 상기 타임스탬프를 사용함으로써 상기 컴포넌트를 결정론적으로 실행시키는 수단; 및
프로그램 실행 동안 상기 컴포넌트의 상태를 추적하고 로컬 저장 디바이스에 상기 상태를 주기적으로 체크포인트(checkpoint)하는 수단을 포함하고,
머신의 고장시, 상기 컴포넌트 상태는 최근 저장된 체크포인트를 복구하고 상기 최근 저장된 체크포인트 이래로 발생한 이벤트를 재실행함으로써 복원된다.
컴퓨팅 시스템은 메시지의 연관된 타임스탬프와 동일한 순서로 메시지들을 처리함으로서 수신 컴포넌트의 실행을 반복함으로써 결정론적이다.
본 발명의 이 양상에 더하여, 컴포넌트 상태는 백업 프로세서 디바이스에 체크포인트될 수 있다.
본 발명의 부가의 실시예에 따르면, 상기 컴포넌트들 간의 메시지 통신을 가능하게 하도록 적응된 컴퓨팅 시스템에서 상기 컴포넌트의 결정론적 실행을 위한 방법이 제공되며, 각각의 컴포넌트는 작업을 수행할 로직을 구현하며, 상기 방법은,
프로그램 실행 동안 송신지 컴포넌트로부터 수신지 컴포넌트로 전달될 메시지와 함께 타임스탬프를 자동으로 연관시키고 - 상기 타임스탬프는 수신지 컴포넌트에서의 상기 메시지의 추정되는 도달 시간을 나타냄 - ;
입력 메시지들의 고유한 도달 순서를 생성하도록 상기 타임스탬프를 사용함으로써 상기 컴포넌트를 결정론적으로 실행시키고;
프로그램 실행 동안 상기 컴포넌트의 상태를 추적하고 로컬 저장 디바이스에 상기 상태를 주기적으로 체크포인트하는 것을 포함하고,
컴포넌트의 고장시, 상기 컴포넌트 상태는 최근 저장된 체크포인트를 복구하고 상기 최근 저장된 체크포인트 이래로 발생한 이벤트를 재실행함으로써 복원된다.
또한 본 발명의 부가의 실시예에 따르면, 컴포넌트 지향 애플리케이션을 실행시키기 위한 환경이 제공되며, 환경은 컴포넌트들 간에 메시지를 통신하도록 적응된다. 상기 환경은,
컴포넌트에의 메시지 입력 및 컴포넌트로부터의 메시지 출력을 나타내는 포트의 사양을 포함하는 컴포넌트들의 상위 레벨 설계를 가능하게 하는 서브시스템 - 각각의 컴포넌트는 작업을 수행할 로직을 구현함 - ;
상위 레벨 설계를, 상기 실행 환경의 특정 프로세싱 엔진에 컴포넌트들이 할당되는 하위 레벨 구현으로 매핑하는 배치 서비스; 및
코드 개선 수단을 포함하고, 상기 코드 개선 수단은,
프로그램 실행 동안 송신지 컴포넌트로부터 수신지 컴포넌트로 전달될 메시지와 함께 타임스탬프로, 연관된 컴포넌트의 입력 또는 출력 메시지를 자동으로 증대시키고(augment) - 상기 타임스탬프는 수신지 컴포넌트에서의 상기 메시지의 추정되는 도달 시간을 나타냄 - ; 및
컴포넌트의 상태에의 점진 변화(incremental changes)를 추적하기 위한 코드로 컴포넌트를 증대시키기 위한 것이며,
컴포넌트의 상태는 프로그램 실행 동안 추적되며, 상기 컴포넌트 상태가 로컬 저장 디바이스에 체크포인트되고,
컴포넌트의 고장시, 상기 컴포넌트 상태는 최근 저장된 체크포인트를 복구하고 최근 저장된 체크포인트 이래로 발생한 이벤트를 재실행함으로써 복원된다.
본 발명의 이 양상에 따르면, 상위 레벨 설계는 상기 실행 환경에서 컴포넌트가 실행되는 곳에 대하여 중립적이다.
2개 유형의 컴포넌트, 즉 시간 비인식(non-time-aware) 컴포넌트 - 시간 추정이 자동임 - , 및 시간 인식(time-aware) 컴포넌트 - 프로그래머가 실시간 제약을 규정할 수 있음 - 가 공존할 수 있게 하는 각각의 기재된 실시예들에 따른 분산 시스템을 제공하는 것이 더 매우 바람직할 것이다.
도면 및 상세한 설명의 검토 하에 본 발명의 부가의 이점이 당해 기술 분야에서의 숙련자에게 명백하게 될 것이다. 임의의 추가적인 이점이 여기에 포함되는 것으로 의도된다.
첨부 도면과 함께 다음 상세한 설명에 비추어 본 발명의 목적, 특징 및 이점이 당해 기술 분야에서의 통상의 지식을 가진 자에게 명백하게 될 것이다.
도 1은 본 발명에 따라 컴포넌트 및 컴포넌트 지향 애플리케이션을 실행시키기 위해 미들웨어 애플리케이션이 운용되는 실행 서버 아키텍쳐(10)를 도시한다.
도 2는 본 발명의 실행 서버 아키텍쳐에 따라 단일 실행 엔진, 이 예에서는 자바 가상 머신(JVM; Java Virtual Machine)에서의 컴포넌트들 간에 그리고 다수의 실행 엔진들 간의 예시적인 메시징 및 통신을 도시한다.
도 3a 내지 도 3d는, 예시적인 사용자 설계로부터의 컴포넌트의 배치(도 3a, 도 3b), 가상 시간 추정(도 3c), 및 침묵(silence) 및 호기심(curiosity) 메시지 생성(도 3d)을 포함하여, 본 발명의 서버 미들웨어 컴포넌트에 의해 가능한 예시적인 애플리케이션을 도시한다.
도 4는 본 발명의 원리에 따라 메모리 저장 디바이스에의 체크포인트 및 하드 디스크로부터의 체크포인트 복구의 개요를 설명한다.
도 5a 내지 도 5c는 본 발명에 의해 주어지는 고가용성을 제공하기 위한 수동 원격 백업의 사용 및 스케쥴러 복제물의 스폰(spawning)의 개요를 설명한다.
상기 언급한 바와 같이, 제안한 발명은 당해 기술 분야에서의 문제점, 즉 그 상태를 지속하기 위해 컴포넌트 상태를 개별 객체들로 가려내는 트랜잭션, JDBC, 또는 엔티티 빈과 같은 특수화된 방법론 및 구조를 프로그래머에 제공하여야 할 계속적인 필요성과, 비결정론적 구현에 있어서 컴포넌트들 간의 메시지를 로깅하여야 할 필요성을 해결하는 것을 목적으로 한다. 이는 컴포넌트 지향 애플리케이션을 실행하기 위해 지속성 및 고장 허용을 자동으로 제공하는 결정론적 및 고가용성 실행 서버를 제공함으로써 다루어진다.
도 1은 전반적으로 컴포넌트(20a,..., 20n)로서 나타낸 컴포넌트 및 컴포넌트 지향 애플리케이션을 실행하기 위해 본 미들웨어 애플리케이션이 운용되는 실행 서버 아키텍쳐(10)를 도시한다. 도 1에 도시된 바와 같이, 각각의 서버는 도 1에 도시된 바와 같은 JVM(12a,...12n)으로 전반적으로 나타낸 하나 이상의 자바 가상 머신을 포함한다. 다수의 서버가 있을 수 있으며, 각각의 서버 내에 예를 들어 단일 머신 내의 상이한 프로세스들로서 운용되는 자바 가상 머신(JVM)의 다수의 인스턴스(instance)가 있을 수 있다는 것을 이해하여야 한다. 자바 및 JVM의 사용은 순전히 예시적인 것이며, JVM 대신에 애플리케이션 컴포넌트가 기록되어 있는 다른 언어의 실행 환경을 사용할 수 있다는 것을 이해하여야 한다. 각각의 JVM 내에는, 개발자에게 투과적인 계층 구조(hierarchy)에서의 JVM과 컴포넌트 사이의 층으로서, 전반적으로 스케쥴러(15a,...,15n)로 나타낸 적어도 하나의 스케쥴러를 포함하는 스케쥴러 층이 제공된다. 스케쥴러(15a, 15b,...,15n)는, JVM에서의 하나 이상의 밀접하게 관련된 컴포넌트들의, 이들 컴포넌트를 실행할 때를 결정하는 로직을 함께 갖는 그룹이다. JVM에는 각각이 그 자신의 각자의 컴포넌트(들)의 실행을 관 리하는 다수의 스케쥴러가 있을 수 있다. 예를 들어, 도 2에 도시된 바와 같이, JVM(12)은 컴포넌트(21 및 22)의 실행을 관리하기 위한 스케쥴러(15)를 구현하고 컴포넌트(26, 27)를 실행하기 위한 스케쥴러(16)를 구현한다. 제2 JVM(13)은 컴포넌트(28 및 29)를 관리하기 위한 스케쥴러(17)를 포함한다. 특히, 도 2에 도시된 바와 같이, 계층에 있어서의 JVM과 컴포넌트 사이의 스케쥴러 층은 JVM에서의 컴포넌트의 실행을 관리한다. JVM 내에서 컴포넌트들 간의 통신 그리고 스케쥴러들 간의 통신은 참조내용 전달(reference passing)에 의해 효율적으로 구현된다는 것을 이해하여야 한다. JVM에는 각각이 그 자신의 컴포넌트의 실행을 관리하는 다수의 스케쥴러가 있을 수 있다. 컴포넌트가 대기 중인(pending) 입력 메시지를 갖는 경우, 스케쥴러는 그것을 실행하도록 이용 가능한 스레드를 할당할 적합한 시간을 선택할 것이다. 이 결정은 시스템 부하, 사용자가 요구하는 처리량, 큐잉(queueing)에 의해 야기되는 메모리 소비 등과 같은 다수의 요인에 기초하여 이루어진다. 스케쥴러가 동시에 다수의 컴포넌트를 실행하기를 결정하는 경우 동시성(concurrency)이 획득된다.
컴포넌트(Components)
알고 있는 바와 같이, 컴포넌트는 서비스 지향 또는 이벤트 지향일 수 있으며, SCA형 컴포넌트 모델과 일치하는 "객체들"의 임의의 집합일 수 있다. 통상적으로, 자바 언어 또는 C++ 언어 등의 객체 지향 언어, 또는 파이썬(Python) 또는 펄(Perl)과 같은 기타 언어가 SCA 서비스 컴포넌트, 및 컴포넌트들 간에 보내지는 데이터를 구현하기 위해 사용된다. 즉, 컴포넌트들 간의 상호작용은, 오로지 포 트(port)를 통해 데이터 메시지를 전달함으로써 또는 데이터 값이 전달되고 반환될 수 있는 서비스 소비자로부터 서비스 제공자에의 서비스 호출에 의해, 발생한다. 보내진 메시지 또는 서비스 호출의 수신지는 동기 방법(synchronized method)을 갖춘 객체처럼 보인다. 제어의 하나의 스레드는 어느 순간이든 컴포넌트 내에 존재한다. 컴포넌트들 사이에는 어느 객체도 공유되지 않는다. 객체는, (a) 컴포넌트 객체 자체, 동기 방법을 갖춘 "모니터", (b) 컴포넌트로부터 컴포넌트로 전달될 수는 있지만 공유되지는 않는 "값" 객체, 또는 (c) 공유될 수 있지만, 컴포넌트 객체 자체 내에서나 동일한 값 객체 내에서만 그러한 "구현" 객체 중 어느 하나이다. 특히, 어떠한 데이터도 하나보다 많은 수의 실행 컴포넌트에 의해 동시에 소유되지 않는다는 것을 보장하는 이러한 규정(discipline)은, 2000년 객체 지향 프로그래밍, 시스템, 언어, 및 애플리케이션(Object-oriented programming, systems, languages, and applications)에 관한 15th ACM SIGPLAN 학회 회보, 제목이 "Guava: a dialect of Java without data races"인 David Bacon, Robert Strom, Ashis Tarafdar 저자의 참조 문헌에 정형화되어 기재되어 있으며, 이의 내용 및 개시는 본 명세서에 충분히 설명된 것처럼 참조에 의해 포함된다. Guava 기술에 따르면, 특정 컴포넌트가 이 규정에 준수함을 정적으로 체크하는 것이 가능하다. JVM 상에서 운용되는 Java의 Guava 표현법은 본 발명의 환경에 사용하기에 적합한 컴포넌트 구현 언어의 종류의 단지 하나의 예일 뿐이다.
컴포넌트가 "전송 가능(wireable)"하게 되도록, 컴포넌트에 의해 서비스되는 서비스 호출에 대한 입력 방법, 또는 컴포넌트에 의해 수신된 비동기 메시지에 대 한 메시지 큐는 입력 "포트"로서 외부적으로 이용 가능하게 된다. 호출을 하거나 다른 컴포넌트에 메시지를 보내는 사이트는 도 2에 도시된 바와 같이 출력 "포트"로서 외부적으로 이용 가능하게 된다. (a) 출력 포트가 입력 포트에 어떻게 "전송 연결될지(wired)", 그리고 (b) 컴포넌트를 어디에 배치할지 결정하는 개별 전개(deployment)-시간 결정이 이루어진다고 가정한다. 이들 결정의 결과로서, 일부 포트 접속은 국부적일 수 있고, 그 외에는 원격일 수 있다. 포트 접속이 동일한 JVM 내의 컴포넌트들을 접속시키는 경우(예를 들어, 도 2에서의 접속(40)) 메시지 및 서비스 호출은 보다 효율적으로(예를 들어 "참조내용에 의해") 통신될 수 있고, 이들 컴포넌트가 상이한 JVM들에 있는 경우(예를 들어, 도 2에서의 접속(42)) 덜 효율적으로(예를 들어, 복사에 의해, 또는 네트워크 메시지를 보냄으로써) 통신될 수 있다는 것을 이해하여야 한다.
언급한 바와 같이, 본 발명의 실행 서버는 머신들 전반에 걸쳐 분산 실행을 지원하도록 설계된다. 자바 가상 머신(JVM)의 다수의 인스턴스는 전개에 따라, 이들 머신 상에서 운용되거나, 단일 머신 내의 상이한 프로세스들로서 운용될 수 있다. 도 2에 도시된 바와 같이, JVM들 간의 메시지 통신을 위한 예시적인 프로토콜은 사용자 데이터그램 프로토콜(UDP; User Datagram Protocol)(30)이다. 따라서, 도 2에 도시된 예시적인 실시예에서, JVM(12)은 JVM(13)과 UDP 메시징 프로토콜을 통하여 통신한다. 알고 있는 바와 같이, UDP의 사용은 보증된 전달을 제공하지는 않지만, 전송 제어 프로토콜(TCP; Transmission Control Protocol) 이상의 보다 나은 성능을 특징으로 한다. 대신에, 여기 아래에 보다 상세하게 설명되는 바와 같 이, 무손실(loss-free) 및 순서 보존(order-preserving) 메시징이 본 발명의 미들웨어 컴포넌트에 구축된다.
개발(Development)
본 발명의 실행 서버는 다른 접근법들과 구별되는데, (1) 개발 환경이 근본적으로 단순화되고: 즉 컴포넌트가 평이한 자바로 기록될 수 있으며, SCA 컴포넌트 모델에서와 같이 전송 연결되어 분산형 흐름 네트워크를 구축할 수 있고, (2) 컴포넌트가 평이한 자바 프리미티브 변수 및 콜렉션 클래스에 상태를 저장하고; (3) 프로그래머가 컴포넌트 상태를 개별 객체들로 가려내고 그 상태를 지속하기 위해 트랜잭션, JDBC, 또는 엔티티 빈과 같은 특수화된 방법론 및 구조를 사용하여야 할 필요가 없기 때문이다. 대신에, 머신 고장, 및 메시지를 드롭시키거나 재순서화하거나 중복시킬 수 있는 고장 네트워크이더라도, 본 발명의 실행 서버(들)에 의해 지속성 및 고장 허용이 자동으로 제공된다.
결정론적 실행(Deterministic Execution)
본 발명의 방법론에 따르면, 고장 허용을 위한 기술은 시스템의 결정론적, 재생 가능한 실행을 보장하는 것에 기초한다. 이는, 트랜잭션에 기초하거나, 복제에 기초하거나, 또는 모든 컴포넌트간 메시지를 지속적으로 로깅하는 것에 기초한 다른 접근법들을 능가하는 개선이다. 결정론적 실행은, 시스템에 동일한 상태 및 동일한 입력 메시지가 주어지는 경우, 동일한 출력 메시지를 생성할 것이라는 것을 의미한다. 결정론은, 컴포넌트의 고장시, 최근 체크포인트를 복구하고 그 체크포인트 이래로 발생한 이벤트를 재생함으로써 그의 상태가 복원될 수 있다는 것을 포함 한다. 결정론으로 인해, 재생 후의 상태는 손실된 상태와 동일하다는 것이 보증된다. 이는 업데이트될 때마다 상태가 지속적으로 보관되어야 할 필요가 없으며 간헐적으로만 일어나면 되는 것을 의미한다.
결정론적 실행의 달성은, 개별 이벤트 시뮬레이션으로부터의 기술들을 일반화하고 그것들을 실행 서버의 실행시간(run-time) 환경에 적용하는 것에 기초한다. 이벤트 시뮬레이터에서와 같이, 컴포넌트들 간에 전달되는 각각의 메시지는 가상 시간(VT; virtual time)으로 태그된다. 이벤트 시뮬레이터와는 달리, 가상 시간은 메시지가 수신 컴포넌트에 도달할 실제 시간의 결정론적 추정치인 것으로 선택된다. 본 발명의 실행 서버는 메시지가 가상 시간 순서대로 도달한 것처럼 시스템이 거동할 것을 보증한다. 가상 시간과 실제 시간 간의 일치(correspondence)가 보다 나아질수록, 시스템은 보다 양호하게 수행할 것이지만, 결정론적 실행은 이러한 일치가 얼마나 맞는지에 관계없이 보증된다. 이러한 접근법의 변형에서, 가상 시간은 실시간(real-time) 데드라인이며, 시스템은 이들 실시간 데드라인을 충족시킬 것을 보증하도록 스케쥴링을 조정할 것이다. 이는 또한 이벤트 시뮬레이터의 경우와 다른 것이며, 시뮬레이트된 가상 시간은 실제 시간과 어떠한 명백한 상관관계도 갖지 않을 수 있다.
결정론적 실행은 가상 시간(VT)을 포함하는 타임스탬프로 모든 통신을 증대(augment)시킴으로써 달성된다. 시스템 경계에서, 생성시 타임스탬프를 포함하지 않은 외부 이벤트가 수신된다. 본 발명에 따르면, 시스템은 수동 개입(intervention) 없이 이들 이벤트에 자동으로 VT를 할당한다. VT는 인과 순서에 따르며,즉 출력이 입력에 의해 야기되면, 출력은 더 이른(earlier) 가상 시간에 발생하여서는 안 되고, 실제 시간에의근사치이다. VT의 생성이 비결정론적이기 때문에, 로그는 할당된 VT를 전부 기록하며, 나중에 재생이 필요할 때 로그는 필수적일 것이다. 경계에서 이벤트가 VT로 증대되면, 이벤트는 컴포넌트들 간의 접속을 통하여 진행하며, 결정론적 순서대로 처리된다. 추후의 로깅은 필요하지 않다. 이는, 비결정론적 도달 순서가 재생될 수 있도록 컴포넌트들 간의 메시지의 로깅이 요구되는, 낙관적 복구(Optimistic Recovery) 및 투과적 고장 허용의 기타 종래 기술에 의해 사용되는 접근법과는 대조적이다. 2개의 메시지가 어느 것이든 동일한 VT를 갖지 않을 것임을 이해하여야 한다.
컴포넌트가 실행하도록 선택되면, 이는 입력 메시지의 처리 결과로서 출력을 생성할 수 있다. 출력은, 비제로 연산 지연을 반영하여, 입력 메시지의 VT보다 엄밀히 잘 VT와 연관된다. VT에 있어서의 증분(increment) 뿐만 아니라 출력 메시지는, 입력 메시지에 의해 충분히 결정된다. 컴포넌트는 다수의 선행(predecessor) 컴포넌트로부터 입력, 예를 들어, 보내진 메시지 또는 서비스 호출 메시지 등을 수신할 수 있다. 이 경우에, 메시지의 VT에 기초하여 결정론적 병합(merge)이 이용된다. VT는 선행자에 의해 독립적으로 생성되지만, 병합에서 국부적으로 비교된다. 어느 선행자도 더 이른 VT를 가지고는 추후에 어떠한 메시지도 보낼 수 없다는 것을 알면, 가장 작은 VT를 갖는 메시지는 안전하게 처리될 수 있다. 대안의 실시예에서, 1985년 7월, ACM Transactions on Programming Languages and Systems, Jefferson, D의 제목이 "Virtual time"인 참조 문헌에 기재되어 있는 개별 이벤트 시뮬레이션 환경에서와 같이, 더 이른 VT를 갖는 메시지가 도달하면, 메시지가 공격적으로 처리되고 롤백(roll back)될 수 있다는 것을 이해하여야 한다. 결정론적 VT 생성 및 결정론적 병합(이들 둘 다 컴포넌트에 국부적임)으로 인해, 메시지 처리의 순서는 결정론적이다.
전개 시간 메커니즘(Deployment Time Mechanisms)
지속적인 분산 연산에 대한 결정론적 실행 메커니즘들 간의 주요 차이점으로서, 본 발명의 접근법에서는 사용자 개입이 거의 요구되지 않는다. 특히, 개발자가 VT 또는 그것들을 연산할 방식을 알지 않아도 된다. 애플리케이션 개발자의 작업을 현저하게 단순화하면서 여기에 기재된 이점들을 전혀 훼손하지 않는 툴 세트가 제공된다.
배치 서비스(Placement Service)
도 3a에 도시된 바와 같이, 설계시, 컴포넌트의 연산 로직은 평이한 자바, C++ 또는 기타 객체 지향 코드, 또는 파이썬이나 펄과 같은 기타 언어로 기록될수 있다. 포트는 예를 들어 자바 인터페이스로 정의된다. 로직 접속은 둘 이상의 포트를 전송 연결함으로써 설계자에 의해 생성된다. 이러한 상위 레벨 설계는 완전히 결과적인 시스템의 분산 속성을 무시한다. 또한, 결정론적 실행 및 고장 허용과 같은 특성을 당연하게 여긴다. 도 3b에 도시된 바와 같이, 도 3a에 도시된 설계와 같은 이 상위 레벨 설계를 하위 레벨 구현으로 매핑하는데 미들웨어 전개 서비스 컴포넌트(50)가 사용되며, 하위 레벨 구현에서는, 가장 상호관련된 컴포넌트들이 스케쥴러로 그룹화되고, 스케쥴러는 JVM에, 가능하면 상이한 머신들 상에 할당된다. 실행 전의 배치는, 머신의 연산 전력, 네트워크 용량 및 배치 선호도 메트릭과 같은 사용자가 제공한 파라미터에 따라, 반자동이다. 성능을 최대화하기 위해, 작업 부하가 상이한 머신들에 대해 밸런싱된다. 실행시, 초기 배치는 훨씬 양호한 전체 성능을 위해 그들 오리지널 머신으로부터 다른 머신으로 스케쥴러를 이동시킴으로써 미세조정될 수 있다. 배치에 따라, 개발자 관점에서의 로직 접속이 또한 물리적 접속으로 매핑될 수 있다.
이 배치 서비스(50)는 전개 작업을 단순화하지만, 여전히 사용자 지정 구성을 수용함으로써 충분한 유연성을 제공한다.
따라서, 예시적인 목적으로 이제 제시되는 하나의 비한정적인 예의 배치에서, 도 3a에 도시된 바와 같이, 2개의 상이한 요청 경로, 즉, 예를 들어 시합에서의 자리를 예약하기 위한 요청자(32, 34)로부터의, 메시지의 수신을 모델링하는데 사용될 수 있는 티겟팅(티겟 판매) 시스템(30)의 예시적인 개발자 관점의 상위 레벨 접근법이 도시되어 있다. 이들 티켓 요청은 먼저 수신되고 처리되어 각각의 요청자가 요청하고 있는 티켓의 양(예를 들어, 5장의 티켓 또는 10 장의 티켓)을 결정하고, 그 다음 마지막으로 프린터 디바이스에 티켓을 인쇄하기 위한 프로세스가 할당된다. 다음의 예시적인 코드 부분은 도 3a에 도시된 예시적인 시스템의 상위 레벨 설계에 따라 평이한 자바로 기록될 수 있는 컴포넌트의 로직(예를 들어, 프리미티브 변수, 콜렉션 클래스 등)을 나타낸다.
Figure 112009049560074-pct00001
배치 서비스(50)는 도 3b에 도시된 바와 같이 하위 레벨 구현에 대한 코드를 생성할 것이다. 도 3b에 도시된 결과적인 하위 레벨 구현에 있어서, 요청자는 메시지를 수신하는 제1 JVM(62)에 대한 포트를 정의함으로써 모델링되고, 각각의 요청을 처리하며 할당기 컴포넌트(65)에서 요청들을 병합하는 제2 JVM(64)에서 정의되는 각각의 포트가 더 모델링되며, 할당기 컴포넌트(65)는 스케쥴링된 티켓 인쇄 프로세스를 수행하기 위해 프린터 컴포넌트(67)를 포함하는 제3 JVM(66)에 대한 단일 포트를 정의함으로써 모델링되는 프린터 기능 컴포넌트를 할당한다. 다음의 예시적인 코드 부분은 도 3b에 도시된 예시적인 시스템의 하위 레벨 설계에 따라 평이한 자바로 기록될 수 있는 배치 로직을 나타낸다. 이러한 다음의 예시적인 코드는 제1 JVM(62)의 구성을 나타내며, 이는 도 3b에 도시된 바와 같이 요청자 컴포넌트(32, 34)를 관리하기 위한 제1 스케쥴러(72)를 포함하도록 설계된다.
Figure 112009049560074-pct00002
이 다음의 예시적인 코드는 제2 JVM(64)의 구성을 나타내며, 이는 도 3b에 도시된 바와 같이 요청자 컴포넌트(32, 34)에 대응하는 프로세싱 컴포넌트를 관리하기 위한 스케쥴러(74)를 포함하도록 설계된다.
Figure 112009049560074-pct00003
이 다음의 예시적인 코드는 제3 JVM(66)의 구성을 나타내며, 이는 도 3b에 도시된 바와 같이 단일 입력으로부터 인쇄 프로세싱 컴포넌트를 관리하기 위한 스케쥴러(76)를 포함하도록 설계된다.
Figure 112009049560074-pct00004
자동 코드 개선기(Automatic Code Enhancer)
본 발명에서, 프로그램 변환기는 실행시간 실행 환경과 호환 가능한 컴포넌트를 생성하도록 사용자 기록된 컴포넌트를 증대시킨다. 특히, 프로그램 변환기는 다음의 개선을 제공한다: 1) 입력 및 출력 메시지의 모든 인터페이스 또는 방법 호출은 VT를 보유하는 필드로 증대된다; 2) 입력 포트에 도달하는 메시지를 처리하는 각각의 방법은, 그것이 생성하는 각각의 출력 메시지에 대하여 그리고 그 방법으로부터의 대답에 대하여 "델타-VT"를 연산하는 추정기로 증대된다. 델타-VT는 방법의 시작에서 생성된 출력 메시지나 대답까지 경과하는 실시간 양의 결정론적 추정치를 나타내고, 3) 각각의 컴포넌트는, 마지막 소프트-체크포인트(soft-checkpoint) 이래로 컴포넌트의 상태에의 점진 변화를 추적하고 스케쥴러로부터의 요청시 점증 소프트-체크포인트 기록을 나열하는 코드로 증대된다.
소프트 체크포인트는, 복구할 수 있는 시스템의 능력을 손상시키지 않고 임의의 단일 체크포인트가 손실될 수 있기 때문에 그렇게 불리며, 손실된 체크포인트는 단지, 이전의 체크포인트로부터 복구가 진행되어야 하고, 이는 고장 후에 복구 할 시간을 연장할 수는 있지만 복구할 수 있는 최후 능력에는 영향을 미치지 않을 것임을 의미한다. 반대로, 컴포넌트는 점증 소프트 체크포인트 기록의 수집으로부터 상태를 재구성하는 코드로 증대된다. 선택적으로, 컴포넌트는 "강한 침묵(eager silence)"을 생성하는 코드로 증대될 수 있다. 즉, 어떠한 입력 메시지도 소정 시간 t 내내 그의 입력 포트를 통해 도달하고 있지 않다는 것을 이제 알고 있다고 하면, 시간 t를 지나 가장 이른 델타-VT를 연산하며, 이 시간 동안 메시지가 소정의 출력 포트 상에 나타나는 것은 가능하다. 이러한 연산은 이들 입력 포트에 접속되어 있는 컴포넌트에 침묵을 보내는 목적으로 사용될 수 있다. 침묵 타임스탬프의 범위는 어떠한 메시지도 이들 타임스탬프를 가지고는 그 컴포넌트로부터 보내지지 않을 것을 보증하므로, 이러한 정보는 대기 중인 메시지가 이제 가장 이른 가능한 메시지인 것으로 알고 있기 때문에, 가능하면 수신 컴포넌트가 이 대기 메시지를 처리하도록 진행할 수 있게 할 수 있다.
도 3c는 도 3b의 예에서 설명된 예시적인 티켓팅 시스템에서의 하위 레벨 설계에 의해 도시된 바와 같은 본 발명을 구현하기 위해 필요한 메시지 구조를 증대하는데 사용되는 VT의 결정론을 보다 상세하게 나타낸다. 메시지 또는 이벤트("e")는 시스템 경계에서 VT와 연관된다는 것을 이해하여야 한다. 현재, VT는 인과 관계에 맞는 임의의 방식으로 생성된다. 그러나, 이는 실제 시간의 추정치일 수 있다. 따라서, 도 3c에 도시된 바와 같이, 실행시간 동안, 제1 JVM(62)의 제1 요청자 컴포넌트(32)에서 수신된 예시적인 연관된 데이터 스트링(
Figure 112009049560074-pct00005
)을 포함하는 수신된 메 시지 구조(42)에 대하여, 메시지 구조(42)에 추가되는 제1 VT 값(
Figure 112009049560074-pct00006
)이 연관되어 있으며, 제2 요청자(34)에서 수신되는 예시적인 연관된 데이터 스트링(
Figure 112009049560074-pct00007
)을 포함하는 메시지 구조(44)는 메시지 구조(44)에 추가되는 VT 값(
Figure 112009049560074-pct00008
)과 연관된다. 도 3c는 마지막 소프트 체크포인트 이래로 그의 상태에의 점진 변화의 추적을 추가적으로 도시하며, 이는 스케쥴러로부터의 요청시, 데이터 저장 디바이스에서의 로그(99)로 엔트리에 의해 나타나는 점증 소프트 체크포인트 기록의 생성을 일으킨다. 이 로그(99)는 VT의 생성이 비결정론적이기 때문에 모든 할당된 VT를 기록하며, 여기 아래에 보다 상세하게 기재되는 바와 같이 재생이 요구될 때 로그가 필수적일 것이다. 이들 증대된 이벤트 또는 요청 메시지(42(
Figure 112009049560074-pct00009
) 및 44(
Figure 112009049560074-pct00010
))는 각각 그들 스케쥴링된 VT(가상 시간)에 제2 JVM(64)에 입력되며, 이들은 JVM(64)에서 각각의 요청 메시지 프로세싱 컴포넌트에 의해 처리된다. 즉, 도 3c에 도시된 바와 같이, 제2 JVM(64)에서 수신된 입력 증대된 요청 메시지(42)를 처리한 후에, 제2 JVM(64)의 제1 컴포넌트로부터 출력되는 연산된 VT 값(
Figure 112009049560074-pct00011
)을 포함하도록 증대된 부가의 메시지(52)가 생성되며, 마찬가지로 제2 JVM(64)의 제2 컴포넌트로부터 출력되는 연산된 VT 값(
Figure 112009049560074-pct00012
)을 포함하도록 증대된 부가의 메시지(54)가 생성된다. 할당기 컴포넌트(65)에 의해 도시된 병합 포인트에서, 다수의 스트림으로부터의 이벤트들은 그들 VT를 사용하여 비교된다. 따라서, 도 3c에 도시된 바와 같이, 제2 JVM의 할당기 컴포넌트로부터의 출력은 시간상 차례로 나열된 메시지(52 및 54), 즉
Figure 112009049560074-pct00013
Figure 112009049560074-pct00014
를 포함하는 결정론적으로 병합된 메시지 시퀀스(55)이다. 그 다음, 제3 JVM(66)에서 구현되는 결정론적 병합기는 수신된 메시지(55)에서의 병합된 VT 값에 기초하여 프린팅 컴포넌트(67)에 대하여 결정론적 순서 대로 동작을 배열할 것이다.
메시지 손실 및 재순서화의 허용(Tolerance of Message Loss and Reordering)
언급한 바와 같이, JVM 내에서, 컴포넌트들 간의 통신은 참조내용 전달에 의해 효율적으로 구현된다. JVM 내의 통신은 또한 무손실이고 순서 보존적이다. JVM들 간에는, UDP 통신이 메시지 손실 또는 재순서화를 야기할 수 있다 해도 UDP 통신이 사용될 수 있는데, 이러한 손실 또는 재순서화가 스케쥴러 내에서는 아니지만 스케쥴러들 간에 보내지는 침묵 및 호기심 메시지의 개념을 구현하는 본 발명의 미들웨어 컴포넌트에 의해 허용되기 때문이다.
도 3d로 계속하면, 본 발명의 시스템에서 분실 메시지의 검출을 보장하도록 침묵 및 호기심 메시지의 통합이 도시되어 있다. 도 3a 내지 도 3c에서 설명되고 이제 도 3d에 도시되어 있는 바와 같은 본 발명의 예시적인 애플리케이션에서 여기 언급한 바와 같이, 즉 2개 메시지가 시간 라인에서 서로 바로 이어지지 않는다면, VT에 있어서 시간 갭(time gap)이 존재한다고 가정한다. 시간 갭의 존재는 서버의 미들웨어 컴포넌트, 예를 들어 스케쥴러에 의해 검출된다. 예를 들어, 제1 JVM(62)이 제1 증대된 메시지(42)를 보낸 후에, 그리고 제2 증대된 메시지를 보내기 전에, JVM(62)은 갭을 채우도록 하나 이상의 침묵, 즉 침묵 메시지(80)를 생성하여 보내며, 그리하여 수신지, 예를 들어 JVM(64)은 메시지나 침묵의 연속적인 인식을 얻는다. 침묵 메시지는 메시지를 포함하지 않는 것으로 알려진 VT의 시간 틱(tick)의 범위를 지정하는 한 쌍의 번호를 정의한다. 예를 들어, 메시지(42) 직전에 보내진 도 3d에서의 메시지(80)는 데이터
Figure 112009049560074-pct00015
를 포함할 수 있으며, 이는 100에서
Figure 112009049560074-pct00016
까지 범위의 VT의 모든 틱이 메시지를 포함하지 않는 것으로 알려진다는 것을 의미한다. 침묵 메시지로 인해, 수신지는 모든 틱마다 메시지나 침묵을 명확히 한정하는 것으로 간주할 수 있다. 데이터 또는 침묵 메시지가 손실되면, 수신지는 갭을 인지할 것이다. 갭 검출은 수신지 측에서 수행된다. 특정 기간(사용자 구성가능 또는 프로그램가능 파라미터로서 정의됨) 동안 갭이 존재하는 경우, 수신지, 예를 들어 JVM(64)은 일부 메시지 또는 침묵이 손실되었다고 결정할 수 있고, 그 다음, 송신지, 예를 들어 JVM(62)에 수신에 대한 호기심 메시지(83)를 발행할 수 있다. 호기심 메시지는, 수신지가 데이터 또는 침묵을 인식하지 못한, 그래서 그에 대하여 "궁금한" 동안인, VT의 시간 "틱"의 범위를 지정하는 한 쌍의 번호를 정의한다. 예를 들어, 이 침묵 메시지가 다소 손실된 경우, 호기심 메시지
Figure 112009049560074-pct00017
가 읽혀질 것이다. 호기심 메시지는 질의되고 있는 틱의 범위에 대하여 송신지에 의한 이전의 메시지 또는 침묵의 재송신을 트리거할 것이다. 송신지는, 수신지가 소프트 체크포인트를 성공적으로 취하고 따라서 재송신을 다시는 절대 요청하지 않을 때까지, 이들 메시지 또는 침묵을 재송신할 준비가 되 어 있어야 한다.
호기심 메시지가 손실되거나, 재송신 메시지가 손실되는 경우, 호기심 메시지는 재송신될 것이다. 동일한 메시지가 심하게 자주 손실되는 것은 아닌 한, 결국, 손실된 메시지는 회복(retrieve)될 것이다. 메시지가 늦게 도달할 수 있고, 재송신된 메시지가 중복될 수도 있지만, 이는 수신지가 이미 처리된 메시지에 대한 시간과 VT가 일치하는 임의의 메시지를 폐기하는 것이 안전하므로, 어떠한 문제도 일으키지 않는다는 것을 이해하여야 한다. (어떠한 2개 메시지도 동일한 VT를 갖지 않을 것임) 재순서화도 또한 허용되는데, 메시지 전의 갭이 여전히 있는 경우, 수신지가 단순히 메시지를 처리하기를 거절하기 때문이다. 따라서, 도 3d에 도시된 바와 같이, 큐잉(queuing), 침묵 및 호기심은 다 함께 올바른 순서의 메시지 처리를 보증한다.
가상 시간 추정기(Virtual Time Estimator)
여기까지, VT 생성은, 완전히 결정론적이고 메시지 인과 관계를 보존한다면, 임의로 제공되는 것이 가능하다. 임의의 이러한 VT 할당은 결정론적 실행을 보증한다. 그러나, VT가 실제 시간과의 동기에서 너무 많이 벗어나면, 성능 결함(penalty)을 볼 수 있는데, 이는 병합에서, 수신지가 VT에 있어서 더 이른 임의의 메시지를 수신하지 않을 것을 확신하기까지 다음 메시지를 처리하기를 거절할 것이기 때문이다. 이로 인해, 실제 시간에서는 더 빨리 생성된 메시지가 나중에 처리될 수 있는데, 이들이 추정의 부정확도로 인해 더 큰 VT를 획득하기 때문이다. 이러한 비관론(pessimism)이 수용 불가능한 성능 손실을 야기하지 않도록, 적합한 동기화로 VT 및 실제 시간을 유지하고자 하는 자동 VT 추정기가 제공된다. 이 VT 추정에 대해 정적(즉, 전실행(pre-execution) 및 동적(즉, 실행 중) 컴포넌트 둘 다 존재한다. 정적으로, 자동 VT 추정기는, 코드의 알고 있는 복잡도에 기초하여, 개별 컴포넌트에 대한 연산 지연을 추정한다. 전개시, 추정기는 또한 컴포넌트가 전개되었던 환경의 알고 있는 특성을 고려할 수 있다. 이는 네트워크 레이턴시, 평균 CPU 부하, 가비지 콜렉터 성능, 예상 메모리 소비, 스레딩 등과 같은 것들을 반영하도록 연산 지연 추정치를 조정할 것이다. 그러나, 연산 지연 추정치가 컴포넌트 상태의 결정론적이고 반복 가능한 함수이어야 함은 강조되어야 한다. 실제 전류 CPU 부하와 같은 비결정론적 요인은 고려하지 않을 수 있다. 그러나, 스케쥴러가 VT와 실제 시간 간의 차이(disparity)가 너무 커지게 됨을 인지하는 경우, 다음 2개의 가능한 동작 중 하나를 취할 수 있다:
1. 스케쥴러는, 느려지거나 속도를 높이도록 그리고 차이를 감소시키도록, 머신에서의 다른 스케쥴러에 대한 그의 우선순위를 변경할 수 있다.
2. 스케쥴러는 스케쥴러 내에서 사용된 추정기에 대한 파라미터를 조정하는데 비결정론적 결정을 행할 수 있다 - 소위 "결정론 결함" - . 비결정론적인 이 조정은 정상적인 연산 지연 추정과는 달리 비결정론적 요인을 고려하는 것이 가능하다. 이러한 결정은 결정론을 위배하기 때문에, 이 동작은 적절한 재생을 보증하기 위하여 안정적인 저장장치에 로깅되어야 한다. 사실상, 결정 전의 VT의 임의의 재생은 예전 추정기를 사용하여야 하고, 결정 후의 VT의 임의의 재생은 새로운 추정기를 사용하여야 한다. 결정론 결함은 특정 메시지에 대한 특정 시간 추정치에의 변화을 초래할 수 있다. 시스템의 목표는, VT와 실제 시간 간의 드리프트(drift)가 최소화되고 스케쥴링 우선순위를 조정함으로써 제어될 수 있도록 정적 추정기를 충분히 양호하게 함으로써, 결정론 결함은 거의 일어나지 않는 이벤트가 되는 것이다.
실시간 분석(Real-time Analysis)
시간 비인식 컴포넌트에 대하여, 타임스탬프의 도입은 본 발명의 미들웨어의 VT 추정기로써 자동화된다. 그러나, 일부 애플리케이션은 시간 인식형이어야 할 수 있고, 또는 훨씬 더 복잡한 시나리오에서, 특정 애플리케이션은 시간 비인식 컴포넌트 및 시간 인식 컴포넌트의 혼합을 포함할 수 있다. 타이밍 제어에 대한 필요성을 충족시키기 위해, 본 발명의 미들웨어 컴포넌트는 설계자가 타이밍 제약을 지정할 수 있게 해주며, 이는 추가의 시간 제어 코드로 자동으로 컴파일된다. 실행시간시, 이 코드는, 컴포넌트를 우선순위화하거나, 컴포넌트를 이동시킴으로써, 스케쥴러가 시간 제약을 충족시킬 수 있게 한다. 즉, 실시간 스케쥴러는 실시간 데드라인을 보증하도록 배치 서비스와 함께 작업하도록 프로그래밍될 수 있다. 배치 서비스는, 데드라인을 충족시키기에 충분한 예비 용량이 있는 것을 보장하도록, 이러한 스케쥴러를 전개하기 전에 일부 승인(admission) 제어를 행할 필요가 있을 것이다. 또한, 새로운 종류의 결정론 결함이 일어날 수 있으며: 즉, 보통이 아닌 상태로 인해, 실시간 데드라인이 소정의 연산에 대하여 충족되지 않을 것으로 보이는 경우, 대안의 연산(오버헤드가 더 적을 것임)을 사용할 비결정론적 결정이 취해질 수 있다. 임의의 결정론 결함의 경우와 같이, 이러한 변경을 행할 결정은 로깅되어야 할 것이다.
고가용성을 갖는 머신 고장의 허용(Tolerance of Machine Failure with High Availability)
분산 시스템에서, 머신은 예기치 못하게 종료되거나 네트워크로부터 접속이 끊어질 수 있거나, 또는 고장날 수 있다. 많은 현대의 애플리케이션은 머신들 사이의 협동을 이용한다. 다수의 머신의 사용은 고가용성을 가능하게 한다. 이러한 특성으로써, 일부 머신의 고장은 애플리케이션의 전체 기능을 방해하지 않는다. 본 발명의 실행 서버에 있어서, 고장 허용은 투과적이다. 미들웨어 컴포넌트는 개별 스케쥴러에 대하여 소프트 체크포인트를 간헐적으로 생성한다. 소프트 체크포인트는 스케쥴러 내의 컴포넌트, 확립된 접속, 대기 메시지, 대기 중인 서비스 호출 등을 포함하는 스케쥴러의 상태의 컴팩트 이미지이다. 소프트 체크포인트는 풀(full) 상태를 포함할 수 있거나, 또는 이전의 소프트 체크포인트 이래의 점진 변화를 포함할 수 있다. 사용자 정의 컴포넌트의 상태(예를 들어, 상호 참조를 갖는 자바 프리미티브 값 및 객체와 같은 언어 레벨 엔티티를 포함함)도 또한 체크포인트에 기록되며, 그리하여 머신이 고장나서 복구할 때, 연산이 재개될 수 있다.
따라서, 도 3a 내지 도 3d에서 설명되고 이제 도 4에 도시되어 있는 바와 같은 본 발명의 예시적인 애플리케이션에 대하여, JVM(64, 66) 내의 각각의 스케쥴러에 대한 체크포인트 정보(84, 86)는 로컬 메모리 저장 디바이스, 예를 들어 각각 하드 디스크 드라이브(94, 96) 상에 저장되고, 간헐적으로 또는 증가적으로 업데이트된다. 그러나, 이들 체크포인트는 원격 머신에 저장될 수 있다는 것을 이해하여 야 한다.
실행 중에, JVM 머신은 충돌(crash)할 수 있고, 이 이벤트로 인해, 그 머신에서 실행 중인 스케쥴러는 정지하고 그들 마지막 체크포인트 이래의 그들 상태를 완전히 손실한다. 머신이 재시작되면, 이는 그들 마지막 체크포인트로써 스케쥴러를 재생성한다. 따라서, 도 3a 내지 도 3d에서 설명되고 도 4에 도시되어 있는 바와 같은 본 발명의 예시적인 애플리케이션에 대하여, JVM(64)에서의 충돌 이벤트를 가정하면, JVM(64) 내의 예시적인 스케쥴러에 대하여 저장되어 있는 체크포인트 정보(84')는, 로컬 메모리 저장 디바이스, 예를 들어 하드 디스크 드라이브(94)로부터, JVM(64)에서 실행 중인 재시작된 스케쥴러 컴포넌트로 전달될 것이다. 이들 체크포인트는 과거의 스케쥴러 내에 있는 것인데, 체크포인트를 취한 후에도 일부 메시지가 수신되고 처리되었을 수 있기 때문이다. 따라서 스케쥴러는 그들 선행자에게 호기심 메시지(85)를 독립적으로 보낼 것이며, 선행자가 분실 메시지를 재송신하게 한다. 본 발명에 따르면, 이어서 분실 메시지는 재처리될 것이며, 본 발명에 의해 주어지는 결정론적 실행으로 인해, 동일한 결과가 생성될 것이다. 스케쥴러가 고장난 때의 시간까지 쫓아가면, 그의 상태는 고장나기 바로 전의 그 상태와 동일하게 된다. 그로부터, 계속해서 새로운 메시지를 처리한다.
언급한 바와 같이, JVM 내의 각각의 스케쥴러에 대한 체크포인트 정보는 원격 머신(예를 들어, JVM) 상에 저장되고, 간헐적으로 또는 증가적으로 업데이트될 수 있다. 따라서, 대안의 실시예에서, 원격 위치된 스케쥴러는 다른 스케쥴러로부터 체크포인트를 저장함으로써 "수동 백업"을 수행할 수 있다. 수동 백업이 체크포 인트를 저장하는데 사용되는 경우, 그 다음에 고장이 검출되면, 수동 백업은 백업된 컴포넌트의 인스턴스를 생성하고, 즉 복제물을 스폰(spawn)하고, 활성이 되며, 재시작하여 누락된 연산까지 쫓아갈 때까지 고장난 스케쥴러의 작업을 재개한다. 수동 백업은, 일부 기타 고장 허용 시스템의 능동 복제와는 달리, 중복 연산을 수행하지 않는다. 그들은 단지 체크포인트된 상태를 보유할 뿐이며, 그리하여 활성 머신이 고장나는 경우, 백업은 최소한의 지연으로 연산을 신속하게 인계할 수 있다.
따라서, 도 3a 내지 도 3d에서 설명되고 이제 도 5a에 도시되어 있는 바와 같은 본 발명의 예시적인 애플리케이션에 대하여, JVM(64) 내의 예시적인 스케쥴러에 대한 소프트 체크포인트 정보(84)는 그의 저장장치에 대한 제3 JVM(66)에 원격 저장되어 있는 제2 JVM(64)에 대한 백업 스케쥴러 컴포넌트(74)와 연관된 메모리에 전달될 것이며, 마찬가지로 도 5a에 도시된 바와 같이, JVM(66) 내의 예시적인 제3 스케쥴러에 대한 소프트 체크포인트 정보(86)는 그의 저장장치에 대하여 제2 JBM(64)에 원격 저장되어 있는 제3 JVM(66)에 대한 백업 스케쥴러 컴포넌트(76)와 연관된 메모리에 전달될 것이다. 따라서, 예를 들어, 스케쥴러2 및 백업 스케쥴러 컴포넌트(76)를 포함하는 JVM(64)이 불능이 되거나 아니면 충돌하는 경우, 도 5b에 도시된 바와 같이 JVM(64)에서 실행 중이었던 스케쥴러2의 복제물이 생성될 수 있다. 즉, JVM(64)에서, JVM(64) 내의 실행 중이었던 스케쥴러2의 복제물은 원격 수동 백업에 기초하여 스폰될 수 있다. 즉, 실행을 위한 제2 JVM(64)의 컴포넌트를 포함하는 새로운 스케쥴러 스케쥴러2'가 생긴다. 최대 고장 검출 지연 및 복제물 생성을 위한 시간에 기초하여, 하나의 고장의 경우에 최대 정지시간(downtime)이 추정될 수 있으며, 이는 고가용성 보장을 제공한다.
마지막으로, 도 3a 내지 도 3d에서 설명되고 이제 도 5c에 도시되어 있는 바와 같은 본 발명의 예시적인 애플리케이션에 대하여, 충돌한 제2 JVM(64)의 복구시, 다시 살아난 스케쥴러2는 제3 JVM(66)에서 스폰된 복제물, 즉 스케쥴러2'에 저장되어 있던 체크포인트 정보를 페치할 것이다. 그 결과, 통지 메시지(91)를 통하여 제2 JVM(64)이 시동되어 실행 중임을 다른 머신(예를 들어, JVM1) 상의 선행 컴포넌트에 나타낼 수 있고, 스케쥴러2의 스폰된 원격 백업(즉, 스케쥴러2')이 종료될 수 있음을 제3 JVM(66)에 더 나타낼 수 있다.
예시적이고 미리 형성된 본 발명의 실시예에 관련하여 본 발명이 구체적으로 도시되고 설명되었지만, 당해 기술 분야에서의 숙련자라면 본 발명의 사상 및 범위에서 벗어나지 않고서 그 안에서 형태 및 상세사항에 있어서의 전술 및 기타 변경이 이루어질 수 있고 첨부한 청구항의 범위에 의해서만 제한되어야 한다는 것을 이해할 것이다.

Claims (10)

  1. 컴퓨팅 시스템에 있어서,
    각각이 작업을 수행할 로직을 구현하는 것인 복수의 소프트웨어 컴포넌트들 - 상기 컴포넌트들은, 네트워크에서 접속되어 있는 하나 이상의 머신을 포함하며 상기 컴포넌트들 간에 메시지들을 통신하도록 적응된 런 타임(run-time) 실행 환경에서 실행되고, 상기 메시지들은 수신 컴포넌트에서 비결정론적(non-deterministic) 도달 순서를 갖는 것으로 특징지어짐 - ;
    결정론적(deterministic) 타임스탬프를 자동으로 생성하고, 프로그램 실행 동안 전송지(sender) 컴포넌트로부터 수신지(receiver) 컴포넌트로 전달될 메시지와 함께 상기 결정론적 타임스탬프를 연관시키는 수단 - 상기 결정론적 타임스탬프는 상기 수신지 컴포넌트에서의 상기 메시지의 추정되는 도달 시간을 나타냄 - ;
    입력 메시지들의 고유의 도달 순서를 생성하도록 상기 결정론적 타임스탬프를 사용함으로써 상기 컴포넌트를 결정론적으로 실행시키는 수단; 및
    프로그램 실행 동안 컴포넌트의 상태를 추적하고 로컬 저장 디바이스에 상기 상태를 체크포인트(checkpoint)하는 수단을 포함하고,
    머신의 고장시, 최근 저장된 체크포인트를 복구하고 상기 최근 저장된 체크포인트 이래로 발생하는 이벤트들을 재실행함으로써 상기 컴포넌트 상태가 복원되는 것인, 컴퓨팅 시스템.
  2. 청구항 1에 있어서,
    상기 컴포넌트 상태는 백업 프로세서 디바이스에 체크포인트되는 것인, 컴퓨 팅 시스템.
  3. 청구항 1에 있어서,
    상기 실행 환경은 단일 자바 가상 머신(Java virtual machine)을 포함하며, 각각의 상기 컴포넌트들이 상기 단일 자바 가상 머신에 저장되는 것인, 컴퓨팅 시스템.
  4. 청구항 1에 있어서,
    상기 실행 환경은 복수의 자바 가상 머신들을 포함하며, 상기 컴포넌트들이 상기 복수의 자바 가상 머신들 전반에 걸쳐 분산(distributed) 방식으로 실행되는 것인, 컴퓨팅 시스템.
  5. 청구항 1에 있어서,
    컴포넌트로부터의 연속적인 메시지 전송들 사이의 시간 갭(time gap)을 검출하는 수단; 및
    상기 실행 환경에서 상기 컴포넌트로부터의 메시지들의 올바른 시간적 흐름을 확보하기 위해, 전송지 컴포넌트로부터 수신지 컴포넌트로 침묵(silence) 메시지 - 상기 침묵 메시지는 어떠한 메시지들도 포함하지 않는다고 알려진 시간의 범위를 표시함 - 의 송신을 가능하게 하는 수단을 더 포함하는, 컴퓨팅 시스템.
  6. 컴포넌트들 간의 메시지 통신을 가능하게 하도록 적응된 런 타임(run-time) 실행 환경을 제공하는 컴퓨팅 시스템에서 상기 컴포넌트들의 결정론적(deterministic) 실행을 위한 방법으로서, 각각의 상기 컴포넌트는 작업을 수행할 로직을 구현하며, 각각의 메시지는 수신 컴포넌트에서 비결정론적(non-deterministic) 도달 순서를 갖는 것으로 특징지어지는 것인, 상기 방법에 있어서,
    결정론적(deterministic) 타임스탬프를 자동으로 생성하고, 프로그램 실행 동안 전송지(sender) 컴포넌트로부터 수신지(receiver) 컴포넌트로 전달될 메시지와 함께 상기 결정론적 타임스탬프를 연관시키고 - 상기 결정론적 타임스탬프는 상기 수신지 컴포넌트에서의 상기 메시지의 추정되는 도달 시간을 나타냄 - ;
    입력 메시지들의 고유한 도달 순서를 생성하도록 상기 결정론적 타임스탬프를 사용함으로써 상기 컴포넌트를 결정론적으로 실행시키고;
    컴포넌트에서, 프로그램 실행 동안 상기 컴포넌트의 상태를 추적하고, 로컬 저장 디바이스에 상기 상태를 체크포인트(checkpoint)하는 것을 포함하고,
    컴포넌트의 고장시, 최근 저장된 체크포인트를 복구하고 상기 최근 저장된 체크포인트 이래로 발생하는 이벤트들을 재실행함으로써 상기 컴포넌트 상태가 복원되는 것인, 결정론적 실행 방법.
  7. 청구항 6에 있어서,
    상기 체크포인트된 상태에 기록되어 있는 상기 결정론적 타임스탬프와 연관된 메시지와 동일한 순서로 상기 메시지들을 처리함으로써 상기 수신 컴포넌트의 실행을 반복하는 것을 더 포함하는, 결정론적 실행 방법.
  8. 청구항 6에 있어서,
    수신된 메시지와 연관된 상기 결정론적 타임스탬프에 따라 상기 실행 환경에서 하나 이상의 컴포넌트들의 실행을 관리하는 것을 더 포함하며, 상기 관리하는 것은 상기 실행 환경에서 컴포넌트에 실행 스레드(thread)를 할당하는 것을 포함하는 것인, 결정론적 실행 방법.
  9. 컴포넌트 지향(component-oriented) 애플리케이션의 결정론적(deterministic) 실행을 가능하게 하는 시스템에 있어서,
    런 타임(run-time) 실행 환경에서 컴포넌트들 간의 메시지들의 통신을 가능하게 하는 서브시스템 - 상기 컴포넌트들은 메시지 입력들이 수신되거나 상기 컴포넌트들로부터 출력되는 하나 이상의 포트들을 포함하고, 각각의 컴포넌트는 작업을 수행할 로직을 구현하며, 각각의 메시지는 수신 컴포넌트에서 비결정론적(non-deterministic) 도달 순서를 갖는 것으로 특징지어짐 - ;
    상위 레벨 설계를, 상기 실행 환경의 특정 프로세싱 엔진들에 컴포넌트들이 할당되는 하위 레벨 구현으로 매핑하는 수단; 및
    코드 개선 수단을 포함하고,
    상기 코드 개선 수단은,
    결정론적(deterministic) 타임스탬프를 자동으로 생성하고, 프로그램 실행 동안 전송지(sender) 컴포넌트로부터 수신지(receiver) 컴포넌트로 전달될 메시지와 함께 결정론적 타임스탬프로, 연관된 컴포넌트의 입력 또는 출력 메시지를 증대(augment)시키고 - 상기 타임스탬프는 상기 수신지 컴포넌트에서의 상기 메시지의 추정되는 도달 시간을 나타냄 - ;
    컴포넌트의 상태에 대한 점진적 변화를 추적하기 위한 코드로 상기 컴포넌트를 증대시키기 위한 것이며,
    컴포넌트의 상태는 프로그램 실행 동안 추적되며, 상기 컴포넌트 상태가 로컬 저장 디바이스에 체크포인트(checkpoint)되는 것이고,
    컴포넌트의 고장시, 최근 저장된 체크포인트를 복구하고 상기 최근 저장된 체크포인트 이래로 발생하는 이벤트들을 재실행함으로써 상기 컴포넌트 상태가 복원되는 것인, 시스템.
  10. 머신에 의해 판독가능한 컴퓨터 판독가능 저장 매체에 있어서,
    상기 컴퓨터 판독가능 저장 매체는 컴포넌트들 간의 메시지 통신을 가능하게 하도록 적응된 컴퓨팅 시스템에서 상기 컴포넌트들의 결정론적(deterministic) 실행을 위한 방법 단계들을 수행하도록 상기 머신에 의해 실행 가능한 명령들의 프로그램을 실체적으로(tangibly) 구현하고, 각각의 컴포넌트는 작업을 수행할 로직을 구현하며, 각각의 메시지는 수신 컴포넌트에서 비결정론적(non-deterministic) 도달 순서를 갖는 것으로 특징지어지고, 상기 방법 단계들은,
    결정론적(deterministic) 타임스탬프를 자동으로 생성하고, 프로그램 실행 동안 전송지(sender) 컴포넌트로부터 수신지(receiver) 컴포넌트로 전달될 메시지와 함께 상기 결정론적 타임스탬프를 연관시키고 - 상기 결정론적 타임스탬프는 상기 수신지 컴포넌트에서의 상기 메시지의 추정되는 도달 시간을 나타냄 - ;
    입력 메시지들의 고유한 도달 순서를 생성하도록 상기 결정론적 타임스탬프를 사용함으로써 상기 컴포넌트를 결정론적으로 실행시키고;
    컴포넌트에서, 프로그램 실행 동안 상기 컴포넌트의 상태를 추적하고, 로컬 저장 디바이스에 상기 상태를 체크포인트(checkpoint)하는 것을 포함하고,
    컴포넌트의 고장시, 최근 저장된 체크포인트를 복구하고 상기 최근 저장된 체크포인트 이래로 발생하는 이벤트들을 재실행함으로써 상기 컴포넌트 상태가 복원되는 것인, 컴퓨터 판독가능 저장 매체.
KR1020097016949A 2007-04-26 2008-04-15 분산형 고장 허용 및 고가용성 컴퓨팅 시스템 KR101126979B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/740,556 2007-04-26
US11/740,556 US7937618B2 (en) 2007-04-26 2007-04-26 Distributed, fault-tolerant and highly available computing system
PCT/US2008/004866 WO2008133818A1 (en) 2007-04-26 2008-04-15 Distributed, fault-tolerant and highly available computing system

Publications (2)

Publication Number Publication Date
KR20090118934A KR20090118934A (ko) 2009-11-18
KR101126979B1 true KR101126979B1 (ko) 2012-03-26

Family

ID=39888475

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097016949A KR101126979B1 (ko) 2007-04-26 2008-04-15 분산형 고장 허용 및 고가용성 컴퓨팅 시스템

Country Status (7)

Country Link
US (1) US7937618B2 (ko)
EP (1) EP2156307B1 (ko)
JP (1) JP5373770B2 (ko)
KR (1) KR101126979B1 (ko)
CN (1) CN101663660B (ko)
AU (1) AU2008244623B2 (ko)
WO (1) WO2008133818A1 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070174695A1 (en) * 2006-01-18 2007-07-26 Srinidhi Varadarajan Log-based rollback-recovery
US8327327B2 (en) * 2007-03-21 2012-12-04 Carnegie Mellon University Method for statically checking an object-oriented computer program module
US8566829B1 (en) * 2008-01-30 2013-10-22 Emc Corporation Cooperative multi-level scheduler for virtual engines
US7979844B2 (en) * 2008-10-14 2011-07-12 Edss, Inc. TICC-paradigm to build formally verified parallel software for multi-core chips
US8060780B2 (en) * 2008-12-16 2011-11-15 Sap Ag Transient transaction execution with on-demand persistency
JP2010224935A (ja) * 2009-03-24 2010-10-07 Olympus Corp 分散処理システム
US20110078666A1 (en) * 2009-05-26 2011-03-31 University Of California System and Method for Reproducing Device Program Execution
US8468388B2 (en) * 2010-04-20 2013-06-18 International Business Machines Corporation Restoring programs after operating system failure
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US8516032B2 (en) * 2010-09-28 2013-08-20 Microsoft Corporation Performing computations in a distributed infrastructure
US8724645B2 (en) 2010-09-28 2014-05-13 Microsoft Corporation Performing computations in a distributed infrastructure
US20120221884A1 (en) * 2011-02-28 2012-08-30 Carter Nicholas P Error management across hardware and software layers
US8782614B2 (en) * 2011-04-08 2014-07-15 Ca, Inc. Visualization of JVM and cross-JVM call stacks
US9202185B2 (en) 2011-04-08 2015-12-01 Ca, Inc. Transaction model with structural and behavioral description of complex transactions
US8745434B2 (en) 2011-05-16 2014-06-03 Microsoft Corporation Platform for continuous mobile-cloud services
US20130124174A1 (en) * 2011-06-03 2013-05-16 David R. Jefferson Internal parallelism in a parallel discrete event simulation for space situational awareness
ES2896059T3 (es) * 2011-12-22 2022-02-23 Amadeus Método y sistema para el seguimiento y la verificación de mensajes
US9122595B2 (en) * 2012-01-13 2015-09-01 NetSuite Inc. Fault tolerance for complex distributed computing operations
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9563452B2 (en) 2013-06-28 2017-02-07 Sap Se Cloud-enabled, distributed and high-availability system with virtual machine checkpointing
US9569517B1 (en) 2013-11-27 2017-02-14 Google Inc. Fault tolerant distributed key-value storage
US10394605B2 (en) * 2014-07-25 2019-08-27 Ab Initio Technology Llc Mutable chronologies for accommodation of randomly occurring event delays
KR101947221B1 (ko) * 2015-03-24 2019-02-12 건국대학교 산학협력단 가상 클러스터 구동 시간 스케줄링 방법 및 장치
WO2016153288A1 (ko) * 2015-03-24 2016-09-29 건국대학교 산학협력단 가상 클러스터 관리 시스템 및 이를 제어하기 위한 방법
US20160299786A1 (en) * 2015-04-10 2016-10-13 Microsoft Technology Licensing, Llc Code examination by scheduler timeline manipulation
US10133768B2 (en) 2015-04-14 2018-11-20 Microsoft Technology Licensing, Llc Latest external dependee entity in transaction record
US10031814B2 (en) 2015-04-14 2018-07-24 Microsoft Technology Licensing, Llc Collection record location as log tail beginning
US10592494B2 (en) 2015-04-14 2020-03-17 Microsoft Technology Licensing, Llc Collection record for overlapping data stream collections
US9959137B2 (en) 2015-04-14 2018-05-01 Microsoft Technology Licensing, Llc Transaction redo using skip element for object
US10102251B2 (en) 2015-04-14 2018-10-16 Microsoft Technology Licensing, Llc Lockless open collection data structure
US9766929B2 (en) 2015-04-14 2017-09-19 Microsoft Technology Licensing, Llc Processing of data stream collection record sequence
EP3692442A4 (en) * 2017-10-03 2020-11-25 Rubrik, Inc. PARTIAL RESTORATION OF A DATABASE
US10713124B2 (en) 2017-11-21 2020-07-14 Rubrik, Inc. Database snapshot and backup management with recoverable chains
US10860431B2 (en) * 2018-07-06 2020-12-08 EMC IP Holding Company LLC System and method for fault tolerant backup generation in a virtual environment
US10860430B2 (en) * 2018-07-06 2020-12-08 EMC IP Holding Company LLC System and method for resilient backup generation
US11335141B2 (en) 2019-10-22 2022-05-17 Argo AI, LLC Checkpoint-based tracing for monitoring a robotic system
US11216344B2 (en) 2020-05-13 2022-01-04 Rubrik, Inc. Real time database backup status indication and restore
US11461155B2 (en) * 2020-05-31 2022-10-04 Wipro Limited Method and system for predicting an occurrence of a failure condition in a VDI environment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6078930A (en) * 1997-02-28 2000-06-20 Oracle Corporation Multi-node fault-tolerant timestamp generation
US20060168338A1 (en) * 2004-11-23 2006-07-27 Bruegl Aaron R Methods and systems for providing data across a network

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4665520A (en) * 1985-02-01 1987-05-12 International Business Machines Corporation Optimistic recovery in a distributed processing system
US5794005A (en) * 1992-01-21 1998-08-11 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Synchronous parallel emulation and discrete event simulation system with self-contained simulation objects and active event objects
GB2338325B (en) * 1994-10-03 2000-02-09 Univ Westminster Data processing method and apparatus for parallel discrete event simulation
CA2150967C (en) * 1994-12-22 2001-04-03 Jon C. R. Bennett Method and a scheduler for controlling when a server provides service with rate control to an entity
JP3154942B2 (ja) * 1995-09-11 2001-04-09 株式会社東芝 分散チェックポイント生成方法および同方法が適用される計算機システム
US5917822A (en) * 1995-11-15 1999-06-29 Xerox Corporation Method for providing integrated packet services over a shared-media network
JP3253883B2 (ja) * 1997-01-31 2002-02-04 株式会社東芝 プロセスリスタート方法及びプロセス監視装置
US6031987A (en) * 1997-05-06 2000-02-29 At&T Optimistic distributed simulation based on transitive dependency tracking
US6397352B1 (en) * 1999-02-24 2002-05-28 Oracle Corporation Reliable message propagation in a distributed computer system
KR100382851B1 (ko) * 1999-03-31 2003-05-09 인터내셔널 비지네스 머신즈 코포레이션 분산형 데이터 처리 시스템에서 클라이언트 컴퓨터를관리하기 위한 방법 및 장치
US6553515B1 (en) * 1999-09-10 2003-04-22 Comdial Corporation System, method and computer program product for diagnostic supervision of internet connections
US6584581B1 (en) * 1999-12-06 2003-06-24 Ab Initio Software Corporation Continuous flow checkpointing data processing
AU2134301A (en) * 1999-12-08 2001-06-18 University Of British Columbia, The Weighted fair queuing scheduler
US7315948B1 (en) * 1999-12-10 2008-01-01 International Business Machines Corporation Time stamping method employing a separate ticket and stub
US20030149967A1 (en) * 2000-05-04 2003-08-07 Tomihisa Kamada Information processing method and system
US6708288B1 (en) * 2000-10-31 2004-03-16 Hewlett-Packard Development Company, L.P. Compiler-based checkpointing for support of error recovery
US7743126B2 (en) 2001-06-28 2010-06-22 Hewlett-Packard Development Company, L.P. Migrating recovery modules in a distributed computing environment
US7013348B1 (en) * 2001-12-21 2006-03-14 Nortel Networks Limited Switch subtending in a synchronous transmission system
US7246054B2 (en) * 2002-05-13 2007-07-17 Rensselaer Polytechnic Institute Discrete event simulation system and method
US7383550B2 (en) * 2002-12-23 2008-06-03 International Business Machines Corporation Topology aware grid services scheduler architecture
US7937551B2 (en) * 2003-01-21 2011-05-03 Dell Products L.P. Storage systems having differentiated storage pools
JP4170988B2 (ja) * 2003-05-09 2008-10-22 富士通株式会社 実行環境の危険予測/回避方法,システム,プログラムおよびその記録媒体
US7886180B2 (en) * 2004-05-14 2011-02-08 International Business Machines Corporation Recovery in a distributed stateful publish-subscribe system
US7873941B2 (en) * 2004-06-14 2011-01-18 Alcatel-Lucent Usa Inc. Manager component that causes first software component to obtain information from second software component
US7660366B2 (en) * 2004-08-30 2010-02-09 Harmonic Inc. Message synchronization over a stochastic network
US7376867B1 (en) * 2004-12-08 2008-05-20 Hewlett-Packard Development Company, L.P. Method of seeking consensus among computer processes
US7903560B2 (en) * 2004-12-30 2011-03-08 Intel Corporation Correlation technique for determining relative times of arrival/departure of core input/output packets within a multiple link-based computing system
US7653834B2 (en) 2005-08-29 2010-01-26 Searete, Llc Power sparing synchronous apparatus
US7983303B2 (en) * 2007-06-15 2011-07-19 Screen Service Broadcasting Technologies S.P.A. Mega-frame initialization packet generation and synchronous re-generation with bit rate adaptation for single frequency networks with multiple modulation schemes

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6078930A (en) * 1997-02-28 2000-06-20 Oracle Corporation Multi-node fault-tolerant timestamp generation
US20060168338A1 (en) * 2004-11-23 2006-07-27 Bruegl Aaron R Methods and systems for providing data across a network

Also Published As

Publication number Publication date
WO2008133818A1 (en) 2008-11-06
EP2156307A1 (en) 2010-02-24
US20080270838A1 (en) 2008-10-30
KR20090118934A (ko) 2009-11-18
CN101663660A (zh) 2010-03-03
JP2010525484A (ja) 2010-07-22
AU2008244623B2 (en) 2013-03-28
EP2156307A4 (en) 2010-10-13
EP2156307B1 (en) 2018-05-23
CN101663660B (zh) 2012-08-01
AU2008244623A1 (en) 2008-11-06
JP5373770B2 (ja) 2013-12-18
US7937618B2 (en) 2011-05-03

Similar Documents

Publication Publication Date Title
KR101126979B1 (ko) 분산형 고장 허용 및 고가용성 컴퓨팅 시스템
US8893139B2 (en) System and method for time-aware run-time to guarantee timeliness in component-oriented distributed systems
JP5258019B2 (ja) アプリケーション・プロセス実行の範囲内での非決定論的オペレーションを管理、ロギング、またはリプレイするための予測方法
US7613597B2 (en) Non-intrusive method for simulation or replay of external events related to an application process, and a system implementing said method
US8904361B2 (en) Non-intrusive method for logging of internal events within an application process, and system implementing this method
US7568131B2 (en) Non-intrusive method for logging external events related to an application process, and a system implementing said method
US8943127B2 (en) Techniques for capturing data sets
KR20060071860A (ko) 워크플로우 트랜잭션의 일괄화를 통한 런타임 및애플리케이션 상태의 동기화
US7840940B2 (en) Semantic management method for logging or replaying non-deterministic operations within the execution of an application process
Quaglia et al. Nonblocking checkpointing for optimistic parallel simulation: Description and an implementation
US7536587B2 (en) Method for the acceleration of the transmission of logging data in a multi-computer environment and system using this method
US7533296B2 (en) Method for optimizing the transmission of logging data in a multi-computer environment and a system implementing this method
Dumitraş et al. Architecting and implementing versatile dependability
Barrett et al. Models of replication for safety critical hard real time systems
Holenko et al. The impact of service semantics on the consistent recovery in SOA
Weber et al. Vidnet: Distributed processing environment for computer generated animation
Bronevetsky Portable checkpointing for parallel applications
McLaughlin Scheduling fault-tolerant, parallel computations in a distributed environment
Koob et al. Foundations of dependable computing: paradigms for dependable applications
Reiher Experiences with optimistic synchronization for distributed operating systems
Kim et al. A special checkpointing object method based primary-passive TMO replication scheme and middleware support
Babaoğlu Tools and Techniques for Adding Fault Tolerance to Distributed and Parallel Programs
Liu A QoS-driven resource allocation framework based on the risk incursion function and its incorporation into a middleware architecture and mechanisms supporting distributed fault-tolerant real-time computing applications
Dabholkar1a et al. SafeMAT: Safe Middleware-based Adaptation for Predictable Fault-Tolerant Distributed Real-time and Embedded Systems
Pereira Semantically Reliable Group Communication

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: 20150227

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160218

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170201

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee