KR20010099790A - 분산 처리 시스템에서 메세지 통과 커널을 갖는클러스터형 엔터프라이즈 java™ - Google Patents

분산 처리 시스템에서 메세지 통과 커널을 갖는클러스터형 엔터프라이즈 java™ Download PDF

Info

Publication number
KR20010099790A
KR20010099790A KR1020017005752A KR20017005752A KR20010099790A KR 20010099790 A KR20010099790 A KR 20010099790A KR 1020017005752 A KR1020017005752 A KR 1020017005752A KR 20017005752 A KR20017005752 A KR 20017005752A KR 20010099790 A KR20010099790 A KR 20010099790A
Authority
KR
South Korea
Prior art keywords
processing device
processing system
software
java
processing
Prior art date
Application number
KR1020017005752A
Other languages
English (en)
Other versions
KR100673627B1 (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 KR20010099790A publication Critical patent/KR20010099790A/ko
Application granted granted Critical
Publication of KR100673627B1 publication Critical patent/KR100673627B1/ko

Links

Classifications

    • 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
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]
    • 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/465Distributed object oriented systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

Abstract

클러스터형 엔터프라이즈 JavaTM분산 처리 시스템이 개시된다. 이 분산 처리 시스템은 통신 매체에 결합된 제 1, 2 컴퓨터를 포함한다. 제 1 컴퓨터는 JavaTM가상 장치(JVM), 및 원격 JavaTM가상 장치(RJVM)를 포함하는, 메세지를 전송하기 위한 커널 소프트웨어층을 포함한다. 제 2 컴퓨터는 JVM, 및 RJVM을 갖는 커널 소프트웨어층을 포함한다. 메세지들은 제 1 컴퓨터의 RJVM에서 JVM으로, 제 2 컴퓨터의 JVM 및 RJVM으로 전송된다. 메세지들은 중간 서버를 통하여 전송될 수도 있으며, 또는 네트워크 재구성후 재루트될 수도 있다. 각 컴퓨터는, 로드 밸런싱 소프트웨어 요소 및 페일오버 소프트웨어 요소를 포함하는, 복사 처리기를 갖는 스마트 스터브를 포함한다. 각 컴퓨터는 노드에 스마트 스터브들의 풀을 저장하기 위한 복사된 서비스 네이밍 트리를 포함한다. 컴퓨터들은 스테이트리스, 스테이트리스 팩토리, 또는 스테이트풀 프로그래밍 모델로 프로그램될 수도 있다. 클러스터형 엔터프라이즈 JavaTM분산 처리 시스템은 확장성 및 폴트 허용도를 개선할 수 있다.

Description

분산 처리 시스템에서 메세지 통과 커널을 갖는 클러스터형 엔터프라이즈 JAVA™{CLUSTERED ENTERPRISE JAVA™ HAVING A MESSAGE PASSING KERNEL IN A DISTRIBUTED PROCESSING SYSTEM}
분산 처리 시스템에는 몇 가지의 형태가 있다. 일반적으로, 분산 처리 시스템은, 가령 통신 매체에 결합된 두 개의 컴퓨터들과 같은 다수의 처리 장치들을 포함한다. 통신 매체들은 유선 매체들, 무선 매체들, 또는 이서넷 국부 영역 네트워크 또는 셀룰러 네트워크와 같은 이들의 결합을 포함할 수도 있다. 분산 처리 시스템에서는, 적어도 하나의 처리 장치가 통신 매체 상의 정보를 다른 처리 장치로 전송할 수도 있다.
도 1a에 도시된 클라이언트/서버 구조(110)는 한 타입의 분산 처리 시스템이다. 클라이언트/서버 구조(110)는 클라이언트(105) 및 애플리케이션 서버(103)로서 도시된 적어도 두 개의 처리 장치들을 포함한다. 가령 클라이언트(108)와 같은 부가적인 클라이언트들이 또한 통신 매체(104)에 결합될 수도 있다.
전형적으로, 서버(103)는 비즈니스 로직을 호스트하며, 그리고/또는, 가령 클라이언트(103) 및/또는 클라이언트(108)와 같은 다른 처리 장치로의 서비스시 트랜잭션들을 조정한다. 애플리케이션 서버(103)는 전형적으로 소프트웨어로 프로그램되어 서비스를 제공한다. 소프트웨어는, 가령 도 1a 및 b에 도시된 엔터프라이즈 JAVATM("EJB")(100b)과 같은 다양한 프로그래밍 모델들을 이용하여 프로그램될 수도 있다. 이러한 서비스는, 예를 들어 데이터베이스로부터의 데이터 검색 및 전송, 이미지의 제공 및/또는 방정식의 계산을 포함한다. 예를 들어, 서버(103)는 클라이언트(105)로부터의 요구에 응답하여 통신 매체(102)를 통해 불변 기억장치(101) 내의 데이터베이스(101a)로부터 데이터를 검색할 수도 있다. 이후, 애플리케이션 서버(103)는 요구된 데이터를 통신 매체(104)를 통해 클라이언트(105)로 전송할 수도 있다.
클라이언트는 서버로부터 서비스를 이용하고 서비스를 요구할 수도 있는 처리 장치이다. 종종, 사용자(106)는 클라이언트(105)와 상호작용을 하며, 클라이언트(105)로 하여금 통신 매체(104)를 통하여 애플리케이션 서버(103)로부터의 서비스를 요구하도록 할 수도 있다. 클라이언트는, 요구들을 수신하고 그 결과들을 디스플레이하는 등 최종 사용자들과 종종 직접 상호작용을 한다.
애플리케이션 서버(103) 및/또는 클라이언트(105)를 프로그램시키는 데에는 다른 타입의 다양한 소프트웨어가 이용될 수도 있다. 하나의 프로그래밍 언어는 JavaTM프로그래밍 언어이다. JavaTM애플리케이션 오브젝트 코드가 JavaTM가상 장치("JVM")로 로드된다. JAM은 특정한 장치 또는 처리 장치를 에뮬레이트하는 처리 장치 위에 로드되는 프로그램이다. JavaTM프로그래밍 언어에 대한 좀 더 많은정보들은 본원의 참조로서 인용된 http://www.javasoft.com에서 얻을 수도 있다.
도 1b는 몇 개의 JavaTM엔터프라이즈 애플리케이션 프로그래밍 인터페이스들("AplS")(100)을 도시하는데, 이들은 JavaTM애플리케이션 코드가 기초를 이루는 트랜잭션 시스템들, 데이터베이스들 및 네트워크 하부구조들로부터 독립적으로 유지되도록 한다. JavaTM엔터프라이즈 APLs(100)은, 예를 들어 원격 방법 호출(invocation)("RMI")(100a), EJBs(100b), 및 JavaTM네이밍 및 디렉토리 인터페이스(JNDI)(100c)를 포함한다.
RMI(100a)는 하기에 설명되는 피어 투 피어(peer-to-peer) 구조에서 종종 이용되는 분산 프로그래밍 모델이다. 특히, 클래스들 및 인터페이스들의 세트는 하나의 JavaTM오브젝트가 다른 JVM에서 작동되는 다른 JavaTM오브젝트의 공용 방법을 호출할 수 있게 한다.
EJB(100b)의 경우는 전형적으로 상기 설명된 클라이언트/서버 구조에서 이용된다. EJB(100b)의 경우는 소프트웨어 구성요소 또는 다른 구성요소들과 결합될 수 있는 캡슐화된 애플리케이션 코드의 재사용가능한 선(pre)-형성 피스이다. 전형적으로, EJB(100b)의 경우는 비즈니스 로직을 포함한다. 서버(103) 상에 저장된 EJB(100b)는 전형적으로 존속(persistence), 트랜잭션들(transactions), 동시발생(concurrency), 쓰레딩(threading), 및 안전(security)을 다룬다.
JND1(100c)는 JavaTM소프트웨어 애플리케이션들에 디렉토리 및 네이밍 기능들을 제공한다.
클라이언트/서버 구조(110)는 많은 단점들을 갖는다. 첫 번째, 구조(110)는 서버(103)가 많은 연결들을 처리해야하기 때문에 일정한 비율로 만들어지지(scale) 않는다. 즉, 서버(103)에 부착될 수도 있는 클라이언들의 수는 한정된다. 또한, 두 배의 많은 처리 장치들(클라이언트들)을 부가한다고 해서 반드시 두 배의 더 많은 성능들을 제공하는 것은 아니다. 두 번째, 클라이언트들(105 및 108)에 대한 애플리케이션 코드를 유지하기가 어렵다. 세 번째, 구조(110)는 시스템 고장 또는 단일 지점의 고장이 일어나기 쉽다. 서버(101)가 고장나고 백업이 불가능하다면, 클라이언트(105)는 서비스를 받을 수가 없을 것이다.
도 1c는 멀티 티어(multi-tier) 구조(160)를 도시한다. 클라이언트들(151, 152)은 최종 사용자들과 직접 상호작용을 하여 요구들을 받아들이고 그 결과들을 디스플레이한다. 애프리케이션 서버(153)는 애플리케이션 코드를 호스트하고, 통신, 통기화 및 트랜잭션들을 조정한다. 데이터베이스 서버(154) 및 휴대용 기억 장치(155)는 데이터의 영구적인 트랜잭션 처리를 제공한다.
멀티 티어 구조(160)는 상기 설명된 클라이언트/서버 구조(110)와 유사한 단점을 갖는다.
도 2는 피어 투 피어 구조(214)를 도시한다. 처리 장치들(216, 217 및 218)은 통신 매체(213)에 결합된다. 처리 장치들(216, 217 및 218)은 매체(213)를 통해통신하기 위한 네트워크 소프트웨어(210a, 210b 및 210c)를 포함한다. 전형적으로, 피어 투 피어 구조 내의 각 처리 장치는 유사한 처리 성능 및 애플리케이션들을 갖는다. 피어 투 피어 프로그램 모델들의 예로는 공통 오브젝트 요구 브로커 구조("CORBA") 및 분산 오브젝트 요소 모델("DCOM") 구조가 있다.
플랫폼 지정(platform-specific) 분산 처리 시스템에서, 각 처리 장치는 동일한 운영 체제를 가동시킬 수도 있다. 이는 처리 장치들 간의 통신을 위하여, 가령 공유 디스크들, 멀티-테일 디스크들, 및 고속 내부연결들과 같은 주변 하드웨어를 이용할 수 있게 한다. 플랫폼-지정 분산 처리 시스템의 예로는 IBM사의 S/390병렬 시스플렉스(Sysplex), 컴팩의 직렬(tandem) 히머레이아(himalaya) 서버들, 컴팩의 디지털 장비사TM(DECTM) 분할 오픈VMSTM클러스터 소프트웨어, 및 마이크로소프트사의 윈도우즈 NT 클러스터 서비스(Wolfpack)가 있다.
도 2b는 트랜잭션 처리(TP) 구조(220)를 도시한다. 특히, TP 구조(220)는 BEA시스템즈 인코포레이티드의 TUXEDO구조를 도시한다. TP 모니터(224)는 각각 통신 매체(280, 281 및 282)를 통하여 처리 시스템들 ATM(221), PC(222), 및 TP 모니터(22)에 연결된다. ATM(221)은 자동화된 텔러 머신이 될 수도 있으며, PC(222)는 개인용 컴퓨터가 될 수도 있고, 그리고 TP 모니터(223)는 다른 트랜잭션 프로세서 모니터가 될 수도 있다. TP 모니터(224)는 통신 매체들(283, 284 및 285)을 통하여 백-엔드 서버들(225, 226 및 227)에 결합된다. 서버(225)는 통신매체(286)를 통하여, 데이터베이스(289)를 저장하는 불변 기억장치(287)에 결합된다. TP 모니터(224)는, 가령 ATM(221), PC(222), 또는 TP 모니터(223)와 같은 처리 장치들로부터의 서비스 요구들을, 가령 서버(225, 226 및 227)와 같은 다양한 서버들로 루트시키기 위한 워크플로우 컨트롤러(224a)를 포함한다. 워크 플로우 컨트롤러(224a)는 (1) 서버들 간의 워크로드 밸런싱과, (2) 제한된 확장성(scalability) 또는 부가적인 서버들 및/또는 클라이언트의 허용, (3) 리던던트 백엔드 서버들의 폴트 허용도(또는 서비스 요구가 워크플로우 컨트롤러에 의해 고장나지 않은 서버로 전송될 수도 있다), 및 (4) 백-엔드 서버들로의 동시 접속들의 수를 제한하기 위한 세션 집중을 가능하게 한다. 다른 트랜잭션 처리 구조의 예로는 IBM사의 CICS, 컴팩의 직렬 분할 패스웨이/포드/TS, 컴팩의 DECTMACMS, 및 트랜스아크(Transarc)사의 엔시나(Encina)가 있다.
TP 구조(220)는 또한 많은 단점들을 갖는다. 첫 번째, 단일 처리 장치 또는 TP 모니터(224)의 고장은 네트워크를 작동불가능하게 할 수도 있다. 두 번째, TP 모니터(224)에 결합된 처리 장치들(서버들 및 클라이언트들)의 확장성 및 수는 TP 모니터(224) 하드웨어 및 소프트웨어에 의해 제한될 수도 있다. 세 번째, 클라이언트의 요구를 서버로 루트시키는데 있어서의 유연성이 제한될 수도 있다. 예를 들어, 통신 매체(280)가 작동불가능하고, 통신 매체(290)이 작동가능하다면, ATM(221)은 전형적으로 통신 매체(290)를 통하여 서버(225)로부터 바로 서비스를 요구하지 않을 수도 있으며 TP 모니터(224)를 접속해야 한다. 네 번째, 클라이언트는 전형적으로 백-엔드 서버 또는 다른 처리 장치의 상태를 알지 못한다. 다섯 번째, 어떠한 산업 표준 소프트웨어 또는 APLs도 로드 밸런싱에 이용되지 못한다. 그리고, 여섯 번째, 클라이언트가 유효 서비스를 가능하게 할 수 있는 관련 정보를 가지고 있다고 하더라도, 클라이언트는 전형적으로 특정한 서버를 선택하지 않을 수도 있다.
따라서, 분산 처리 시스템, 특히 고유의 단점들을 갖지 않으면서 종래 기술의 분산 처리 시스템들의 장점들을 갖는 분산 처리 시스템 소프트웨어를 제공하는 것이 바람직하다. 이 소프트웨어는, 전형적으로 클라이언트/서버, 멀티-티어, 또는 피어 투 피어 분산 처리 시스템들에서 이용되는 산업 표준 APls를 허용해야 한다. 이 소프트웨어는 다양한 컴퓨터 프로그래밍 모델들을 지원해야 한다. 또한, 이 소프트웨어는 (1) 강화된 폴트 허용도, (2) 효율적인 확장성, (3) 유효한 로드 밸런싱, 및 (4) 세션 집중 제어를 가능하게 해야 한다. 이 개선된 컴퓨터 소프트웨어는 컴퓨터 네트워크의 재루팅 또는 재구성이 가능해야 한다. 또한, 이 컴퓨터 소프트웨어는 처리 장치의 상태를 판단할 수 있게 해야 한다.
본 발명은 분산 처리 시스템들에 관한 것으로서, 특히 분산 처리 시스템들에서의 컴퓨터 소프트웨어에 관한 것이다.
관련 출원들의 상호 참조
본 출원은 1998년 11월 5일 출원된 미국 가 특허 출원 제60/107,167호의 이익을 주장한다.
하기의 동시 계류중인 미국 특허 출원들은 본 출원의 양수인에게 양도되었으며, 이들은 본원의 참조로서 인용된다:
(A) 명칭이 "분산 처리 시스템에서의 스마트 스터브 또는 엔터프라이즈 JAVATM빈(A SMART STUB OR ENTERPRISE JAVATMBEAN IN A DISTRIBUTED PROCESSING SYSTEM)"이며, 딘 비. 야곱(Dean B. Jacobs) 및 에릭 엠. 핼펀(Eric M. Halpern)에 의해 일 출원된 미국 특허 제 호(대리인 참조 No. BEAS1029);
(B) 명칭이 "분산 처리 시스템에서의 복사된 네이밍 서비스(A DUPLICATED NAMING SERVICE IN A DISTRIBUTED PROCESSING SYSTEM)"이며, 딘 비. 야곱(Dean B.Jacobs) 및 에릭 엠. 핼펀(Eric M. Halpern)에 의해 일 출원된 미국 특허 제 호(대리인 참조 No. BEAS1030).
(C) 초기 명칭이 "안전 분산 처리 시스템에서의 클러스터형 엔터프라이즈 JAVATM(CLUSTERED ENTERPRISE JAVATMIN A SECURE DISTRIBUTED PROCESSING SYSTEM)"이며, 딘 비. 야곱(Dean B. Jacobs) 및 아노 알. 랑젠(Anno R. Langen)에 의해 일 출원된 미국 특허 제 호(대리인 참조 No. BEAS1031).
도 1a는 종래 기술에 따른 클라이언트/서버 구조를 도시한다.
도 1b는 종래 기술에 따른 JavaTM엔터프라이즈 APls를 도시한다.
도 1c는 멀티 티어 구조를 도시한다.
도 2a는 종래 기술에 따른 피어 투 피어 구조를 도시한다.
도 2b는 종래 기술에 따른 트랜잭션 처리 구조를 도시한다.
도 3a는 본 발명에 따른 실시예의 단순화된 소프트웨어 블록도를 도시한다.
도 3b는 도 3a에 도시된 커널의 단순화된 소프트웨어 블록도를 도시한다.
도 3c는 클러스터형 엔터프라이즈 JavaTM구조를 도시한다.
도 4는 클러스터형 엔터프라이즈 JavaTM네이밍 서비스 구조를 도시한다.
도 5a는 스마트 스터브 구조를 도시한다.
도 5b는 EJB 오브젝트 구조를 도시한다.
도 6a는 로드 밸런싱 방법을 나타낸 제어 흐름도이다.
도 6b 내지 6g는 로드 밸런싱 방법들을 나타낸 제어 흐름도들이다.
도 7은 페일오버 방법을 나타낸 제어 흐름도이다.
도 8은 도 3 내지 5에 도시된 클러스터형 엔터프라이즈 JavaTM구조 내의 클라이언트/서버의 하드웨어 및 소프트웨어 요소들을 도시한다.
이제 본 발명은 도면을 참조하여 설명되는 하기의 상세한 설명으로부터 좀 더 명확하게 설명될 것이다. 도면에서, 동일한 참조 부호들은 동일한 요소들을 나타낸다.
개선된 분산 처리 시스템, 특히 분산 처리 시스템을 위한 컴퓨터 소프트웨어가 제공된다. 이 컴퓨터 소프트웨어는 효율적인 확장성 뿐 아니라 분산 처리 시스템의 폴트 허용도를 개선한다. 이 컴퓨터 소프트웨어는 효율적인 로드 밸런싱 및 세션 집중을 가능하게 한다. 이 컴퓨터 소프트웨어는 컴퓨터 네트워크의 재루팅 또는 재구성을 지원한다. 이 컴퓨터 소프트웨어는 다양한 컴퓨터 프로그래밍 모델들을 지원하며, 클라이언트/서버 및 피어 투 피어 분산 처리 구조에서 이용되는 산업 표준 APls를 허용한다. 이 컴퓨터 소프트웨어는 서버 또는 다른 처리 장치의 상태를 판단할 수 있게 한다. 이 컴퓨터 소프트웨어는 또한, 안전 모델을 포함하는 다양한 환경하에서의 메세지 전송을 지원한다.
본 발명의 일 양상에 따르면, 분산 처리 시스템은 제 1 처리 장치 및 제 2 처리 장치에 결합된 통신 매체를 포함한다. 제 1 처리 장치는 데이터 구조("RJVM1")를 갖는 제 1 커널 소프트웨어층을 포함하는 처리 장치("JVM1")를 에뮬레이트하는 제 1 소프트웨어 프로그램을 포함한다. 제 2 처리 장치는 데이터 구조("RJVM2")를 갖는 제 1 커널 소프트웨어층을 포함하는 처리 장치("JVM2")를 에뮬레이트하는 제 1 소프트웨어 프로그램을 포함한다. 제 1 처리 장치로부터의 메세지는 제 1 처리 장치 내의 제 1 커널 소프트웨어층 및 제 1 소프트웨어 프로그램을 통하여 제 2 처리 장치 내의 제 1 커널 소프트웨어층 제 1 소프트웨어 프로그램으로 전송된다.
본 발명의 다른 양상에 따르면, 제 1 처리 장치 내의 제 1 소프트웨어 프로그램은 JavaTM가상 머신("JVM")이며, 제 1 처리 장치 내의 데이터 구조는 원격 JavaTM가상 머신("RJVM")이다. 유사하게, 제 2 처리 장치 내의 제 1 소프트웨어 프로그램은 JVM이며 제 2 처리 장치 내의 데이터 구조는 RJVM이다. 제 2 처리 장치 내의 RJVM은 제 1 처리 장치 내의 JVM에 대응한다.
본 발명의 다른 양상에 따르면, 제 1 처리 장치 내의 RJVM은 소켓 매니저 소프트웨어 요소, 쓰레드(thread) 매니저 소프트웨어 요소, 메세지 루팅 소프트웨어 요소, 메세지 압축 소프트웨어 요소, 및/또는 피어곤(peer-gone) 검출 소프트웨어 요소를 포함한다.
본 발명의 다른 양상에 따르면, 제 1 처리 장치는 전송 제어 프로토콜("TCP"), 안전 소켓들 층("SSL"), 하이퍼텍스트 전송 프로토콜("HTTP") 터널링, 및 인터넷 interORB 프로토콜("IIOP") 터널링을 구성된 그룹으로부터 선택된 프로토콜을 이용하여 제 2 처리 장치와 통신한다.
본 발명의 다른 양상에 따르면, 제 1 처리 장치는 JavaTM애플리케이션을 위한 메모리 기억장치를 포함한다.
본 발명의 다른 양상에 따르면, 제 1 처리 장치는 제 2 처리 장치의 피어(peer)이다. 또한, 제 1 처리 장치는 서버이며 제 2 처리 장치는 클라이언트이다.
본 발명의 다른 양상에 따르면, 제 2 통신 매체가 제 2 처리 장치에 결합된다. 제 3 처리 장치가 제 2 통신 매체에 결합된다. 제 3 처리 장치는 제 1 데이터 구조("RJVM1") 및 제 1 데이터 구조("RJVM1")를 갖는 커널 소프트웨어층을 포함하는, 처리 장치("JVM3")를 에뮬레이트하는 제 1 소프트웨어 프로그램을 포함한다.
본 발명의 또 다른 양상에 따르면, 제 1 처리 장치는 복사-처리기(replica-handler) 소프트웨어 요소를 갖는 스터브(stub)를 포함한다. 복사-처리기 소프트웨어 요소는 로드 밸런싱 소프트웨어 요소 및 페일오버(failover) 소프트웨어 요소를포함한다.
본 발명의 다른 양상에 따르면, 제 1 처리 장치는 엔터프라이즈 JavaTM빈 오브젝트를 포함한다.
본 발명의 또 다른 양상에 따르면, 제 1 처리 장치는 트리의 노드에 저장된 풀을 갖는 네이밍 트리을 포함하고, 제 2 처리 장치는 이 네이밍 트리의 복사본을 포함한다.
본 발명의 또 다른 양상에 따르면, 제 1 처리 장치는 스테이트리스(stateless) 프로그램 모델로 코드화된 애플리케이션 프로그램을 포함하며, 이 애플리케이션 프로그램은 스테이트리스 세션 빈을 포함한다.
본 발명의 또 다른 양상에 따르면, 제 1 처리 장치는 스테이트리스 팩토리 프로그램 모델로 코드화된 애플리케이션 프로그램을 포함하며, 이 애플리케이션 프로그램은 스테이트풀(stateful) 세션 빈을 포함한다.
본 발명의 또 다른 양상에 따르면, 제 1 처리 장치는 스테이트풀한 프로그램 모델로 코드화된 애플리케이션 프로그램을 포함하며, 이 애플리케이션 프로그램은 엔티티 세션 빈을 포함한다.
본 발명의 또 다른 양상에 따르면, 정보 저장 매체를 포함하는 제조품이 제공된다. 이 제조품은 메세지를 제 1 처리 장치 내의 RJVM으로부터 제 2 처리 장치 내의 RJVM으로 전송하기 위한 제 1 세트의 디지털 정보를 포함한다.
본 발명의 또 다른 양상에 따르면, 상기 제조품은 다수의 서비스 제공자들로부터 하나의 서비스 제공자를 선택하기 위한 로드 밸런싱 소프트웨어 프로그램을 갖는 스터브를 포함하는, 제 1 세트의 디지털 정보를 포함한다.
본 발명의 또 다른 양상에 따르면, 상기 스터브는 다수의 서비스 제공자들로부터 잘못된 서비스 제공자를 제거하기 위한 페일오버 소프트웨어 요소를 갖는다.
본 발명의 또 다른 양상에 따르면, 로드 밸런싱 소프트웨어 요소는 특정한 서비스 제공자에 대한 선호도(affinity)를 기초로 한 서비스 제공자를 선택한다.
본 발명의 또 다른 양상에 따르면, 로드 밸런싱 소프트웨어 요소는 순환 순서 방식(round robin manner)으로 서비스 제공자를 선택한다.
본 발명의 또 다른 양상에 따르면, 로드 밸런싱 소프트웨어 요소는 서비스 제공자를 임의로 선택한다.
본 발명의 또 다른 양상에 따르면, 로드 밸런싱 소프트웨어 요소는 각 서비스 제공자의 로드를 기초로, 다수의 서비스 제공자들로부터 한 서비스 제공자를 선택한다.
본 발명의 또 다른 양상에 따르면, 로드 밸런싱 소프트웨어 요소는 요구된 데이터 타입을 기초로, 다수의 서비스 제공자들로부터 한 서비스 제공자를 선택한다.
본 발명의 또 다른 양상에 따르면, 로드 밸런싱 소프트웨어 요소는 물리적으로 가장 가까운 서비스 제공자를 기초로, 다수의 서비스 제공자들로부터 한 서비스 제공자를 선택한다.
본 발명의 또 다른 양상에 따르면, 로드 밸런싱 소프트웨어 요소는 각 서비스 제공자가 응답하는 시간 주기를 기초로, 다수의 서비스 제공자들로부터 한 서비스 제공자를 선택한다.
본 발명의 또 다른 양상에 따르면, 상기 제조품은 다수의 서비스 제공자들로부터 한 서비스 제공자를 선택하기 위한 엔터프라이즈 JavaTM빈 오브젝트를 포함하는, 제 1 세트의 디지털 정보를 포함한다.
본 발명의 또 다른 양상에 따르면, 스터브는 분산 처리 시스템의 처리 장치 내에 저장된다. 이 스터브는 서비스 제공자들의 리스트를 얻는 단계와, 이 서비스 제공자들의 리스트로부터 한 서비스 제공자를 선택하는 단계로 구성된 방법을 포함한다.
본 발명의 또 다른 양상에 따르면, 상기 방법은 또한 서비스 제공자들의 리스트로부터 잘못된 서비스 제공자를 제거하는 단계를 포함한다.
본 발명의 또 다른 양상에 따르면, 상기장치는 제 1 처리 장치 및 제 2 처리 장치에 결합된 통신 매체를 포함한다. 제 1 처리 장치는 서비스 제공자에게 접근하기 위한 원격 방법 호출(Remote Method Invocation)("RMI") 스터브를 포함하는 네이밍 트리를 저장한다. 제 2 처리 장치는 복사된 네이밍 트리 및 서비스 제공자를 구비한다.
본 발명의 또 다른 양상에 따르면, 상기 네이밍 트리는 현재 서비스 제공자들의 서비스 툴을 포함하는 노드를 구비한다.
본 발명의 또 다른 양상에 따르면, 상기 서비스 풀은 스터브를 포함한다.
본 발명의 또 다른 양상에 따르면, 분산 처리 시스템은 제 2 컴퓨터에 결합된 제 1 컴퓨터를 포함한다. 이 제 1 컴퓨터는 서비스 제공자에게 접속하기 위한 원격 호출 스터브를 포함하는 네이밍 트리를 구비한다. 제 2 컴퓨터는 복사된 네이밍 트리 및 서비스 제공자를 구비한다.
본 발명의 또 다른 양상에 따르면, 제 2 처리 장치에 결합된 제 1 처리 장치를 구비하는 분산 처리 시스템이 제공된다. 제 1 처리 장치는 JVM 및 RJVM을 포함하는 제 1 커널 소프트웨어층을 구비한다. 제 2 처리 장치는 제 1 JVM 및 제 2 RJVM을 포함하는 제 1 커널 소프트웨어층을 포함한다. 메세지는 제 1 JVM과 제 2 JV 사이에서 이용가능한 소켓이 없을 때 제 1 처리 장치로부터 제 2 처리 장치로 전송될 수도 있다.
본 발명의 또 다른 양상에 따르면, 제 1 처리 장치는 방화벽(firewall) 뒤에서 애플리트 안전 모델(applet security model) 하에서 작동하는 클라이언트이며, 그리고 제 2 처리 장치 또한 클라이언트이다.
본 발명의 다른 양상들 및 장점들은 첨부 도면을 참조하여 설명되는 하기의 상세한 설명, 및 청구항들로부터 명백해질 것이다.
Ⅰ. 클러스터형 엔터프라이즈 JavaTM분산 처리 시스템
A.클러스터형 엔터프라이즈 Java TM 소프트웨어 구조
도 3a는 본 발명의 실시예에 따른, 클러스터형 엔터프라이즈 JavaTM시스템의 처리 장치 내의 소프트웨어층들의 단순화된 블록도(380)를 도시한다. 클러스터형 엔터프라이즈 JavaTM분산 처리 시스템에 대한 상세한 설명은 하기에 제공된다. 소프트웨어의 제 1 층은, 가령 이서넷 국부 영역 네트워크와 같은 통신 매체 상에서 정보를 전송하고 수신하기 위한 통신 매체 소프트웨어 드라이버(351)를 포함한다. 전송 제어 프로토콜("TCP") 소프트웨어 요소(353) 및 인터넷 프로토콜("IP") 소프트웨어 요소(352)를 포함하는 운영 체제(310)는 정보의 패키지들 또는 블록들을 특정한 포맷으로 검색 및 전송하기 위한 상위 소프트웨어 층이다. "상위" 소프트웨어층은 일반적으로 하나 또는 그 이상의 "하위" 소프트웨어층들 또는 소프트웨어 요소들을 이용하거나, 또는 이들을 접속하는 소프트웨어 요소로서 정의된다. 이후, JVM(354)이 실행된다. 그런 다음, 원격 JavaTM가상 머신(356)을 갖는 커널(355)이 JVM(354) 상에 층을 이룬다. 하기에서 상세히 설명되는 커널(355)은 클러스터형 엔터프라이즈 JavaTM분산 처리 시스템 내에서 처리 장치들 간에 메세지들을 전송하는 데에 이용된다. 원격 방법 호출(357) 및 엔터프라이즈 JavaTM빈(358)은 커널(355)의 상위 소프트웨어층들이다. EJB(358)는 다양한 JavaTM애플리케이션들을 위한 컨테이너이다.
도 3b는 도 3a에 도시된 커널(355)의 상세도이다. 커널(355)은 소켓 매니저 요소(363), 쓰레드 매니저 요소(364), 및 RJVM(356)을 포함한다. RJVM(356)은 메세지 루팅 소프트웨어 요소(360), 압축 테이블(abbreviation table)(161c)을 포함하는 메세지 압축 소프트웨어 요소(361), 및 피어곤 검출 소프트웨어 요소(362)를 포함하는 데이터 구조이다. RJVM(356) 및 쓰레드 매니저 요소(364)는 소켓 매니저 요소(363)와 상호작용을 하여 처리 장치들 간에 정보를 전송한다.
B.분산 처리 시스템
도 3은 클러스터형 엔터프라이즈 JavaTM분산 처리 시스템(300)의 단순화된 블록도이다. 처리 장치들은 통신 매체(301)에 결합된다. 통신 매체(301)는 유선 및/또는 무선 통신 매체 또는 이들의 결합이 될 수도 있다. 일 실시예에서, 통신 매체(301)는 국부 영역 네트워크(LAN)이다. 변형 실시예에서, 통신 매체(301)는, 가령 인터넷 또는 월드 와이드 웹과 같은 세계-영역-네트워크(WAN)이다. 또 다른 실시예에서, 통신 매체(301)는 LAN 및 WAN이다.
다른 타입의 다양한 처리 장치들이 통신 매체(301)에 결합될 수도 있다. 일 실시예에서, 처리 장치는 도 8에 도시되어 하기 설명되는 범용 컴퓨터(100)가 될 수도 있다. 당업자라면 도 8 및 하기의 설명이, 다른 소프트웨어 및 하드웨어 구성들을 갖는 다수의 다른 타입의 처리 장치들이 본 발명의 실시예에 따라 이용될 수 있는, 특정한 한 타입의 처리 장치를 설명하고 있다는 것을 알 수 있을 것이다. 변형 실시예에서, 처리 장치는 프린터, 포켓용 컴퓨터, 휴대용 컴퓨터, 스캐너, 셀룰러폰, 무선 호출기 등이 될 수도 있다.
도 3c는 서버들(302 및 303)이 통신 매체(301)에 결합되는 본 발명의 실시예를 도시한다. 서버(303)는 또한 통신 매체(305)에 결합되는데, 상기 통신 매체(305)는 통신 매체(301)에 관련하여 상기 설명된 것과 유사한 실시예들을 가질 수도 있다. 클라이언트(304) 또한 통신 매체(305)에 결합된다. 변형 실시예에서, 클라이언트(304)는 도 3c에서 점선 및 박스로 도시한 바와 같이 통신 매체(301)에 결합될 수도 있다. 변형 실시예에서, 서버(302)는 (1) 클라이언트 및 서버, 또는 (2) 클라이언트라는 것을 유념하자. 유사하게, 도 3은 세 개의 처리 장치들이 제시되는 실시예를 도시하는데, 여기서 본 발명의 다른 실시예들은 다수의 다른 처리 장치들 또는 타원으로 도시된 통신 매체들을 포함한다.
서버(302)는 네트워크 소프트웨어(302a) 및 네트워크 소프트웨어(303a)를 각각 이용함으로써, 정보를 통신 매체(301)를 통하여 서버(303)로 전송한다. 일 실시예에서, 네트워크 소프트웨어들(302a, 303a 및 304a)은 통신 매체 소프트웨어 드라이버(351), 전송 제어 프로토콜 소프트웨어(353), 및 인터넷 프로토콜 소프트웨어(352)("TCP/IP")를 포함한다. 클라이언트(304)는 또한 통신 매체(305)를 통하여 서버(303)로 정보를 전송하기 위한 네트워크 소프트웨어(304a)를 포함한다. 서버(303) 내의 네트워크 소프트웨어(303a)는 또한 통신 매체(305)를 통하여 클라이언트(304)로 정보를 전송하는 데에 이용된다.
본 발명의 실시예에 따르면, 클러스터형 엔터프라이즈 JavaTM구조(300) 내의각 처리 장치는 멀티 티어 및 피어 투 피어 기능을 지원하는 메세지-통과 커널(355)을 포함한다. 커널은 처리 장치 상에서 다른 소프트웨어 프로그램들에 기본적인 서비스들을 제공하는 데에 이용되는 소프트웨어 프로그램이다.
특히, 서버(302), 서버(303), 및 클라이언트(304)는 각각 커널들(302b, 303b, 및 304b)을 갖는다. 특히, 상호작용하는 두 개의 JVMs에 있어서, 이들이 클라이언트들이건 서버들이건 상관없이, 각 JVM은 나머지를 나타내는 RJVM을 구성한다. 메세지들은 한 측의 상위층으로부터, 해당하는 RJVM, 통신 매체, 피어 RJVM을 통하여 다른 측의 상위층으로 전달된다. 다양한 실시예들에서, 메세지들은 다양한 다른 프로토콜들을 이용하여 전송될 수 있는데, 상기 프로토콜들은 전송 제어 프로토콜/인터넷 프로토콜("TCP/IP"), 안전 소켓층("SSL"), 하이퍼텍스트 전송 프로토콜("HTTP") 터널링 및 인터넷 인터ORB 프로토콜("IIOP") 터널링, 및 이들의 결합을 포함하지만, 이에 한정되지는 않는다. RJVMAs 및 소켓 매니저들은 이러한 프로토코들에 기초를 두는 소켓들을 생성 및 유지한 다음, 이들을 상위층들 내의 모든 오브젝트들 간에 공유시킨다. 소켓은 분산 처리 시스템 내의 처리 장치들 간의 끝단을 나타내는 논리 위치이다. 커널은 실행 쓰레드들의 풀을 유지하고, 쓰레드 매니저 소프트웨어 요소(364)는 소켓 판독 및 요구 실행 사이에서 쓰레드들을 다중화한다. 쓰레드는 프로그램 코드 세그먼트들 또는 기능들의 실행 순서이다.
예를 들어, 서버(302)는 JVM1 및 JavaTM애플리케이션(302c)을 포함한다. 서버(302)는 또한 서버(303)의 JVM2를 나타내는 RJVM2를 포함한다. 메세지가서버(302)로부터 서버(303)로 전송된다면, 메세지는 서버(302) 내의 RJVM2를 통하여 서버(303) 내의 RJVM1으로 전송된다.
C.메세지 전송
클러스터형 엔터프라이즈 JavaTM네트워크(300)는 중간 서버를 통하여 메세지를 전송할 수 있다. 이러한 기능은 클라이언트가 프론트-엔드 게이트웨이를 통하여 백-엔드 서버로부터 서비스를 요구하는 경우에 중요하다. 예를 들어, 서버(302)(클라이언트(302))로부터의 메세지, 특히 JVM1은 서버(303)를 통하여 클라이언트(304)(백-엔드 서버(304)) 또는 JVM3 또는 JVM2로 전송될 수도 있다. 이러한 기능은 세션 집중을 제어하는 데에 있어서, 또는 얼마나 많은 연결들이 서버와 다양한 클라이언트들 사이에 설정되었는지 제어하는 데에 중요하다.
또한, 메세지 전송은 소켓이 두 개의 JVMs 사이에서 생성될 수 없는 상황에서 이용될 수도 있다. 예를 들어, 메세지 송신기는, 소켓이 초기 서버에 대하여 생성되지 못하는 애플릿 안전 모델하에서 작동된다. 애플릿 안전 모델에 대한 상세한 설명은 http://javasoft.com에 제공되며, 이는 본원의 참조로서 인용된다. 다른 예들은 메세지의 수신기가 방화벽 뒤에 있을 때를 포함한다. 또한, 하기에 설명되는 바와 같이, 메세지 전송은, 송신기가 클라이언트이고 수신기 또한 클라언트이며, 이에 따라 유입되는 소켓들을 받아들일 수 없는 경우에 적용가능하다.
예를 들어, 메세지가 서버(302)로부터 클라이언트(304)로 전송되는 경우, 메세지는 서버(303)를 통하여 루트되어야 할 것이다. 특히, 302f로 도시된 바와 같이, 서버(302) 내에서 (클라이언트(304)를 나타내는 RJVM3와 RJVM2의 사이에서 메세지 핸드오프가 일어난다. 메세지는 서버(302) 내의 RJVM2와 서버(302) 내의 RJVM1 사이의 소켓들(302e)을 이용하여 전송될 것이다. 이후, 메세지는 점선(303f)으로 도시한 바와 같이, 서버(303) 내에서 RJVM1에서 RJVM3로 핸드오프된다. 이후, 메세지는 서버(303) 내의 RJVM3와 클라이언트(304) 내의 RJVM2의 소켓들 간에 전달될 것이다. 이후, 메세지는 점선(304f)로 도시한 바와 같이 클라이언트(304) 내의 RJVM2로부터 클라이언트(304) 내의 RJVM1으로 전달된다.
D.재루팅
클라이언트/서버 내의 RJVM은 언제라도 다른 RJVMs로 통신 경로들 또는 통신 매체들을 스위치시킬 수 있다. 예를 들어, 클라이언트(304)가 서버(302)로 직접 소켓을 형성한다면, 서버(302)는 서버(303)를 통하여 메세지를 전송하는 대신에 소켓을 이용하여 시작할 수 있다. 이러한 실시예는 클라이언트(304)를 나타내는 점선 및 박스에 의해 도시된다. 일 실시예에서, RJVMs에 의한 메세지 전송을 이용하게 되면 네트워크 재구성후, 확실하고 순서적인 메세지 전달을 보장한다. 예를 들어, 클라이언트(304)는 도 3에 도시된 통신 매체(305) 대신 통신 매체(301)로 재구성되었다. 변형 실시예에서, 메세지는 순서대로 전송되지 않을 수도 있다.
RJVM은 루팅을 통해 수행되는 몇 개의 엔드-투-엔드 연산들을 수행한다. 먼저, RJVM은 각각의 클라이언트/서버가 갑자기 죽게 되는 때를 검출한다. 일 실시예에서, 도 3b에 도시한 바와 같이 피어곤 선택 소프트웨어 요소(362)가 이러한 기능을 책임진다. 일 실시예에서, RJVM은 소정의 시간 주기 동안 어떠한 다른 메세지도전송되지 않을 때에 다른 클라이언트들/서버들로 하트비트 메세지를 전송한다. 클라이언트/서버가 소정의 계산된 시간 동안 하트비트 메세지를 수신하지 못한다면, 하트비트를 전송한 고장난 클라이언트/서버가 검출된다. 일 실시예에서, 고장난 클라이언트/서버는 연결 시간 종료에 의해 검출되거나, 또는 소정의 시간 동안 고장난 클라이언트/서버에 의해 어떠한 메세지도 전송되지 않을 경우에 검출된다. 다른 실시예에서, 고장된 소켓은 고장된 서버/클라이언트를 나타낸다.
두 번째로, 메세지가 연속적으로 전송되는 동안, RJVMs, 특히 메세지 압축 소프트웨어(360)는 메세지 크기를 줄이기 위해 공통으로 전송된 데이터 값들을 압축한다. 이를 달성하기 위하여, 각각의 JVM/RJVM 쌍은 매칭하는 압축 테이블들을 유지한다. 예를 들어, JVM1은 압축 테이블을 포함하고 RJVM1은 매칭하는 압축 테이블을 포함한다. 중간 서버들 간에 메세지를 전송하는 동안, 메세지의 몸체는 루트 내의 중간 서버상에서 연속화되지 않는다.
E.멀티 티어/피어 투 피어 기능
클러스터형 엔터프라이즈 JavaTM구조(300)는 멀티 티어 및 피어 투 피어 프로그래밍을 허용한다.
클러스터형 엔터프라이즈 JavaTM구조(300)는 멀티 티어 분산 처리 구조에 모순이 없는 클라이언트/서버 프로그래밍을 위한 명백한 신택스를 지원한다. 예로서, 하기의 클라이언트측 코드 프래그먼트는 서버의 로그 파일에 정보 메세지를 기록한다.
제 1 라인은 t3 프로토콜을 이용하여 acme 서버를 갖는 세션을 설정한다. RJVMs가 이미 존재하지 않는 다면, 각 JVM은 다른 것에 대한 RJVM을 구성하고 이를 기초로 하는 TCP 소켓이 설정된다. 이 세션의 클라이언트측 표현 - T3 클라이언트 오브젝트- 및 서버측 표현은 이러한 RJVMs를 통하여 통신한다. 서버측은 데이터베이스 접속, 원격 파일 접속, 워크스페이스들, 이벤트들 및 로깅(logging)을 포함하는 다양한 서비스들을 지원한다. 제 2 라인은 LogService 오브젝트를 얻으며, 제 3 라인은 메세지를 기록한다.
클러스터형 엔터프라이즈 JavaTM컴퓨터 구조(300)는 또한 피어 투 피어 분산 처리 구조에 모순이 없는 서버-중성 신택스를 지원한다. 예로서, 하기의 코드 프래그먼트는 서버 상에서의 JNDI-순응 네이밍 서비스들로부터 RMI 오브젝트들에 대한 스터브를 얻으며 그 방법들 중 하나를 실행시킨다.
일 실시예에서, JNDI 네이밍 콘텍스트들(contexts)은 원격 접속을 실행하기 위한 RMI 오브젝트들로서 패키지된다. 따라서, 상기 코드는 RMI 부트스트랩핑의 종류를 나타낸다. 첫 번째 네 개의 라인들은 acme 서버 상에서 초기 콘텍스트에 대한 RMI 스터브를 얻는다. RJVMs가 이미 존재하지 않는 다면, 각 측은 다른 것에 대한 RJVM을 구성하고 t3 프로토콜에 대한 기초를 이루는 TCP 소켓이 설정된다. 호출자측 오브젝트, RMI 스터브와 호출된측 오브젝트, RMI impl는 RJVMs를 통하여 통신한다. 다섯 번째 라인은, 예를 들어 네임 acme.eng.example에서 다른 RMI 오브젝트를 살펴보며, 여섯 번째 라인은 예시적인 방법들 중 하나를 실행한다. 일 실시예에서, 예시적인 impl은 네이밍 서비스와 동일한 처리 장치 상에 있지 않다. 다른 실시예에서, 예시적인 impl은 클라이언트 상에 있다. 예시적인 오브젝트의 호출은 이들이 이미 존재하지 않는 경우 적절한 RJVMs의 생성을 이끈다.
Ⅱ. 복사-인식 또는 스마트 스터브들/EJB 오브젝트들
도 3c에서, 처리 장치는 RMI 및/또는 EJB 오브젝트들을 복사함으로써 구조(300) 내에서 다른 처리 장치들에 서비스를 제공할 수 있다. 따라서, 구조(300)는 쉽게 확장가능하며 폴트가 허용된다. 복사된 RMI 및/또는 EJB 오브젝트들을 기존의 처리 장치 또는 새롭게 부가된 처리 장치에 부가함으로써, 부가적인 서비스가 쉽게 부가될 수도 있다. 또한, RMI 및/또는 EJB 오브젝트들이 구조(300)를 통하여 복사될 수 있기 때문에, 단일 처리 장치, 다중 처리 장치들, 및/또는 통신 매체가 고장날 수도 있긴 하지만, 구조(300)를 작동불가능하게 하거나 기능을 상당히 저하시키지는 않는다.
도 5a는 구조(500) 내의 복사-감지("RA") 또는 스마트 스터브(580)를 도시한다. 구조(500)는 통신 매체(501)에 결합된 클라이언트(504)를 포함한다.서버들(502 및 503)은 각각 통신 매체(501)에 결합된다. 불변 기억 장치(509)는 각각 통신 매체(560 및 561)에 의해 서버들(502 및 503)에 결합된다. 다양한 실시예들에서, 통신 매체(501, 560 및 561)는 상기 설명한 바와 같이 유선 및/또는 무선 통신 매체들이 될 수도 있다. 유사하게, 일 실시예에서, 클라이언트(504), 서버(502), 및 서버(503)는 상기 설명한 바와 같이 클라이언트들 및 서버들이 될 수도 있다. 당업자라면, 변형 실시예들에서, 다수의 다른 서버들 및 클라이언트들이 타원형으로 나타낸 바와 같이 구조(500) 내에 포함될 수도 있다는 것을 알 수 있을 것이다. 또한, 상기 설명한 바와 같이, 변형 실시예들에서, 클라이언트(504), 서버(502) 및 서버(503)의 하드웨어 및 소프트웨어 구성은 도 8을 참조하여 하기 설명된다.
RA RMI 스터브(580)는, 모든 서비스 제공자들에 대해 알아낼 수 있으며 로드 밸런싱 방법(507) 및/또는 페일오버 방법(508)을 기초로 이들 사이를 스위치시킬 수 있는 스마트 스터브이다. 일 실시예에서, RA 스터브(580)는 적절한 로드 밸런싱 방법(507) 및/또는 페일오버 방법(507)을 선택하는 복사 처리기(506)를 포함한다. 변형 실시예에서, 단일 로드 밸런싱 방법 및/또는 단일 페일오버 방법이 실행된다. 변형 실시예들에서, 복사 처리기(506)는 다수의 로드 밸런싱 방법들 및/또는 다수의 페일오버 방법들 및 이들의 결합을 포함할 수도 있다. 일 실시예에서, 복사 처리기(506)는 다음과 같은 인터페이스를 실행한다.
방법을 실행하기 바로 전에, RA 스터브(580)는 로드 밸런싱 방법(507)을 호출하는데, 이는 현재의 서버를 선택하고 대체물을 반환한다. 예를 들어, 클라이언트(504)는 데이터베이스(509a) 또는 개인용 기억 장치(509)에 대하여 데이터를 검색하는 데에 서버(502)를 이용할 수도 있다. 로드 밸런싱 방법(507)은 서버(502)가 서비스 요구들에 의해 오버로드되기 때문에 서버(503)로 스위치될 수도 있다. 처리기(506)는 아마도 서버(502)에 대한 정보를 이용하여 호출자에 대한 서버 대체물을 완전하게 선택하거나, 서버(502)에 특정한 타입의 데이터 검색을 요청할 수도 있다. 예를 들어, 처리기(506)는 방정식의 계산을 위하여 특정한 서버를 선택할 수도 있는데, 이는 서버가 계산 능력이 강화되었기 때문이다. 일 실시에에서, 복사 처리기(506)는 모든 실행에 대하여 제공자들을 실제적으로 스위치시킬 필요는 없는데, 이는 복사 처리기(506)가 생성되는 연결들의 수를 최소화하고자 하기 때문이다.
도 6a는 도 5a 및 b에 도시된 로드 밸런싱 소프트웨어(507)를 나타내는 제어 흐름도이다. 도 6a는 로드 밸런싱 방법(507)으로 소프트웨어에 의해 수행되는 기능들 또는 단계들의 논리 순서를 나타낸 제어 흐름도이다. 변형 실시예들에서는, 부가적인 기능들 또는 단계들이 수행된다. 또한, 변형 실시예에서, 하드웨어는 특정한 기능 또는 모든 기능들을 수행할 수도 있다.
로드 밸런싱 소프트웨어(507)는 원(600)으로 나타낸 바와 같이 시작된다. 이후, 논리 블록(601)에서 호출 쓰레드가 특정한 서버에 대하여 "선호도"를 설정했는 지에 대한 결정이 이루어진다. 클라이언트는 그의 현재 트랜잭션을 조정하는 서버에 대한 선호도를 가지며, 서버는 그 자체에 대한 선호도를 갖는다. 만일 선호도가 설정되었다면, 방법은 논리 블록(602)으로 진행되고, 그렇지 않다면 논리 블록(604)으로 진행된다. 논리 블록(602)에서는 선호도 서버가 요구된 서비스들을 제공하는 지에 대한 결정이 이루어진다. 그렇다면, 논리 블록(603)으로 진행된다. 그렇지 않으면, 논리 블록(604)으로 진행된다. 선호도 서버 상에서의 서비스 제공자는 논리 블록(603)에서 클라이언트로 복귀된다. 논리 블록(604)에서는, 네이밍 서비스가 컨택되며, 현재 서비스 제공자들에 대한 갱신된 리스트가 얻어진다. 논리 블록(605)에서는 서비스 제공자를 얻기 위해 getNextProvider 방법이 호출된다. getNextProvider 방법의 다양한 실시예들이 도 6b 내지 g를 참조하여 하기 설명된다. 논리 블록(606)에서 서비스가 제공된다. 이후, 논리 블록(606)에서 서비스가 제공되지 않는 다면 페일오버 방법(508)이 호출되며, 논리 블록(608)으로 나타낸 바와 같이 로드 밸런싱 방법(507)이 종료된다. 페일오버 방법(507)의 실시예는 도 7을 참조하여 하기 설명된다.
도 6a 내지 g는 도 6a의 논리 블록(605)에서 이용되는 getNextProvider 방법의 다양한 실시예들을 도시한다. 도 6b에 도시한 바와 같이, getNextProvider 방법은 순환 순서 방식으로 서비스 제공자를 선택한다. getNextProvider 방법(620)이원(621)으로 나타낸 바와 같이 시작된다. 논리 블록(622)에서 현재 서비스 제공자들의 리스트가 얻어진다. 논리 블록(623)에서는 포인터가 증가한다. 다음 서비스 제공자가 논리 블록(624)에서 포인터를 기초로 선택되며, 새로운 서비스 제공자가 논리 블록(625)에서 복귀되며, getNextProvider 방법(620)이 원(626)으로 나타낸 바와 같이 종료된다.
도 6c는 서비스 제공자를 임의로 선택함으로써 서비스 제공자를 얻는 getNextProvider 방법의 변형 실시예를 도시한다. getNextProvider 방법(630)이 원(631)으로 나타낸 바와 시작된다. 현재 서비스 제공자들의 리스트가 논리 블록(632)에서 얻어진다. 다음 서비스 제공자가 논리 블록(633)으로 나타낸 바와 같이 임의로 선택되며, 새로운 서비스 제공자가 논리 블록(634)에서 복귀된다. 이후, 원(635)으로 나타낸 바와 같이 getNextProvider 방법이 종료된다.
getNextProvider 방법의 또 다른 실시예가 도 6d에 도시되는데, 여기서는 서비스 제공자들의 로드를 기초로 서비스 제공자를 얻는다. getNextProvider 방법(640)이 원(641)에 의해 나타낸 바와 같이 시작된다. 현재 서비스 제공자들의 리스트는 논리 블록(642)에서 얻어진다. 각 서비스 제공자의 로드는 논리 블록(643)에서 얻어진다. 논리 블록(644)에서는 최소의 로드를 갖는 서비스 제공자가 선택된다. 이후, 새로운 서비스 제공자는 논리 블록(645)에서 복귀되며, getNextProvider 방법(640)은 원(646)에 의해 나타낸 바와 같이 종료된다.
도 6e는 getNextProvider 방법의 변형 실시예를 도시하는데, 여기서는 서비스 제공자로부터 얻어진 데이터의 타입을 기초로 서비스 제공자를 얻는다.getNextProvider 방법(650)이 원(651)으로 나타낸 바와 같이 시작된다. 현재 서비스 제공자들의 리스트가 논리 블록(652)에서 얻어진다. 서비스 제공자들로부터 요구된 데이터의 타입은 논리 블록(653)에서 결정된다. 이후, 논리 블록(654)에서 데이터의 타입을 기초로 서비스 제공자가 선택된다. 서비스 제공자는 논리 블록(655)에서 복귀되며, getNextProvider 방법(650)은 원(656)으로 나타낸 바와 같이 종료된다.
도 6f는 getNextProvider 방법의 또 다른 실시예를 도시하는데, 여기서는 서비스 제공자들의 물리적인 위치들을 기초로 서비스 제공자를 선택한다. getNextProvider 방법(660)은 원(661)에 의해 나타낸 바와 같이 시작된다. 서비스제공자들의 리스트는 논리 블록(662)에 의해 나타낸 바와 같이 얻어진다. 각 서비스 제공자에 대한 물리적인 거리는 논리 블록(663)에서 얻어지며, 요구하는 클라이언트에 가장 가까운 물리적인 거리를 갖는 서비스 제공자가 논리 블록(664)에서 선택된다. 이후, 새로운 서비스 제공자가 논리 블록(665)에서 복귀되며, getNextProvider 방법(660)은 원(666)에 의해 나타낸 바와 같이 종료된다.
도 6g는 getNextProvider 방법의 또 다른 실시예를 도시하는데, 여기서는 서비스 제공자가 이전의 요구들에 응답하는 데에 걸린 시간량을 기초로 서비스 제공자를 선택한다. getNextProvider 방법(670)의 제어가 원(671)에 의해 나타낸 바와 같이 시작된다. 현재 서비스 제공자들의 리스트가 논리 블록(672)에서 얻어진다. 각 서비스 제공자가 특정한 메세지에 응답하는 시간이 논리 블록(673)에서 결정된다. 가장 짧은 시간에 응답하는 서비스 제공자가 논리 블록(674)에서 선택된다. 이후, 새로운 서비스 제공자는 논리 블록(675)에서 복귀되며, getNextProvider 방법(670)으로부터의 제어는 원(676)에 의해 나타낸 바와 같이 종료된다.
서비스 방법의 호출이 재시도가 정당화되는 방식으로 실패한다면, RA 스터브(580)는 페일오버 방법(508)을 호출하는데, 이 방법은 고장난 서버 및 그 고장이 무엇인지를 나타내는 예외를 이용하여 재시도를 위한 새로운 서버를 복귀시킨다. 만일 새로운 서버가 이용불가능하다면, RA 스터브(580)는 예외로 규정한다.
도 7은 도 5a 및 b에 도시된 페일오버 소프트웨어(508)를 나타낸 제어 흐름도이다. 페일오버 방법(508)이 원(700)으로 나타낸 바와 같이 시작된다. 논리 블록(701)에서 고장난 제공자는 현재 서비스 제공자들의 리스트로부터 삭제된다. 이후, 서비스 제공자를 얻기 위해 getNextProvider 방법이 호출된다. 이후, 새로운 서비스 제공자가 논리 블록(703)에서 복귀되며, 페일오버 방법(508)은 원(704)으로 나타낸 바와 같이 종료된다.
도 6 및 7이 복사 처리기(506)의 실시예들을 도시하기는 하지만, 변형 실시예들은 하기의 기능들 또는 순환 순서 방식으로 실행되는 그의 결합들을 포함한다.
첫 번째, 서버들 또는 서비스 제공자들의 리스트가 유지된다. 리스트가 사용될 필요가 있고 리스트가 최근 갱신되지 않았을 때 마다, 처리기(506)는 하기에 설명되는 네이밍 서비스를 컨택하고, 제공자들의 최근 리스트를 얻는다.
두 번째, 처리기(506)가 리스트로부터 제공자를 선택하려 하고, 마지막 하트비트 기간 동안 어떠한 메세지들도 수신되지 않은 호스팅 서버로의 기존의 RJVM-레벨 연결이 있다면, 처리기(506)는 그 제공자를 건너뛴다. 일 실시예에서, 서버는몇 개의 하트비트 기간 이후 피어의 죽음이 결정되기 때문에 이후에 복구될 수도 있다. 따라서, 서버의 로드에 기초를 두는 로드 밸런싱이 얻어진다.
세 번째, 제공자가 잘못될 때, 처리기(506)는 리스트로부터 그 제공자를 삭제한다. 이는 비작동 서비스 제공자들을 이용하려는 반복된 시도들에 의해 야기되는 지연들을 방지한다.
네 번째, 서비스 제공자를 호스트하는 서버로부터 서비스가 호출된다면, 그 제공자가 이용된다. 이는 서비스들의 연쇄적인 호출에 대하여 제공자들의 동시 배치를 용이하게 한다.
다섯 번째, 서비스가 트랜잭션의 범위 내에서 호출되고 트랜잭션 조정기의 역할을 하는 서버가 서비스 제공자를 호스트한다면, 상기 제공자가 이용된다. 이는 트랜잭션 내에서의 제공자들의 동시 배치를 용이하게 한다.
상기 방법이 호출되는 동안 발생할 수 있는 고장들은 (1) 애플리케이션-관련, 또는 (2) 하부구조-관련으로 구분될 수도 있다. RA 스터브(580)는 애플리케이션-관련 고장의 경우에는 작동을 재시도하지 않는데, 이는 문제들이 개선되리라는 어떠한 기대도 할 수 없기 때문이다. 하부구조-관련 고장의 경우, RA 스터브(580)는 작동을 안전하게 재시도할 수도 있으며 하지 않을 수도 있다. 가령 데이터베이스 내의 필드 값의 증가와 같은 어떠한 초기 비-멱등(idempotent) 연산이 수행될 수도 있다. 일 실시예에서, RA 스터브(580)는 하부구조 고장후 (1) 사용자가 서비스 방법들이 멱등이라고 표명하거나, 또는 (2) 시스템이 요구의 처리가 결코 시작될 수 없다고 판단할 수 있을 때에만 재시도를 할 것이다. 후자의 예로서, RA 스터브(580)는, 로드 밸런싱 방법의 일부로서, 스터브(580)가 호스트가 고장난 서비스 제공자로 스위치시키는 경우 재시도할 것이다. 다른 예로서, RA 스터브(580)는 트랜잭션 연산에 대한 네거티브 애크(negative acknowledgement)을 받을 경우 재시도할 것이다.
RMI 컴파일러는 컴파일러에게 오브젝트에 대한 RA 스터브를 발생시킬 것을 지시하는 특별한 플래그를 승인한다. 서비스 방법들이 멱등이라는 것을 지정하는 데에 부가적인 플래그가 이용될 수 있다. 일 실시예에서, RA 스터브(580)는 도 5a를 참조하여 상기 설명된 복사 처리기를 이용할 것이다. 부가적인 플래그가 다른 처리기를 지정하는 데에 이용될 수도 있다. 또한, 서비스가 전개되는, 즉 하기에 설명되는 바와 같이 클러스터형 네이밍 서비스로 바운드되는 포인트에서, 처리기는 무효화된다.
도 5b는 본 발명의 다른 실시예를 도시한 것으로서, 도 5a에 도시한 스터브 대신에 EJB 오브젝트(551)가 이용된다.
Ⅲ. 복사된 JNDI-컴플라이언트 네이밍 서비스
도 4에 도시한 바와 같이, 구조(400) 내에서 서비스 제공자들로의 접속은, 구조(400)를 가로질러 복사되어 어떠한 단일 고장 포인트도 없는 JNDI-컴플라이언트 네이밍 서비스를 통하여 얻어진다. 따라서, JNDI-컴플라이언트 네이밍 서비스를제공하는 처리 장치가 고장난다면, 복사된 네이밍 서비스를 갖는 다른 처리 장치가 이용될 수 있다. 서비스의 실례를 제공하기 위하여, 서버는 복사된 네이밍 트리 내의 특정한 노드에서 서비스 제공자를 통지한다. 일 실시예에서, 각 서버는 네이밍트리의 서버 카피 내의 노드에 저장된 호환성있는 서비스 풀에 제공에 대한 RA 스터브를 부가한다. 새로운 제공자의 타입이 기존의 풀 내의 제공자들의 타입과 호환이 불가능하다면, 새로운 제공자는 계류되고, 충돌처리기(ConflictHandler) 인터페이스를 통하여 회수(callback)가 이루어진다. 어떠한 타입의 제공자가 철회된 후, 궁극적으로는 다른 것이 어느 곳에 설치될 것이다. 클라이언트가 서비스를 살펴볼 때, 클라이언트는 클라이언트의 서비스 제공자들의 리스트를 리프레시하기 위하여 서비스 풀을 컨택하는 RA 스터브를 얻는다.
도 4는 구조(400) 내에서의 복사된 네이밍 서비스를 도시한다. 일 실시예에서, 서버들(302 및 303)은 각각 예시적인 서비스 제공자(P1 및 P2)를 제공하고, 각각 네이밍 서비스 트리(402 및 403)의 복사물을 갖는다. 네이밍 서비스 트리(402 및 403) 내의 노드 acme.eng.example은 각각, 예시적인 서비스 제공자(P1 및 P2)에 대한 레퍼런스를 포함하는 서비스 풀(402a 및 403a)을 갖는다. 클라이언트(304)는 acme.eng.example 노드에서 네이밍 서비스 룩업을 수행함으로써 RA 스터브(304e)를 얻는다. 스터브(304e)는 이용가능한 서비스 제공자들에 대한 현재 레퍼런스 리스트를 얻기 위하여 서비스 풀의 실례를 컨택한다. 스터브(304e)는 로드-밸런싱 및 페일오버에 필요한 서비스 풀의 실례들 사이를 스위치시킬 수도 있다.
네이밍 서비스의 초기 콘텍스트에 대한 스터브들은 네이밍 서비스 제공자들 간의 로드를 초기에 밸런싱하고 고장의 경우 스위치시키는 복사-감지 또는 스마트 스터브들이다. 네이밍 서비스 트리의 각 경우는 현재 네이밍 서비스 제공자들의 완전한 리스트를 포함한다. 스터브는 현재 이용되고 있는 경우로부터 플래시 리스트를 얻는다. 이러한 과정을 부트스트랩시키기 위하여, 시스템은 도메인 네이밍 서비스("DNS")를 이용하여 (잠재적으로 불완전한) 초기 경우들의 리스트를 알아내고, 이들중 하나로부터 완전한 리스트를 얻는다. 예로서, 네이밍 서비스의 초기 콘텍스트에 대한 스터브는 하기와 같이 얻어질 수 있다.
구조 내의 서버들의 어떠한 부분이 네임 acmeCluster 하에서 DNS로 바운드된다. 또한, 애플리케이션은 여전히 개별적인 서버의 어드레스를 지정할 수 있지만, 이렇게 되면 애플리케이션은 애프리케이션이 스터브를 얻기 위해 먼저 시도할 때 단일 고장 포인트를 갖게 될 것이다.
확실한 멀티캐스트 프로토콜이 바람직하다. 일 실시예에서, 제공자 스터브들이 분배되며 복사된 네이밍 트리들이 IP 멀티캐스트 또는 포인트 투 포인트 프로토콜에 의해 생성된다. IP 멀티캐스트 실시예에서는, 하기와 같은 세 가지 종류의 메세지들이 있다: 하트비트(Heartbeats), 어나운스먼트(Announcements), 및 스테이트덤프(StateDumps). 하트비트들은 서버들 간에 정보를 나르는 데에 이용되며, 그들의 부재에 의해 고장난 서버들을 확인한다. 어나운스먼트는 한 세트의 제공자들 및 서비스들의 철회를 포함한다. 각 서버로부터의 어나운스먼트들은 연속적으로 번호가 매겨진다. 각 수신기는 잃어버린 어나운스먼트들을 확인하기 위하여 어나운스먼트를 처리한다. 각 서버는 그의 하트비트들 내에, 전송된 마지막 어나운스먼트의 일련 번호를 포함한다. 잃어버린 어나운스먼트에 대한 네거티브 애크("NAKs")가 이후 나오는 하트비트들 내에 포함된다. NAKs를 처리하기 위하여, 각 서버는 서버가 전송한 마지막 몇 개의 어나운스먼트들의 리스트를 유지한다. 만일 검출된 어나운스먼트에 대한 NAK가 도달한다면, 서버는 StateDump를 전송하는데, 이는 서버의 서비스들의 완전한 리스트 및 그의 다음 어나운스먼트의 일련 번호를 포함한다. 새로운 서버가 기존의 구조에 포함될 때, 새로운 서버는 각각의 다른 서버로부터의 제 1 메세지에 대하여 NAKs을 하며, 이는 StateDump가 전송되게 한다. 만일 서버가 소정의 시간후 다른 서버로부터 하트비트를 수신하지 못한다면, 서버는 하트비트를 발생시키지 않는 서버에 의해 제공된 모든 서비스들을 철회한다.
Ⅳ. 프로그래밍 모델
도 3 내지 5에 도시된 구조에서 이용되는 애플리케이션은 애플리케이션 상태가 처리되는 상태에 따라서, 다음과 같은 세 개의 기본적인 프로그래밍 모델들: (1) 스테이트리스 또는 직접, (2) 스테이트리스 팩토리 또는 간접, 또는 (3) 스테이트풀 또는 목표가 있는 프로그래밍 모델들 중 하나를 이용한다. 스테이트리스 모델에서, 네이밍-서비스 룩업에 의해 복귀된 스마트 스터브는 서비스 제공자들을 바로 참조한다.
본 예에서는, 예에 대한 두 개의 호출이 다른 서비스 제공자들에 의해 처리될 수도 있는데, 이는 스마트 스터브가 로드 밸런싱을 위하여 이들 사이를 스위치할 수 있기 때문이다. 따라서, 예시적인 서비스 오브젝트는 애플리케이션 대신 정보를 내부적으로 저장할 수 없다. 전형적으로, 스테이트리스 모델은 제공자가 스테이트리스인 경우에만 이용된다. 예로서, 순수한 스테이트리스 제공자는 그의 독립변수들(arguments)의 어떠한 수학적인 함수를 계산하고 그 결과를 복귀시킬 것이다. 스테이트리스 제공자들은 그들의 이익을 위하여, 가령 금전적인 목적으로 정보를 저장할 수도 있다. 좀 더 중요하게는, 스테이트리스 제공자들은 기초를 이루는 불변 기억 장치들을 접속하고, 필요할 때 애플리케이션 상태를 메모리에 로드시킬 수도 있다. 예를 들어, 실예가 독립변수들로서 통과된 모든 값들의 합을 복귀시키기 위하여, 실예는 데이터베이스로부터 이전 합을 읽고, 그의 현재 독립변수에 부가하고, 새로운 값을 쓴 다음, 그것을 복귀시킨다. 이러한 스테이트리스 서비스 모델은 확장성을 증진시킨다.
스테이트리스 팩토리 프로그래밍 모델에서, 룩업에 의해 복귀된 스마트 스터브는, 그들 자신이 스마트 스터브들은 아닌 바람직한 서비스 제공자들을 생성하는 팩토리이다.
본 예에서, 실예에 대한 두 개의 호출들이 동일한 서비스 제공자에 의해 처리되는 것으로 보장된다. 따라서, 서비스 제공자는 애플리케이션 대신에 정보를 안전하게 저장한다. 스테이트리스 팩토리 모델은 호출자가 제공자와 "대화"할 필요가 있을 때에 이용되어야 한다. 예를 들어, 호출자 및 제공자는 백-앤-포스 협상에 참여한다. 복사-감지 스터브들은 스테이트리스 및 스테이트리스 팩토리 모델들 내에서 일반적으로 동일하며, 단지 차이점은 스터브들이 서비스 제공자들에 관련되느냐, 아니면 서비스 제공자 팩토리들에 관련되는냐 하는 것이다.
제공자 팩토리 스터브는 제공자를 생성하고자 하는 그의 노력시 뜻대로 페일오버될 수도 있는데, 이는 이러한 연산이 멱등이기 때문이다. 간접 서비스의 유용성을 더 증가시키기 위하여, 애플리케이션 코드는 서비스 생성 및 호출에 대한 명백한 재시도 루트를 포함해야만 한다.
이는, 예를 들어 팩토리에 의해 성공적으로 생성되었던 제공자의 고장을 처리할 것이다. 이러한 경우, 애플리케이션 코드는 비-멱등 연산들이 완료되었는 지를 결정한다. 유용성을 더 증가시키기 위하여, 애플리케이션 코드는 상기의 연산들 및 재시도를 원상태로 돌리기 위한 시도를 할 것이다.
스테이트풀 프로그래밍 모델에서, 서비스 제공자는 어떠한 유일한 시스템 전체(system-wide) 키에 의해 확인된 오래 생존하는 스테이트풀 오브젝트이다. 이러한 모델을 이용하여 접속될 수 있는 "엔티티들"의 예로는 원격 파일 시스템들 및 데이터베이스 테이블 내의 로우들이 있다. 각 제공자가 한 클라이언트에 의해 한번 이용되는 나머지 두 개의 모델들과는 달리, 목표 제공자는 많은 클라이언트들에 의해 다수회 접속될 수 있다. 목표 제공자들에 대한 스터브들은 키가 단순히 네이밍-서비스 네임인 직접 룩업에 의해, 또는 키가 연산을 생성하기 위한 독립변수들을 포함하는 팩토리를 통하여 얻어질 수 있다. 어떠한 경우든, 스터브는 로드 밸런싱 또는 페일오버를 하지 않을 것이다. 만일 있다면, 재시도들은 스터브를 명확하게 다시 얻어야 한다.
EJB 내에는 세 가지 종류의 빈들이 있는데, 이들 각각은 세 가지의 프로그래밍 모델들 중 하나로 맵된다. 스테이트리스 세션 빈들이 특정한 호출자 대신 생성되지만, 호출 간의 어떠한 내부 상태도 유지하지 않는다. 스테이트리스 세션 빈들은 스테이트리스 모델로 맵된다. 스테이트풀 세션 빈들은 특정한 호출자 대신에 생성되며, 호출들 간의 내부 상태를 유지한다. 스테이트풀 세션 빈들은 스테이트리스 팩토리 모델로 맵된다. 엔티티 빈들은 시스템 전체 키에 의해 확인되는 단일의 스테이트풀 오브젝트들이다. 엔티티 빈들은 스테이트풀 모델로 맵된다. 세 가지 타입의 모든 빈들이 EJB 홈으로 불려지는 팩토리에 의해 생성된다. 일 실시에에서, EJB 홈들 및 그들이 생성하는 빈들은 RMI를 이용하여 참조된다. 도 3 내지 5에 도시된 구조에서, EJB 홈에 대한 스터브들은 스마트 스터브들이다. 스테이트리스 세션 빈들에 대한 스터브들은 스마트 스터브들인 반면, 스테이트풀 세션 빈들 및 엔티티 빈들에 대한 스터브들은 그렇지 않다. EJB-기반 서비스를 이용하기 위한 복사 처리기는 전개 기술자(deployment descriptor)로 지정될 수 있다.
오브젝트가 호출자 대신에 상태를 유지하는 경우 필요한 간접 RMI-기반 서비스를 생성하기 위하여, 애플리케이션 코드는 팩토리를 명백하게 구성해야 한다. 목표 RMI-기반 서비스는 어떠한 특별한 플래그들없이 RMI 컴파일러를 가동시킨 다음 결과적인 서비스를 복사된 네이밍 트리에 바인딩함으로써 생성될 수 있다. 오브젝트에 대한 스터브는 네이밍 트리의 각 경우로 직접 바운드되며, 어떠한 서비스 풀도 생성되지 않을 것이다. 이는 키가 네이밍-서비스 네임인 목표 서비스를 제공한다. 일 실시예에서, 이는 원격 파일 시스템들을 형성하는 데에 이용된다.
Ⅴ. 하드웨어 및 소프트웨어 요소들
도 8은 도 3 내지 5에 도시된 예시적인 서버 및/또는 클라이언트들의 하드웨어 및 소프트웨어 요소들을 도시한다. 도 8의 시스템은, 가령 연결부(829)와 같은 하나 또는 그 이상의 통신 매체에 의해 LAN(840) 및 본원에서는 인터넷(880)으로 도시된 WAN에 연결된 범용 컴퓨터(800)를 포함한다. LAN(840)을 통하여, 컴퓨터(800)는 파일 서버(841)와같은 다른 국부 컴퓨터들과 통신할 수 있다. 일 실시예에서, 파일 서버(801)는 도 3에 도시된 서버(303)이다. 인터넷(880)을 통하여, 컴퓨터(800)는, 가령 월드 와이드 웹 서버(881)와 같은 국부 및 원격의 다른 컴퓨터들과 통신할 수 있다. 일 실시예에서, 웹 서버(881)는 도 3에 도시된 서버(303)이다. 알 수 있는 바와 같이, 컴퓨터(800)로부터 인터넷(880)으로의 연결은 다양한방법들, 예를 들어 연결부(829)를 통하여 바로, 또는 국부 영역 네트워크(840)를 통하여, 또는 모뎀(미도시)에 의해 이루어질 수 있다.
컴퓨터(800)는 개인용 또는 사무용 컴퓨터, 예를 들어 워크스테이션, 개인용 컴퓨터, 또는 다른 단일-사용자 또는 다중-사용자 컴퓨터 시스템이 될 수 있으며; 예시적인 실시예는 Sun SPARC-20 워크스테이션(캘리포니아 마운틴뷰 소재의 선 마이크로시스템즈 인코포레이티드사)을 이용한다. 설명의 목적으로, 컴퓨터(800)는 하드웨어 요소들(801) 및 소프트웨어 요소들(802)로 편리하게 분할될 수 있지만; 당업자라면 이러한 분할은 개념적인 것이며 다소 마음대로 할 수 있고, 하드웨어와 소프트웨어 간의 라인은 완전하고(hard) 고정된(fast) 것이 아니라는 것을 알 수 있을 것이다. 또한, 호스트 컴퓨터와 그에 부착된 주변장치들 간의 라인 또한 완전하고 고정된 것이 아니며, 특히 어떠한 컴퓨터들의 주변장치들로 간주되는 요소들은 다른 컴퓨터들의 필수 부분들로 간주된다는 것을 알 수 있을 것이다. 따라서, 예를 들어, 사용자 I/O(820)는, 각각 컴퓨터 자체의 주변장치 또는 일부로서 간주될 수 있는 키보드, 마우스, 및 디스플레이 모니터를 포함할 수 있으며, 또한 전형적으로 주변장치로 간주되는 로컬 프린터를 포함할 수 있다. 다른 예로서, 불변 기억장치(808)는 컴퓨터의 주변장치이거나 컴퓨터에 내장될 수 있는 CD-ROM(컴팩 디스크 판독-전용 메모리) 유닛을 포함할 수 있다.
하드웨어 요소들(801)은 프로세서(CPU)(805), 메모리(806), 불변 기억장치(808), 사용자 I/O(820), 및 네트워크 인터페이스(825)를 포함하는데, 이들은 버스(810)에 결합된다. 이러한 요소들은 당업계에 널리 공지되어 있으므로,이에 대해서는 간단히 설명한다.
프로세서(805)는, 예를 들어 마이크로프로세서 또는 멀티프로세싱을 위해 구성된 마이크로프로세서들의 집합체가 될 수 있다.
메모리(8006)는 판독-전용 메모리(ROM), 임의 접근 메모리(RAM), 가상 메모리, 또는 단일 또는 결합의 다른 메모리 구성들을 포함할 수 있다. 불변 기억장치(808)는, 예를 들어 자기 하드 디스크, 플로피 디스크, 또는 단일 또는 결합의 다른 불변 판독-기록 데이터 저장 장치들을 포함할 수 있다. 이는 또한, 가령 CD-ROM 또는 다른 대용량 저장 기술에 의해 제공될 수 있는 매스 또는 기록(archival) 저장 장치를 포함할 수 있다. (파일 서버(841)는 프로세서(805)가 이용할 수 있는 부가적인 저장 용량을 제공한다는 것을 유념하자.)
사용자 I/O(입/출력) 하드웨어(820)는 전형적으로 CRT 또는 평판 디스플레이와 같은 가상 디스플레이 모니터와, 문자 숫자식 키보드, 및 마우스 또는 다른 포인팅 장치를 포함할 수 있으며, 그리고 선택적으로 프린터, 광 스캐너, 또는 사용자 입력 및 출력을 위한 다른 장치들을 더 포함할 수 있다.
네트워크 I/O 하드웨어(825)는 컴퓨터(800)와 바깥 세상 간의 인터페이스를 제공한다. 좀 더 명확히 말해, 네트워크 I/O(825)는 프로세서(805)가 연결부(829)를 경유하여, LAN(840) 및 인터넷(880)을 통하여 다른 프로세서들과 통신하게 한다.
소프트웨어 요소들(802)은 운영 체제(310), 및 이 운영 체제(310)의 제어 하에 있는 태스크들의 세트, 가령 JavaTM애플리케이션 프로그램(860), 및 중요하게는 JVM 소프트웨어(354) 및 커널(355)을 포함한다. 운영 체제(310)는 또한 프로세서(805)가, 가령 불변 기억장치(808), 사용자 I/O(820), 및 네트워크 인터페이스(825)와 같은 다양한 장치들을 제어할 수 있게 한다. 프로세서(805)는 메모리(806) 및 컴퓨터 시스템(800)의 다른 요소들과 함께, 운영 체제(310)의 소프트웨어, 애플리케이션(860), JVM(354) 및 커널(355)을 실행시킨다. 일 실시예에서, 소프트웨어(802)는 도 3c의 서버(302) 내에 도시된 네트워크 소프트웨어(302a), JVM1, RJVM2 및 RJVM3를 포함한다. 일 실시예에서, JavaTM애플리케이션 프로그램(860)은 도 3c에 도시된 JavaTM애플리케이션(302c)이다.
당업자라면 도 8의 시스템이 예시적인 것으로 한정적인 것이 아니며, 도 8에 도시된 것 대신에, 또는 이에 부가하여 광범위한 계산, 통신, 및 정보 장치들이 이용될 수 있다는 것을 알 수 있을 것이다. 예를 들어, 인터넷(88)을 통한 연결은 일반적으로 중간 루터 컴퓨터들(미도시)에 의한 패킷 스위칭을 포함하며, 컴퓨터(800)는, 전형적인 웹 클라이언트 세션 동안, 컴퓨터(800) 및 웹 서버(881)를 포함하지만 결코 이에 한정되지 않는 모든 수의 웹 서버들에 접속할 것이다.
본 발명의 바람직한 실시예에 대한 상기의 설명은 예시 및 설명의 목적으로 제공된 것이다. 본 발명은 개시된 형태로 한정되지 않는다. 명백하게, 많은 변형들 및 변경들이 당업자들에 의해 이루어질 수 있다. 상기 실시예들은 본 발명의 원리들 및 그의 실용적인 적용들을 설명하기 위하여 선택된 것으로서, 당업자라면 본발명이 다양한 실시예들, 및 특정하게 이용하기에 적절한 다양한 변형들을 갖는 다는 것을 알 수 있을 것이다. 본 발명의 범위는 하기의 청구범위에 의해서만 한정된다.

Claims (35)

  1. 통신 매체와;
    상기 통신 매체에 결합되며, 데이터 구조("RJVM2")를 갖는 제 1 커널 소프트웨어층을 포함하는 처리 장치("JVM1")를 에뮬레이트하는 제 1 소프트웨어 프로그램을 구비하는 제 1 처리 장치와; 그리고
    상기 통신 매체에 결합되며, 제 1 데이터 구조("RJVM1")를 갖는 제 1 커널 소프트웨어층을 포함하는 처리 장치("JVM2")를 에뮬레이트하는 제 1 소프트웨어 프로그램을 포함하며, 메세지는 상기 제 1 처리 장치 내의 상기 제 1 커널층 및 제 1 소프트웨어 프로그램에서, 상기 제 2 처리 장치 내의 상기 제 1 소프트웨어 프로그램 및 상기 커널 소프트웨어층을 통하여, 상기 제 1 처리 장치로부터 상기 제 2 처리 장치로 전송되는 것을 특징으로 하는 분산 처리 시스템.
  2. 제 1 항에 있어서, 상기 제 1 처리 장치 내의 상기 제 1 소프트웨어 프로그램은 JavaTM가상 장치("JVM")이고 상기 제 1 처리 장치 내의 데이터 구조는 원격 JavaTM가상 장치("RJVM")이며,
    상기 제 2 처리 장치 내의 상기 제 1 소프트웨어 프로그램은 JavaTM가상 장치("JVM")이고 상기 제 2 처리 장치 내의 데이터 구조는 원격 JavaTM가상장치("RJVM")이며, 상기 제 2 처리 장치 내의 상기 RJVM은 상기 제 1 처리 장치 내의 상기 JVM에 대응하는 것을 특징으로 하는 분산 처리 시스템.
  3. 제 2 항에 있어서, 상기 제 1 처리 장치 내의 상기 제 1 커널 소프트웨어층은 소켓 매니저 소프트웨어 요소를 포함하는 것을 특징으로 하는 분산 처리 시스템.
  4. 제 2 항에 있어서, 상기 제 1 처리 장치 내의 상기 제 1 커널 소프트웨어층은 쓰레드 매니저 소프트웨어 요소를 포함하는 것을 특징으로 하는 분산 처리 시스템.
  5. 제 2 항에 있어서, 상기 제 1 처리 장치 내의 상기 RJVM은 메세지 루팅 소프트웨어 요소를 포함하는 것을 특징으로 하는 분산 처리 시스템.
  6. 제 2 항에 있어서, 상기 제 1 처리 장치 내의 상기 RJVM은 메세지 압축 소프트웨어 요소를 포함하는 것을 특징으로 하는 분산 처리 시스템.
  7. 제 2 항에 있어서, 상기 제 1 처리 장치 내의 상기 RJVM은 피어곤 검출 소프트웨어 요소를 포함하는 것을 특징으로 하는 분산 처리 시스템.
  8. 제 2 항에 있어서, 상기 제 1 처리 장치는 TCP, SSL, HTTP 터널링 및 IIOP 터널링으로 구성된 그룹으로부터 선택된 프로토콜을 이용하여 상기 제 2 처리 장치와 통신하는 것을 특징으로 하는 분산 처리 시스템.
  9. 제 1 항에 있어서, 상기 제 1 처리 장치는 JavaTM애플리케이션을 저장하기 위한 메모리를 포함하는 것을 특징으로 하는 분산 처리 시스템.
  10. 제 1 항에 있어서, 상기 제 1 처리 장치는 클라이언트이며, 상기 제 2 처리 장치는 상기 클라이언트의 요구에 응답하여 상기 클라이언트에 서비스를 제공하는 서버인 것을 특징으로 하는 분산 처리 시스템.
  11. 제 1 항에 있어서, 상기 제 1 처리 장치는 상기 제 2 처리 장치의 피어인 것을 특징으로 하는 분산 처리 시스템.
  12. 제 10 항에 있어서,
    상기 제 2 처리 장치에 결합된 제 2 통신 매체와; 그리고
    상기 제 2 통신 매체에 결합되며, 1) 처리 장치("JVM3")를 에뮬레이트하는 소프트웨어 프로그램, 및 2) 제 1 데이터 구조("RJVM1") 및 제 2 데이터 구조("RJVM2")를 갖는 제 1 커널 소프트웨어층을 갖는 제 3 처리 장치를 더 포함하는 것을 특징으로 하는 분산 처리 시스템.
  13. 제 12 항에 있어서, 상기 제 2 처리 장치는 상기 제 1 처리 장치로부터 상기제 3 처리 장치로 메세지를 전송하는 것을 특징으로 하는 분산 처리 시스템.
  14. 제 13 항에 있어서, 상기 제 1 처리 장치 내의 상기 제 1 커널 소프트웨어층은 메세지를 압축하기 위한 압축 테이블을 포함하고, 상기 제 3 처리 장치는 메세지를 판독하기 위하여 복사된 압축 테이블을 포함하는 것을 특징으로 하는 분산 처리 시스템.
  15. 제 13 항에 있어서, 상기 제 3 처리 장치는 상기 제 1 통신 매체에 결합되며, 그리고 메세지는 상기 제 1 처리 장치 내의 상기 제 1 커널 소프트웨어층에서 상기 제 3 처리 장치의 상기 제 1 커널 소프트웨어층을 통하여, 상기 제 3 처리 장치로 전송되는 것을 특징으로 하는 분산 처리 시스템.
  16. 제 1 항에 있어서, 상기 제 1 처리 장치는 스터브를 포함하는 것을 특징으로 하는 분산 처리 시스템.
  17. 제 16 항에 있어서, 상기 스터브는 복사-처리기를 포함하는 것을 특징으로 하는 분산 처리 시스템.
  18. 제 17 항에 있어서, 상기 복사-처리기는 로드 밸런싱 소프트웨어 요소 및 페일오버 소프트웨어 요소를 포함하는 것을 특징으로 하는 분산 처리 시스템.
  19. 제 1 항에 있어서, 상기 제 1 처리 장치는 엔터프라이즈 JavaTM빈 오브젝트를 포함하는 것을 특징으로 하는 분산 처리 시스템.
  20. 제 1 항에 있어서, 상기 제 1 처리 장치는 트리의 노드에 저장된 RA 스터브들의 풀을 갖는 네이밍 트리를 포함하며, 상기 제 2 처리 장치는 상기 네이밍 트리의 복사본을 포함하는 것을 특징으로 하는 분산 처리 시스템.
  21. 제 1 항에 있어서, 상기 제 1 처리 장치는 1) 상기 제 1, 2 처리 장치에 상기 RA 스터브를 분배하고, 2) 상기 제 1, 2 처리 장치에 상기 네이밍 트리를 분배하기 위한 멀티캐스트 프로그램을 포함하는 것을 특징으로 하는 분산 처리 시스템.
  22. 제 1 항에 있어서, 상기 제 1 처리 장치는 스테이트리스 프로그램 모델로 코드화된 애플리케이션 프로그램을 포함하는 것을 특징으로 하는 분산 처리 시스템.
  23. 제 22 항에 있어서, 상기 애플리케이션 프로그램은 스테이트리스 세션 빈을포함하는 것을 특징으로 하는 분산 처리 시스템.
  24. 제 1 항에 있어서, 상기 제 1 처리 장치는 스테이트리스 팩토리 프로그램 모델로 코드화된 애플리케이션 프로그램을 포함하는 것을 특징으로 하는 분산 처리 시스템.
  25. 제 24 항에 있어서, 상기 애플리케이션 프로그램은 스테이트풀 세션 빈을 포함하는 것을 특징으로 하는 분산 처리 시스템.
  26. 제 1 항에 있어서, 상기 제 1 처리 장치는 스테이트풀 프로그램 모델로 코드화된 애플리케이션 프로그램을 포함하는 것을 특징으로 하는 분산 처리 시스템.
  27. 제 26 항에 있어서, 상기 애플리케이션 프로그램은 엔티티 세션 빈을 포함하는 것을 특징으로 하는 분산 처리 시스템.
  28. 정보가 저장되는 정보 저장 매체를 포함하는 제조품으로서,
    제 1 처리 장치 내의 제 1 원격 JavaTM가상 장치로부터 제 2 처리 장치 내의 제 2 JavaTM가상 장치로 메세지를 전송하기 위한 제 1 세트의 디지털 정보를 포함하며, 상기 제 1 원격 JavaTM가상 장치는 메세지 루팅 소프트웨어 요소를 포함하는것을 특징으로 하는 제조품.
  29. 제 28 항에 있어서, 상기 제 1 원격 JavaTM가상 장치는 메세지 압축 소프트웨어 요소를 더 포함하는 것을 특징으로 하는 제조품.
  30. 제 28 항에 있어서, 상기 제 1 원격 JavaTM가상 장치는 피어곤 검출 소프트웨어 요소를 더 포함하는 것을 특징으로 하는 제조품.
  31. 제 28 항에 있어서, 상기 제 1 세트의 디지털 정보는 쓰레드 매니저 소프트웨어 요소 및 소켓 매니저 소프트웨어 요소를 더 포함하는 것을 특징으로 하는 제조품.
  32. 제 28 항에 있어서, 상기 메세지를 통신 매체로 전송하기 위한 제 2 세트의 디지털 정보를 더 포함하는 것을 특징으로 하는 제조품.
  33. 제 28 항에 있어서,
    상기 메세지를 상기 통신 매체로 전송하기 위한 제 2 세트의 디지털 정보와;그리고
    원격 방법 호출을 포함하는 제 3 세트의 디지털 정보를 더 포함하는 것을 특징으로 하는 제조품.
  34. 제 28 항에 있어서,
    상기 메세지를 상기 통신 매체로 전송하기 위한 제 2 세트의 디지털 정보와; 그리고
    엔터프라이즈 JavaTM빈을 포함하는 제 3 세트의 디지털 정보를 더 포함하는 것을 특징으로 하는 제조품.
  35. 통신 매체를 통하여 제 1 컴퓨터로부터 제 2 컴퓨터로 메세지를 제공하기 위한 전자 신호로서,
    상기 전자 신호는 프로세서 판독가능한 메모리 내에서 구현되며, JavaTM가상 장치("JVM1")와, 상기 제 1 컴퓨터 내에 저장하기 위한 원격 JavaTM가상 장치("RJVM1")와, 제 1 JavaTM가상 장치("JVM2") 및 상기 제 1 컴퓨터 내에 저장하기 위한 제 1 원격 JavaTM가상 장치("RJVM2")를 나타내는 제 1 신호부를 포함하고, 상기 제 1 컴퓨터 내의 상기 제 1 RJVM1은 소켓을 이용하여 상기 제 2 컴퓨터 내의 상기 제 1 RJVM2로 메세지를 전송하는 것을 특징으로 하는 전자 신호.
KR1020017005752A 1998-11-05 1999-10-21 분산 처리 시스템에서 메세지 통과 커널을 갖는클러스터형 엔터프라이즈 java™ KR100673627B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10716798P 1998-11-05 1998-11-05
US60/107,167 1998-11-05
US09/405,318 US6385643B1 (en) 1998-11-05 1999-09-23 Clustered enterprise Java™ having a message passing kernel in a distributed processing system
US09/405,318 1999-09-23

Publications (2)

Publication Number Publication Date
KR20010099790A true KR20010099790A (ko) 2001-11-09
KR100673627B1 KR100673627B1 (ko) 2007-01-24

Family

ID=26804470

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017005752A KR100673627B1 (ko) 1998-11-05 1999-10-21 분산 처리 시스템에서 메세지 통과 커널을 갖는클러스터형 엔터프라이즈 java™

Country Status (8)

Country Link
US (1) US6385643B1 (ko)
EP (1) EP1138000A4 (ko)
JP (1) JP2002529855A (ko)
KR (1) KR100673627B1 (ko)
CN (1) CN1122229C (ko)
AU (1) AU772975B2 (ko)
CA (1) CA2350645C (ko)
WO (1) WO2000028431A1 (ko)

Families Citing this family (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6938263B2 (en) * 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6466947B2 (en) * 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6421704B1 (en) * 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6272559B1 (en) * 1997-10-15 2001-08-07 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading for event notification in a distributed system
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
WO1999044133A2 (en) 1998-02-26 1999-09-02 Sun Microsystems, Inc. Method and system for deterministic hashes to identify remote methods
CN1292115A (zh) 1998-02-26 2001-04-18 太阳微系统公司 分布系统中动态验证信息的装置和方法
US20020046228A1 (en) * 1998-03-20 2002-04-18 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6721740B1 (en) * 1998-05-29 2004-04-13 Sun Microsystems, Inc. Method and apparatus of performing active update notification
US7478142B1 (en) * 1998-09-29 2009-01-13 Netscape Communications Corporation Self-contained applications that are applied to be received by and processed within a browser environment and that have a first package that includes a manifest file and an archive of files including a markup language file and second package
US6615235B1 (en) * 1999-07-22 2003-09-02 International Business Machines Corporation Method and apparatus for cache coordination for multiple address spaces
JP3769999B2 (ja) * 1999-09-30 2006-04-26 富士通株式会社 サービス振り分け装置
GB9925510D0 (en) * 1999-10-29 1999-12-29 Ibm Incorporating native code in java archive files
WO2001095096A2 (en) * 2000-06-02 2001-12-13 Zucotto Wireless, Inc. Data path engine (dpe)
US20030182469A1 (en) * 2000-06-09 2003-09-25 Simon Lok Distributed computer system using a graphical user interface toolkit
WO2002010917A1 (en) * 2000-07-27 2002-02-07 Bea Systems, Inc. System and method for concentration and load-balancing of requests
US20030050932A1 (en) * 2000-09-01 2003-03-13 Pace Charles P. System and method for transactional deployment of J2EE web components, enterprise java bean components, and application data over multi-tiered computer networks
US7720959B2 (en) 2000-10-17 2010-05-18 Avaya Inc. Method and apparatus for characterizing the quality of a network path
US7336613B2 (en) 2000-10-17 2008-02-26 Avaya Technology Corp. Method and apparatus for the assessment and optimization of network traffic
US7756032B2 (en) * 2000-10-17 2010-07-13 Avaya Inc. Method and apparatus for communicating data within measurement traffic
IL155355A0 (en) 2000-10-17 2003-11-23 Routescience Technologies Inc Method and apparatus for performance and cost optimization in an internetwork
US7349994B2 (en) 2000-10-17 2008-03-25 Avaya Technology Corp. Method and apparatus for coordinating routing parameters via a back-channel communication medium
US7406539B2 (en) 2000-10-17 2008-07-29 Avaya Technology Corp. Method and apparatus for performance and cost optimization in an internetwork
US7487237B2 (en) * 2000-10-17 2009-02-03 Avaya Technology Corp. Load optimization
US7080161B2 (en) * 2000-10-17 2006-07-18 Avaya Technology Corp. Routing information exchange
US8023421B2 (en) * 2002-07-25 2011-09-20 Avaya Inc. Method and apparatus for the assessment and optimization of network traffic
US7296275B2 (en) * 2001-01-04 2007-11-13 Sun Microsystems, Inc. Method and system for passing objects in a distributed system using serialization contexts
US20020099465A1 (en) * 2001-01-19 2002-07-25 Allen Su Methods and apparatus for facilitating communication between devices via an industrial network
US7461148B1 (en) * 2001-02-16 2008-12-02 Swsoft Holdings, Ltd. Virtual private server with isolation of system components
US6567809B2 (en) * 2001-06-08 2003-05-20 International Business Machines Corporation Disabling and reloading enterprise java beans using database trigger programs
US8650321B2 (en) * 2001-07-24 2014-02-11 Digi International Inc. Network architecture
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US7660887B2 (en) * 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US20030051029A1 (en) * 2001-09-07 2003-03-13 Reedy Dennis G. Dynamic provisioning of sevice components in a distributed system
US6877011B2 (en) * 2001-10-10 2005-04-05 Sun Microsystems, Inc. System and method for host based storage virtualization
WO2004013782A1 (en) * 2002-07-31 2004-02-12 Truecontext Corporation Contextual computing system
US6782424B2 (en) * 2002-08-23 2004-08-24 Finite State Machine Labs, Inc. System, method and computer program product for monitoring and controlling network connections from a supervisory operating system
KR100463837B1 (ko) * 2002-12-10 2004-12-29 한국전자통신연구원 엔터프라이즈 빈 추출 장치 및 방법
CA2509579C (en) 2002-12-12 2011-10-18 Finite State Machine Labs, Inc. Systems and methods for detecting a security breach in a computer system
US7406692B2 (en) * 2003-02-24 2008-07-29 Bea Systems, Inc. System and method for server load balancing and server affinity
US7536688B2 (en) * 2003-02-28 2009-05-19 Azul Systems Segmented virtual machine
CN100356326C (zh) * 2003-03-21 2007-12-19 清华大学 基于操作栈记录的恢复的Java线程迁移的方法
JP2004302512A (ja) * 2003-03-28 2004-10-28 Hitachi Ltd クラスタコンピューティングシステム、および、そのフェールオーバー方法
US20040230973A1 (en) * 2003-04-30 2004-11-18 International Business Machines Corporation Mechanism to provide adminstrative control in a multi-process application server
US7047252B2 (en) * 2003-12-02 2006-05-16 Oracle International Corporation Complex computation across heterogenous computer systems
US7386563B1 (en) 2003-12-11 2008-06-10 Unisys Corporation Method for using deferred column retrieval to improve row retrieval and query performance of OLE DB applications
US20050160424A1 (en) * 2004-01-21 2005-07-21 International Business Machines Corporation Method and system for grid-enabled virtual machines with distributed management of applications
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US7716274B1 (en) * 2004-04-14 2010-05-11 Oracle America, Inc. State data persistence in a distributed computing environment
EP1790131B1 (en) * 2004-09-09 2012-12-05 Avaya Inc. Methods of and systems for network traffic security
US7711952B2 (en) * 2004-09-13 2010-05-04 Coretrace Corporation Method and system for license management
US7620953B1 (en) * 2004-10-05 2009-11-17 Azul Systems, Inc. System and method for allocating resources of a core space among a plurality of core virtual machines
US8799242B2 (en) 2004-10-08 2014-08-05 Truecontext Corporation Distributed scalable policy based content management
US8090844B2 (en) * 2004-10-08 2012-01-03 Truecontext Corporation Content management across shared, mobile file systems
US20060102665A1 (en) * 2004-11-12 2006-05-18 International Business Machines Corporation Retry of methods based on exception type and method type
US8204931B2 (en) 2004-12-28 2012-06-19 Sap Ag Session management within a multi-tiered enterprise network
US20060143256A1 (en) 2004-12-28 2006-06-29 Galin Galchev Cache region concept
US7971001B2 (en) * 2004-12-28 2011-06-28 Sap Ag Least recently used eviction implementation
US7933947B2 (en) * 2004-12-28 2011-04-26 Sap Ag Connection manager that supports failover protection
US7552153B2 (en) 2004-12-28 2009-06-23 Sap Ag Virtual machine monitoring using shared memory
US7500133B2 (en) * 2004-12-28 2009-03-03 Sap Ag Connection manager for handling message oriented protocol-based requests
US7672949B2 (en) * 2004-12-28 2010-03-02 Sap Ag Connection manager having a common dispatcher for heterogeneous software suites
US7694065B2 (en) * 2004-12-28 2010-04-06 Sap Ag Distributed cache architecture
US7539821B2 (en) * 2004-12-28 2009-05-26 Sap Ag First in first out eviction implementation
EP1842140A4 (en) * 2005-01-19 2012-01-04 Truecontext Corp APPLICATIONS BASED ON MOBILE FORMS ORDERED BY RULES
KR100645537B1 (ko) * 2005-02-07 2006-11-14 삼성전자주식회사 안정적인 패킷 포워딩을 위한 동적인 큐 관리방법 및 이를위한 네트워크 프로세서의 구성요소
US8589562B2 (en) 2005-04-29 2013-11-19 Sap Ag Flexible failover configuration
US7716377B2 (en) * 2005-05-25 2010-05-11 Harris Steven T Clustering server providing virtual machine data sharing
US7464303B2 (en) * 2005-06-09 2008-12-09 International Business Machines Corporation Autonomically adjusting configuration parameters for a server when a different server fails
US7689660B2 (en) * 2005-06-09 2010-03-30 Sap Ag Application server architecture
US7480908B1 (en) * 2005-06-24 2009-01-20 Azul Systems, Inc. Segmented virtual machine transport mechanism
US7966412B2 (en) * 2005-07-19 2011-06-21 Sap Ag System and method for a pluggable protocol handler
CA2631756A1 (en) 2005-12-01 2007-06-07 Firestar Software, Inc. System and method for exchanging information among exchange applications
US8707323B2 (en) * 2005-12-30 2014-04-22 Sap Ag Load balancing algorithm for servicing client requests
US20080163063A1 (en) * 2006-12-29 2008-07-03 Sap Ag Graphical user interface system and method for presenting information related to session and cache objects
US8356297B1 (en) 2007-03-21 2013-01-15 Azul Systems, Inc. External data source redirection in segmented virtual machine
US7757116B2 (en) * 2007-04-04 2010-07-13 Vision Solutions, Inc. Method and system for coordinated multiple cluster failover
US20090083441A1 (en) * 2007-09-24 2009-03-26 Microsoft Corporation Synchronization of web service endpoints in a multi-master synchronization environment
US8601443B2 (en) * 2008-02-12 2013-12-03 International Business Machines Corporation Method and system for correlating trace data
US9141449B2 (en) * 2009-10-30 2015-09-22 Symantec Corporation Managing remote procedure calls when a server is unavailable
US9122537B2 (en) * 2009-10-30 2015-09-01 Cisco Technology, Inc. Balancing server load according to availability of physical resources based on the detection of out-of-sequence packets
CN101996235A (zh) * 2010-09-21 2011-03-30 用友软件股份有限公司 报表报送方法和装置
US20120324456A1 (en) * 2011-06-16 2012-12-20 Microsoft Corporation Managing nodes in a high-performance computing system using a node registrar
US10489213B2 (en) 2014-10-01 2019-11-26 Red Hat, Inc. Execution of a method at a cluster of nodes
US9703546B1 (en) * 2015-12-21 2017-07-11 Schneider Electric Software, Llc Monitoring application states for deployment during runtime operations
CN109426601B (zh) * 2017-07-17 2022-05-10 华为技术有限公司 一种对程序进行无状态检测的方法和装置

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155809A (en) 1989-05-17 1992-10-13 International Business Machines Corp. Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware
CA2041992A1 (en) 1990-05-18 1991-11-19 Yeshayahu Artsy Routing objects on action paths in a distributed computing system
AU649455B2 (en) 1990-07-11 1994-05-26 American Telephone And Telegraph Company Distributed computing system
CA2048306A1 (en) 1990-10-02 1992-04-03 Steven P. Miller Distributed configuration profile for computing system
JPH0827769B2 (ja) 1992-10-30 1996-03-21 インターナショナル・ビジネス・マシーンズ・コーポレイション 通信インターフェースの生成システム及びその方法
DE69327448T2 (de) * 1992-12-21 2004-03-04 Sun Microsystems, Inc., Mountain View Verfahren und Vorrichtung für Teilaufgaben in verteiltem Verarbeitungssystem
CA2110243C (en) 1992-12-31 1998-08-11 Philip Steven Winterbottom Apparatus and methods for making a portion of a first name space available as a portion of a second name space
US5564070A (en) 1993-07-30 1996-10-08 Xerox Corporation Method and system for maintaining processing continuity to mobile computers in a wireless network
JP3484779B2 (ja) 1994-10-12 2004-01-06 富士ゼロックス株式会社 名前サービス方式及び名前サービス方法
US5961582A (en) 1994-10-25 1999-10-05 Acorn Technologies, Inc. Distributed and portable execution environment
WO1996017306A2 (en) 1994-11-21 1996-06-06 Oracle Corporation Media server
US5692180A (en) 1995-01-31 1997-11-25 International Business Machines Corporation Object-oriented cell directory database for a distributed computing environment
US5701451A (en) 1995-06-07 1997-12-23 International Business Machines Corporation Method for fulfilling requests of a web browser
US5794006A (en) 1995-08-18 1998-08-11 Microsoft Corporation System and method for editing content in an on-line network
US5680461A (en) 1995-10-26 1997-10-21 Sun Microsystems, Inc. Secure network protocol system and method
US5819019A (en) 1995-12-01 1998-10-06 Silicon Graphics, Inc. System/method for recovering network resources in a distributed environment, via registered callbacks
US5842219A (en) 1996-03-14 1998-11-24 International Business Machines Corporation Method and system for providing a multiple property searching capability within an object-oriented distributed computing network
US5790548A (en) 1996-04-18 1998-08-04 Bell Atlantic Network Services, Inc. Universal access multimedia data network
US6016505A (en) 1996-04-30 2000-01-18 International Business Machines Corporation Program product to effect barrier synchronization in a distributed computing environment
US5901227A (en) 1996-06-20 1999-05-04 Novell, Inc. Method and apparatus for implementing partial and complete optional key escrow
US5862331A (en) 1996-06-21 1999-01-19 Sun Microsystems, Inc. Name service system and method for automatic updating on interconnected hosts
US5818448A (en) * 1996-07-02 1998-10-06 Sun Microsystems, Inc. Apparatus and method for identifying server computer aggregation topologies
US5774660A (en) 1996-08-05 1998-06-30 Resonate, Inc. World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network
EP0825524B1 (de) 1996-08-20 2000-01-19 Alcatel Verfahren zur Verwaltung der Benennung von Objekten
US5983351A (en) 1996-10-16 1999-11-09 Intellectual Protocols, L.L.C. Web site copyright registration system and method
US5935242A (en) * 1996-10-28 1999-08-10 Sun Microsystems, Inc. Method and apparatus for initializing a device
GB2321981B (en) * 1997-02-06 2002-01-09 Ibm Hosted machine code installation
US5999988A (en) 1997-03-31 1999-12-07 Sun Microsystems, Inc. Method and apparatus for generating and employing a run-time generated stub to reference an object in object oriented systems
US6003065A (en) 1997-04-24 1999-12-14 Sun Microsystems, Inc. Method and system for distributed processing of applications on host and peripheral devices
US6035118A (en) * 1997-06-23 2000-03-07 Sun Microsystems, Inc. Mechanism to eliminate the performance penalty of computed jump targets in a pipelined processor
US6125382A (en) * 1997-07-25 2000-09-26 International Business Machines Corporation Distributed thread mechanism and method
US5966702A (en) 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files
US6026237A (en) * 1997-11-03 2000-02-15 International Business Machines Corporation System and method for dynamic modification of class files

Also Published As

Publication number Publication date
CN1330785A (zh) 2002-01-09
WO2000028431A1 (en) 2000-05-18
JP2002529855A (ja) 2002-09-10
KR100673627B1 (ko) 2007-01-24
US6385643B1 (en) 2002-05-07
CA2350645A1 (en) 2000-05-18
EP1138000A4 (en) 2006-09-20
CN1122229C (zh) 2003-09-24
AU1127100A (en) 2000-05-29
EP1138000A1 (en) 2001-10-04
CA2350645C (en) 2009-02-10
AU772975B2 (en) 2004-05-13

Similar Documents

Publication Publication Date Title
KR100673627B1 (ko) 분산 처리 시스템에서 메세지 통과 커널을 갖는클러스터형 엔터프라이즈 java™
KR100614265B1 (ko) 분산 처리 시스템에서의 복사된 네이밍 서비스
KR100614266B1 (ko) 안전 분산 처리 시스템에서의 클러스터형 엔터프라이즈java™
KR100768959B1 (ko) 분산 처리 시스템의 스마트 스터브 또는 엔터프라이즈 java™ 빈
AU2006252006A1 (en) Clustered enterprise Java in a secure distributed processing system
AU2003244549A1 (en) Clustered enterprise java in a secure distributed processing system

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

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20131219

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20141231

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20151217

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20161220

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20171219

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 13