KR101422372B1 - 요청 처리 시스템 및 방법과 머신 판독가능 매체 - Google Patents

요청 처리 시스템 및 방법과 머신 판독가능 매체 Download PDF

Info

Publication number
KR101422372B1
KR101422372B1 KR1020127011931A KR20127011931A KR101422372B1 KR 101422372 B1 KR101422372 B1 KR 101422372B1 KR 1020127011931 A KR1020127011931 A KR 1020127011931A KR 20127011931 A KR20127011931 A KR 20127011931A KR 101422372 B1 KR101422372 B1 KR 101422372B1
Authority
KR
South Korea
Prior art keywords
sub
task
network
request
tasks
Prior art date
Application number
KR1020127011931A
Other languages
English (en)
Other versions
KR20120068966A (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 KR20120068966A publication Critical patent/KR20120068966A/ko
Application granted granted Critical
Publication of KR101422372B1 publication Critical patent/KR101422372B1/ko

Links

Images

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1091Interfacing with client-server systems or between P2P systems
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

애플리케이션 프로그램 인터페이스에 수신된 요청을 처리하기 위한 방법 및 시스템을 기술한다. 이 시스템은 데이터와 관련된 작업(job)을 포함한 요청을 클라이언트 머신으로부터 수신한다. 요청은 애플리케이션 프로그램 인터페이스에 수신된다. 다음, 처리 노드의 P2P(peer-ro-peer) 네트워크는 작업을 기반으로 복수의 서브작업(sub-jobs)을 생성한다. 처리 노드의 P2P 네트워크는 서브작업에 의해 제각기 이용되는 자원의 이용가능성을 기반으로 병렬 처리를 위해 복수의 서브작업을 스케줄링하고, 복수의 서브작업을 병렬 처리하여 복수의 서브작업과 제각기 관련된 태스크 결과를 생성한다.

Description

요청 처리 시스템 및 방법과 머신 판독가능 매체{SYSTEMS AND METHODS TO PROCESS A REQUEST RECEIVED AT AN APPLICATION PROGRAM INTERFACE}
본 개시물은 데이터 통신의 기술분야에 관한 것이다. 특히 애플리케이션 프로그램(application program)에 수신된 요청을 처리하기 위한 방법 및 시스템을 기술한다.
시스템은 클라이언트 머신(client machine)으로부터의 요청을 수신하는데 사용되는 애플리케이션 프로그래밍 인터페이스를 포함할 수 있다. 요청은 클라이언트 머신으로 데이터를 전달하도록 시스템에게 촉구하는 작업(job)을 포함할 수 있다. 그러나 다른 요청은 클라이언트 애플리케이션으로부터 데이터를 검색하도록 시스템에게 촉구하는 작업을 포함할 수 있다. 소정 경우, 데이터량이 너무 커서 작업을 완료할 시간이 상당할 수 있다.
본 출원은 여기에 참조로서 완전히 병합되는, 2009년 10월 8일 출원된 "SYSTEMS AND METHODS TO PROCESS A REQUEST RECEIVED AT AN APPLICATION PROGRAM INTERFACE"라는 제목의 미국특허출원 제12/576,097호의 우선권을 주장한다.
실시예는 예로서 도시되며, 첨부도면의 도면으로 제한되지 않는다.
도 1은 실시예에 따라서, 애플리케이션 프로그램 인터페이스에 수신된 요청을 처리하기 위한 시스템을 도시하는 블록도.
도 2a는 실시예에 따라서, 작업을 도시하는 블록도.
도 2b는 실시예에 따라서, 처리 노드를 도시하는 블록도.
도 3a는 실시예에 따라서, 로컬 자원 정보를 도시하는 블록도.
도 3b는 실시예에 따라서, 원격 자원 정보를 도시하는 블록도.
도 4는 실시예에 따라서, 최대 이용 정보를 도시하는 블록도.
도 5는 실시예에 따라서, 애플리케이션 프로그램 인터페이스에 수신된 요청을 처리하기 위한 시스템을 도시하는 블록도.
도 6은 실시예에 따라서, 시장 애플리케이션 및 지불 애플리케이션을 도시하는 블록도.
도 7은 실시예에 따라서, 테이블을 도시하는 블록도.
도 8은 실시예에 따라서, 애플리케이션 프로그램 인터페이스에 수신된 요청을 처리하기 위한 방법을 도시하는 흐름도.
도 9a는 실시예에 따라서, 병렬 처리를 위한 상이한 우선순위의 서브작업을 스케줄링하기 위한 방법을 도시하는 흐름도.
도 9b는 실시예에 따라서, 병렬 처리를 위해 동일 우선순위의 서브작업을 스케줄링하기 위한 방법을 도시하는 흐름도.
도 10a는 실시예에 따라서, 태스크를 실행하기 위한 방법을 도시하는 흐름도.
도 10b는 실시예에 따라서, 태스크를 실행하기 위한 방법을 도시하는 흐름도.
도 11 내지 도 19는 실시예에 따라서, 다양한 인터페이스를 도시하는 도면.
도 20은 실시예에 따라서, 컴퓨터 시스템의 예 형태인 머신의 도식도.
다음의 설명에서, 설명을 위해, 소정 실시예의 철저한 이해를 제공하기 위해 다수의 특정한 상세사항을 제시한다. 그러나 당해 기술분야에 통상의 지식을 가진자는 본 개시물의 실시예를 이들 특정 상세사항없이 실행할 수 있다는 것을 명백히 알 것이다.
더 후술되는 바와 같이, 여기에 기술 및 주장하는 개시된 주제의 다양한 실시예에 따라서, 애플리케이션 프로그램 인터페이스에 수신된 요청을 처리하기 위한 시스템 및 방법을 제공한다. 다양한 실시예는 여기에 제공된 도면과 함께 후술된다.
도 1은 실시예에 따라서 애플리케이션 프로그램 인터페이스에 수신된 요청을 처리하기 위한 시스템(3)을 도시하는 블록도이다. 시스템(3)은 요청을 발생하고 네트워크(7)를 통해 네트워크기반 플랫폼(9)으로 전달하는 프로그램 클라이언트(programmatic client)(11)를 구비한 클라이언트 머신(5)을 포함하는 것으로 도시된다. 그 다음, 네트워크기반 플랫폼(9)은 애플리케이션 프로그램 인터페이스 모듈(15)을 포함한 애플리케이션 프로그램 인터페이스 서버(13)를 포함할 수 있고, 이 애플리케이션 프로그램 인터페이스 모듈(15)은 요청을 수신하는 애플리케이션 프로그램 인터페이스(17)(API)를 포함한다. 예를 들면 요청을 수신하는 API(17)는 요청을 수신하고 이에 응답하는데 이용되는 라이브러리 및/또는 운영체제에 의해 제공되는 루틴, 데이터, 데이터 구조, 객체 등급(object classes) 및/또는 프로토콜의 집합을 포함할 수 있다. 요청은 클라이언트 머신(5)으로부터 데이터 검색을 요구하는 작업(19)을 명시할 수 있다. 다른 예에서, 작업(19)은 네트워크기반 플랫폼(9)으로부터 클라리언트 머신(5)으로의 데이터 전달을 요구할 수 있다. 또한 일 실시예에서, 데이터는 병렬 처리될 수 있는 개별 부분들로 분할될 수 있다.
대체적으로, 애플리케이션 프로그램 인터페이스 모듈(15)은 스캐터 개더 P2P 네트워크(scatter gather peer-to-peer network)(23)에 의한 병렬 처리를 위해 스캐터 개더 논리 데이터베이스(scatter gather logical database)(21)에 작업(19)을 저장함으로써 요청을 비동기적으로 처리할 수 있다. 예를 들면 스캐터 개더 P2P 네트워크(23)는 작업(19)을 기반으로 서브작업(sub-jobs)(20)을 생성함으로써 작업(19)을 분산시키고(scatter), 로컬 및 원격 자원의 이용가능성을 기반으로 처리하기 위해 서브작업(20)을 스케줄링하고, 완료를 위해 서브작업(20)을 독립적으로 병렬 처리하고, 각 서브작업(20)으로부터의 작업-결과를 수집하고(gather), 그리고 작업(19)의 결과를 클라이언트 머신(5)으로 전달할 수 있다. 따라서 요청은 큰 데이터 집합에 지시된 작업(19)을 포함할 수 있다. 이러한 작업(19)은 요청에 비동기로 응답하기 전에 로컬 및 원격 자원을 최적으로 이용하는 P2P 네트워크(23)에 의한 병렬 처리를 위해 서브작업(20)으로 분산될 수 있다.
애플리케이션 프로그램 인터페이스 서버(13)는 작업(19) 및 서브작업(20) 통계를 수집, 저장, 액세스 및 보고하기 위해 모니터 모듈(monitor module)(18)을 더 포함할 수 있다. 모니터 모듈(18)은 커맨드를 전달하고 사용자 인터페이스 및 리포트 형태로 통계 및 추적(trace) 정보를 수신하는 모니터 머신(22)에 의해 이용될 수 있다.
스캐터 개더 논리 데이터베이스
스캐터 개더 논리 데이터베이스(21)는 작업 테이블(35), 작업 큐(25), 작업 재시도 큐(job retry queue)(29), 서브작업 테이블(31), 서브작업 큐(27), 서브작업 재시도 큐(53), 로컬 자원 정보(55), 원격 자원 정보(33) 및 통계 정보(34)를 포함한다.
<작업>
작업 테이블(35)은 요청시 수신된 작업(19)을 초기에 저장하는데 사용될 수 있다. 또한 요청 수신에 응답하여, 작업(19)을 위한 작업 이벤트(37)가 생성되어 작업 큐(job queue)(25)에 저장될 수 있다. 작업 이벤트(37)는 스캐더 개더 P2P 네트워크(23)로 하여금 작업(19)을 처리하게 할 수 있다. 예를 들면 스캐더 개더 P2P 네트워크(23)가 작업 이벤트(37)를 검색할 수 있고, 작업 이벤트(37)가 관련 타임아웃(time-out)과 함께 작업 재시도 큐(29)상에 저장된 후에 대응 작업(19)을 사전결정된 시간 주기 동안에 처리할 수 있다. 타임아웃의 종료에 응답하여, 후속 처리를 위해 스캐터 개더 P2P 네트워크(23)은 작업(19)을 다시 검색할 수 있다. 따라서 작업(19)의 완료시까지 작업 재시도 큐(29)로부터 작업 이벤트(37)를 반복적으로 검색, 처리하고, 작업 재시도 큐(29)에 되저장할 수 있다. 스캐터 개더 P2P 네트워크(23)는 서브작업 테이블(31)에 저장된 서브작업(20)을 생성하기 위해 작업(19)을 처리할 수 있다. 예를 들면 스캐터 개더 P2P 네트워크(23)는 서브작업 테이블(31)에 저장된 20개의 서브작업(20)을 생성하기 위해 특정 작업(19)을 처리할 수 있다. 스캐터 개더 P2P 네트워크(23)는 대응 서브작업(20)을 위해 이용가능한 원격 자원을 확인(또는 식별)하는 것에 응답하여 서브작업 큐(27)상에서 서브작업 이벤트(51)를 더 스케줄링할 수 있다.
<서브작업>
서브작업(20)은 스캐터 개더 P2P 네트워크(23)에 의해 병렬로 처리될 수 있다. 서브작업(20)은 서브작업 큐(27)상에 저장된 서브작업 이벤트(51)에 각각 대응할 수 있다. 서브작업 이벤트(51)는 서브작업 큐(27)로부터 검색될 수 있고, 대응 서브작업(20)은 완료때까지 또는 서브작업(20)이 인터럽트되어 서브작업 이벤트(51)로 하여금 관련 타임아웃과 함께 서브작업 재시도 큐(53)에 저장될 때까지 스캐터 개더 P2P 네트워크(23)에 의해 먼저 처리될 수 있다. 타임아웃의 종료에 응답하여, 스캐터 개더 P2P 네트워크(23)는 후속 처리를 위해 서브작업 이벤트(51)를 검색할 수 있다. 따라서 서브작업 이벤트(51)는 대응 서브작업(20)의 완료시까지 반복적으로, 서브작업 재시도 큐(53)로부터 검색, 처리되고, 서브작업 재시도 큐(53)상에 되저장될 수 있다. 더 후술하는 바와 같이, 각 서브작업(20)은 수행할 동작을 명시하는 하나 이상의 태스크(task)(39)를 포함할 수 있다.
스캐터 개더 P2P 네트워크
스캐터 개더 P2P 네트워크(23)는 작업(19)과 서브작업(20)을 처리하기 위해 스캐터 개더 논리 데이터베이스(21)를 제각기 이용하는 복수의 처리 노드(26)를 포함할 수 있다. 따라서 스캐터 개더 P2P 네트워크(23)의 처리 전력 및 저장 용량은 처리 노드(26)를 추가함으로써 증가될 수 있거나, 또는 처리 노드(26)를 제거함으로써 감소될 수 있다.
전술한 바와 같이, 처리 노드(들)(26)는 먼저, 작업(19)을 서브작업(20)으로 분산시킴으로써 작업(19)을 처리할 수 있다. 예를 들면 처리 노드(26)는 작업(19)을 기반으로 서브작업(20)을 생성하고, 서브작업(20)을 서브작업 테이블(31)에 저장하고, 그리고 서브작업 이벤트(51)를 서브작업 큐(27)에 저장할 수 있다. 서브작업은 태스크(39)를 포함할 수 있다. 전형적으로, 태스크(39)는 서브작업(20)으로 분할된 데이터 부분을 처리하도록 실행될 수 있다. 다음, 처리 노드(26)는 실행을 위해 하나 이상의 서브작업(20)을 스케줄링할 수 있는 지의 여부를 확인할 수 있다. 처리 노드(26)는 서브작업(20)에 의해 각각 이용되는 바와 같이 로컬 및 원격 자원(41)의 이용가능성을 기반으로 실행을 위해 하나 이상의 서브작업(20)을 스케줄링할 수 있다. 예를 들면 처리 노드(26)는 사용가능한 로컬 및 원격 자원(41)을 확인(또는 식별)하는 것에 응답하여 서브작업 이벤트(51)를 서브작업 재시도 큐(53)로 이동시킬 수 있다. 서브작업 재시도 큐(53)으로의 이동으로 인하여, 대응한 서브작업(20)은 스캐터 개더 P2P 네트워크(23)에서 다른 처리 노드(26)에 가시적이 된다. 따라서 스캐터 개더 P2P 네트워크(23)에서 처리 노드는 후속하여 서브작업 재시도 큐(53)상에서 서브작업 이벤트(51)를 확인하여, 서브작업(20)을 처리할 수 있다. 반대로, 서브작업(20)은 로컬 및 원격 자원(41)을 이용할 수 없으므로 실행을 위해 스케줄링될 수 없다. 이러한 경우, 처리 노드(26)는 실행을 위해 서브작업(20)을 스케줄링하는데 충분한 자원을 이용할 수 있을 때까지 대기할 수 있다.
일 실시예에서, 처리 노드(26)는 서브작업(20)을 처리하는데 로컬 자원을 사용할 수 있는 지의 여부를 확인하기 위해 로컬 자원 정보(55)를 이용할 수 있다. 예를 들면 로컬 자원은 처리 노드풀(a pool of processing nodes)(26)와 관련된 메모리 및 프로세서를 포함할 수 있다. 더 후술되는 바와 같이, 일 실시예에서 처리 노드풀(26)을 위한 로컬 자원은 단일 값으로 정규화될 수 있다. 따라서 특정 처리 노드(26)는 서브작업(20)을 처리하기 전에 그의 풀에 충분한 로컬 자원을 사용할 수 있는 지의 여부를 확인할 수 있다.
일 실시예에서, 처리 노드(26)는 서브작업(20)을 처리하는데 원격 자원(41)을 사용할 수 있는 지의 여부를 확인하기 위해 원격 자원 정보(33)를 이용할 수 있다. 일 실시예에서, 원격 자원(41)은 데이터베이스 서버 자원풀(43)과 API 서버 자원풀(45)을 포함할 수 있다. 데이터베이스 서버 자원풀(43)은 데이터베이스(47)에 대한 액세스를 제공하는 다중 데이터베이스 서버를 포함할 수 있다. API 서버 자원풀(45)은 클라이언트 머신(5) 및 다른 메카니즘에 대한 네트워크 액세스를 제공하는 다중 API 서버를 포함할 수 있다.
<다른 구성요소>
통계 정보(34)는 작업(19)과 서브작업(20)의 관리를 용이하게 하기 위해 통계 데이터, 원 데이터, 추적 데이터(tracing data) 및 다른 유형의 데이터를 저장하는데 사용될 수 있다.
경쟁 프로세서(49)는 원격 자원(41)의 할당을 위해 스캐터 개더 P2P 네트워크(23)와 경쟁할 수 있다. 일 실시예에서, 스캐터 개더 P2P 네트워크(23)는 경쟁 프로세스(49)에 의한 원격 자원(41)의 예상 또는 실제 이용을 기반으로 원격 자원(41)의 사용을 제한하기 위해 다시 조절될 수 있다. 예를 들면 경쟁 프로세스(49)는 시간 주기에 걸쳐 원격 자원(41)의 최대(예를 들면 피크(peak)) 및 최소 이용을 보여줄 수 있다. 스캐터 개더 P2P 네트워크(23)는 경쟁 프로세스(49)에 의한 원격 자원(41)의 피크 이용 동안에 원격 자원(41)의 사용을 제한하기 위해 다시 조절될 수 있다. 반대로, 스캐터 개더 P2P 네트워크(23)는 경쟁 프로세스(49)에 의한 원격 자원(41)의 낮은 또는 최소 이용 동안에는 원격 자원(41)의 사용을 제한하도록 다시 조절되지 않을 수 있다.
일 실시예에서, 스캐터 개더 P2P 네트워크(23)에서 처리 노드(26)는 원격 자원(41)을 액세스하기 위해 재시도 메카니즘을 이용할 수 있다. 따라서 처리 노드(26)는 복구가능한 오류와 복구불가한 오류 간을 구별할 수 있다. 복구가능한 오류를 확인한 경우, 처리 노드(26)는 원격 자원(41)(데이터베이스, 애플리케이션 프로그래밍 인터페이스) 액세스를 재시도할 수 있다. 복구불가한 오류를 확인한 경우, 처리 노드(26)는 작업이 실패한 것으로 등록할 수 있다.
당업자는 작업(19)의 처리는 상이한 때에 다중 처리 노드(26)에 걸쳐 있을 수 있다는 것을 알 것이다. 실패를 진단하고 다중 처리 노드(26)의 동작을 추적하는 일을 용이하게 하기 위하여, 모니터 모듈(18)은 이러한 정보를 중심적으로 수집 및 디스플레이하고, 그리고 모니터 머신(22)에서 볼 수 있는 이러한 정보를 포함한 사용자 인터페이스를 더 생성하는데 이용될 수 있다. 사용자 인터페이스는 작업(19)으로부터 서브작업(20)으로, 서브작업(20)으로부터 태스크(39)로, 태스크(39)로부터 머신(예를 들면 처리 노드(26)/태스크(39)상에서 작업한 쓰레드(thread)로, 그리고 태스크(39)상에서 작업한 처리 노드(26)로부터, 태스크(39)의 실행을 연대순으로 기록하는 로그 이벤트를 포함할 수 있는 로그로 드릴다운(drill down)하는데 이용될 수 있는 선택가능한 사용자 인터페이스 요소를 포함할 수 있다.
도 2a는 실시예에 따라서 작업(19)을 도시하는 블록도이다. 작업(19)은 작업 모듈 식별자(60), 작업 유형(61) 및 작업 정보(63)를 포함한다. 작업 모듈 식별자(60)는 후술하는 바와 같이 작업 모듈을 확인하는데 사용될 수 있다. 작업 유형(61)은 작업(19)의 유형을 식별하는데 사용될 수 있다. 예를 들면 네트워크기반 플랫폼(9)은 동일한 작업 모듈 식별자(60)에 대해 상이한 유형의 작업(19)을 처리할 능력을 가질 수 있다 작업 정보(63)는 작업(19)의 저작자(author), 수행할 기능, 작업(19)의 우선순위, 작업(19) 및 관련 서브작업(20)에 의해 이용되는 로컬 및 원격 자원의 유형 및 양, 데이터의 네트워크 주소, 데이터 유형, 데이터량, 그리고 작업(19)에 의해 이용되는 다른 정보를 확인하는데 사용될 수 있다.
도 2b는 실시예에 따라서 처리 노드(26)를 도시하는 블록도이다. 처리 노드(26)는 로컬 자원(71)과 분산 애플리케이션 프로그램 인터페이스 애플리케이션(73)(예를 들면 모듈)을 포함할 수 있다. 로컬 자원(71)은 세 프로세서(75)를 포함하는 것으로 도시된다. 다른 실시예는 추가적인 또는 보다 적은 프로세서(75)를 포함할 수 있다. 로컬 자원(71)은 증가 또는 감소될 수 있는 특정 양의 메모리(77)를 포함하는 것으로 더 도시된다. 또 다른 실시예는 추가적인 또는 보다 작은 메모리를 포함할 수 있다.
분산 애플리케이션 프로그램 인터페이스 애플리케이션(73)은 스캐터 개더 프레임워크(79)(예를 들면 모듈)와 작업 모듈(83)을 포함한다. 각 작업 모듈(83)은 (도시되지 않은) 애플리케이션 프로그램 인터페이스 모듈(15)에서 애플리케이션 프로그램 인터페이스(17) 및, 작업(19)에서 작업 모듈 식별자(60)에 대응한다. 따라서 스캐터 개더 프레임워크(79)에서 처리 노드(26)는 분산 애플리케이션 프로그램 인터페이스 애플리케이션(73)에 작업 모듈(83)을 추가하고, (도시되지 않은) 애플리케이션 프로그램 인터페이스 모듈(15)에 애플리케이션 프로그램 인터페이스(17)를 추가함으로써 새 작업(19)을 처리하도록 갖출 수 있다. 스캐터 개더 프레임워크(79)는 작업(19)을 처리하도록 적절한 작업 모듈(83)을 호출하기 위해 작업(19)에서 작업 식별자(60)를 이용할 수 있다. 따라서 스캐터 개더 프레임워크(79)에 의해 수행될 수 있는 기능은 모든 작업(19)에 대해 일정하게 유지된다. 반대로, 적절한 작업 모듈(83)에 의해 수행될 수 있는 기능은 작업(19) 및 대응한 애플리케이션 프로그램 인터페이스(17)에 특정적이다.
스캐터 개더 프레임워크(79)는 제어기 모듈(85)을 포함할 수 있다. 제어기 모듈(85)은 작업 실행기(87), 스케줄러(89) 및 서브작업 실행기(91)의 형태인 구성요소를 포함할 수 있다. 제어기 모듈(85) 및 그의 구성요소는 작업(19)을 처리하도록 작업 모듈(83)의 구성요소를 호출할 수 있다. 작업 모듈(83)은 작업 전처리 프로세서(pre-processor)(93), 작업 파서(job parser)(95), 작업 후처리 프로세서(job post-processor)(97) 및 태스크 프로세서(99)의 형태인 구성요소를 포함한다.
제어기 모듈(85)은 처리 노드(28)에서 실행되는 다른 모듈과의 상호작용을 조정할 수 있고, 처리 노드(26)상의 로컬 자원이 작업(19)을 처리하는데 사용될 수 있는지의 여부를 확인할 수 있다. 예를 들면 제어기 모듈(85)은 적절한 수의 프로세서(75)와 메모리(77)를 처리 노드(26)상에서 사용할 수 있는 지의 여부를 확인할 수 있다.
작업 실행기(87)는 작업(19)에서 작업 모듈 식별자(60)를 기반으로 적절한 작업 전처리 프로세서(93)를 호출할 수 있다. 작업 전처리 프로세서(93)는 추가 처리를 위해 작업(19)을 준비하도록 사전 처리 활동을 수행할 수 있다. 예를 들면 작업 전처리 프로세서(93)는 작업(19)의 우선순위를 계산할 수 있다. 일 실시예에서, 작업(19)의 우선순위는 고, 중 또는 하일 수 있다. 또한 작업 전처리 프로세서(93)는 작업(19)으로부터 사용자의 이름을 추출할 수 있고, 사용자를 위한 사용자 프로파일 정보에 사용자 이름을 매핑(map)할 수 있다. 또 다른 실시예에서, 작업 전처리 프로세서(93)는 작업(19)으로부터 사용자 이름을 추출할 수 있고, 사용자에 의한 판매 또는 경매를 위해 제공된 항목에 사용자 이름을 매핑할 수 있다. 또 다른 실시예에서, 항목 또는 사용자는 항목과 관련된 트랜잭션, 항목과 관련된 피드백, 그리고 다른 유형의 정보로 더 매핑될 수 있다. 소정 실시예에서, 작업 전처리 프로세서(93)는 데이터베이스 서버에 호출을 함으로써 일 정보 유형의 정보를 또 다른 유형의 정보로 매핑할 수 있다. 작업 실행기(87)는 작업(19)에서 작업 모듈 식별자(60)를 기반으로 적절한 작업 파서(95)를 더 호출할 수 있다. 작업 파서(95)는 작업(19)을 태스크(39)를 포함한 서브작업(20)으로 나눌 수 있다. 일 실시예에서, 작업 파서(95)는 동일한 양의 작업에 따라서 작업(19)을 서브작업(20)으로 나눌 수 있다. 예를 들면 서브작업(20)은 동일한 양의 항목, 트랜잭션, 데이터량 등을 기반으로 식별될 수 있다. 마지막으로, 작업 실행기(87)는 서브작업(20)으로부터 결과를 수집하기 위해 작업 후처리 프로세서(97)를 호출할 수 있다.
스케줄러(89)는 서브작업(20)을 위해 원격 자원(41)(도시되지 않음)을 사용할 수 있는 지의 여부를 확인하기 위해 작업 우선순위와 원격 자원 정보(33)(도시되지 않음)를 이용할 수 있다. 예를 들면 스케줄러(89)는 작업(19)의 우선순위(고, 중, 하), 서브작업(20)을 실행하기 위해 원격 자원(41), 그리고 원격 자원(41)을 이용할 수 있다는 확인을 기반으로 서브작업(20)을 위한 서브작업 이벤트(51)를 서브작업 큐(27)로 이동시킬 수 있다. 또한 스케줄러(89)는 작업(19)을 위한 처리 시간이 종료되었음을 확인하는 것에 응답하여 작업(19)을 작업 재시도 큐(29)로 이동시킬 수 있다. 일 실시예에서, 스케줄러(89)는 공정성(fairness) 개념으로 동작한다. 예를 들면 스케줄러(89)는 원격 자원을 작업(19)으로 할당함으로써 공정성을 보장할 수 있으므로, 동일 크기(예를 들면 처리할 데이터량)와 동일 우선순위인 두 작업은 동시에 시작한 경우에 동시에 종료될 것이다.
서브작업 실행기(91)는 서브작업 큐(27)상에서 서브작업(20)을 확인하고, 서브작업(20)에서 태스크(39)를 실행하기 위해 작업 모듈 식별자(60)를 기반으로 적절한 태스크 프로세서(99)를 호출할 수 있다.
도 3a는 실시예에 따라서 로컬 자원 정보(55)를 도시하는 블록도이다. 로컬 자원 정보(55)는 상이한 처리 노드풀(26)에 제각기 대응하는 다중 엔트리(entries)를 포함할 수 있다. 로컬 자원 정보(55)는 현재 이용 정보(110)와 최대 이용 정보(112)를 포함할 수 있다. 현재 이용 정보(110)는 관련 처리 노드풀(26)의 경우에 서브작업(20)에 의한 로컬 자원(예를 들면 메모리, 프로세서 등)의 현 이용을 저장하는데 사용될 수 있다. 예를 들면 현 이용(110)은 서브작업 이벤트(51)를 서브작업 재시도 큐(53)로 이동시키는 것에 따라 증분될 수 있고, 서브작업(20)의 완료에 응답하여 감분될 수 있는 정규 용량으로서 저장될 수 있다. 특정 서브작업(20)에 의해 이용되는 용량의 양(예를 들면 증분 또는 감분되는 값)은 대응 작업(19)에서 작업 정보(63)에 의해 확인되는 바와 같이 로컬 자원 요건을 기반으로 할 수 있다.
도 3b는 실시예에 따라서 원격 자원 정보(33)를 도시하는 블록도이다. 원격 자원 정보(33)는 상이한 원격 자원(41)에 각각 대응하는 다중 엔트리를 포함할 수 있다. 예를 들면 원격 자원 정보(33)는 데이터베이스 서버 자원풀(43)에 대해 유지관리될 수 있다. 또한 예를 들어 원격 자원 정보(33)는 API 서버 자원풀(45)에 대해 유지관리될 수 있다. 원격 자원 정보(33)는 현 이용 정보(111) 및 최대 이용 정보(113)를 포함할 수 있다. 현 이용 정보9111)는 서브작업(20)에 의해 원격 자원(예를 들면 메모리, 프로세서 등)의 현 이용을 저장하는데 사용될 수 있다. 예를 들면 현 이용은 서브작업 이벤트(51)를 서브작업 재시도 큐(53)로 이동시킴에 따라 증분될 수 있으며, 서브작업(20)의 완료에 응답하여 감분될 수 있는 정규 용량으로서 저장될 수 있다. 특정 서브작업(20)에 의해 이용되는 용량의 양(예를 들면 증분 또는 감분되는 값)은 대응 작업(19)에서 작업 정보(63)에 의해 확인되는 바와 같이 원격 자원 요건을 기반으로 할 수 있다.
도 4는 실시예에 따라서 최대 이용 정보(113)를 도시하는 블록도이다. 최대 이용 정보(113)는 시간 정보(115)와 최대 이용(117)을 포함하도록 도시된다. 시간 정보(115)는 그 날의 시간(예를 들면 군용 시간)의 형태일 수 있다. 일 실시예에 따라서, 최대 이용(117)은 대응 시간에 스캐터 개더 P2P 네트워크(23)에 의해 이용될 수 있는 원격 자원(41)의 최대량을 나타내는 정규 값을 포함할 수 있다. 예를 들면 아침 8시에 스캐터 개더 P2P 네트워크(23)에 의해 이용될 수 있는 원격 자원의 최대 정규값은 5인것으로 도시된다. 이 최대 이용은 경쟁 프로세스(49)에 의한원격 자원(41)의 피크 사용에 대응하므로 최저이다. 일 실시예에서, 스캐터 개더 P2P 네트워크(23)에 의해 이용될 수 있는 원격 자원(41)의 최대 정규 값은 경쟁 프로세스(49)에 의한 원격 자원(41)의 사적 사용(historical usage)을 기반으로 생성될 수 있다. 또 다른 실시예에서, 스캐터 개더 P2P 네트워크(23)에 의해 이용될 수 있는 원격 자원(41)의 최대 정규 값은 경쟁 프로세스(49)에 의한 원격 자원(41)의 측정된 사용을 기반으로 실시간 생성될 수 있다. 따라서 스캐터 개더 P2P 네트워크(23)는 경쟁 프로세스(49)에 의한 원격 자원(41)의 사적 또는 측정된 최소 및 최대 사용에 따라 결정되는 바와 같이 원격 자원(41)의 최대 정규값을 초과하지 않도록 조절될 수 있다.
도 5는 내부에 일 실시예를 전개할 수 있는 네트워크 시스템(201)을 도시하는 네트워크도이다. 시스템(201)은 도 1의 시스템(3)에 대응하고, 따라서 동일 또는 유사한 참조번호는 달리 나타내지 않는 한 동일 또는 유사 특징을 가리키는데 사용되었다. 네트워크기반 시장(network-based marketplace)(203)은 네트워크(7)(예를 들면 인터넷 또는 WAN(Wide Area Network))를 통해 하나 이상의 클라이언트로 서버측 기능성을 제공한다. 도 5는 예를 들어 클라이언트 머신(207)상에서 실행중인 웹 클라이언트(205)(예를 들면 워싱턴주 레드몬드의 마이크로소프트사가 개발한 인터넷 익스플로어와 같은 브라우저)와 클라이언트 머신(5)상에 실행중인 프로그램 클라이언트(11)를 도시한다.
API(application program interface) 서버(13) 및 웹 서버(209)는 하나 이상의 애플리케이션 서버(211)로 연결되어, 제각기 프로그램 및 웹 인터페이스를 제공한다. 애플리케이션 서버(211)는 하나 이상의 시장 애플리케이션(213) 및 지불 애플리케이션(215)을 관리한다. 그 다음, 애플리케이션 서버(211)은 하나 이상의 데이터베이스(47)에 대한 액세스를 용이하게 하는 하나 이상의 데이터베이스 서버(217)로 연결되는 것으로 도시된다. 애플리케이션 서버(211)는 전술한 바와 같이 스캐터 개더 P2P 네트워크(23)를 더 포함할 수 있다.
시장 애플리케이션(213)은 네트워크기반 시장(203)을 액세스하는 사용자에게 다양한 시장 기능 및 서비스를 제공할 수 있다. 지불 애플리케이션(215)은 또한 사용자에게 다양한 지불 서비스 및 기능을 제공할 수 있다. 사용자는 지불 애플리케이션(215)으로 인해 계정(accounts)에 값을 누적시킬 수 있고, 차후에 시장 애플리케이션(213)을 통해 이용가능하게 되는 제품(예를 들면 상품 또는 서비스)에 대한 누적 값을 보완할 수 있다. 값은 미국달러와 같은 상업 통화(commercial currency), 또는 "포인트(points)"와 같은 사유 통화(proprietary currency)로 누적될 수 있다. 시장 애플리케이션(213)과 지불 애플리케이션(215)이 네트워크기반 시장(203)의 두 형태 부분을 형성하는 것으로 도 5에 도시되어 있지만, 다른 실시예에서 지불 애플리케이션(215)은 네트워크기반 시장(203)과 분리되어 별개인 지불 서비스의 일부를 형성할 수 있다는 것을 알 것이다.
더욱이 도 5에 도시된 네트워크 시스템(201)이 클라이언트-서버 구조를 사용하지만, 본 개시물의 실시예는 물론 이러한 구조로 제한되지 않으며, 예를 들어 동일하게 분산 또는 P2P 구조 시스템에서 애플리케이션을 알아낼 수 있다. 또한 다양한 시장 애플리케이션(213) 및 지불 애플리케이션(215)은 반드시 네트워킹 능력을 가질 필요없이 자립형 소프트웨어 프로그램으로 구현될 수 있다.
웹 클라이언트(205) 및 모바일 프로그램 클라이언트(11)는 웹 서버(209)에 의해 지원되는 웹 인터페이스를 통해 다양한 시장 애플리케이션(213) 및 지불 애플리케이션(215)을 액세스한다. 유사하게, 프로그램 클라이언트(11)는 API 서버에 의해 제공되는 프로그램 인터페이스를 통해 시장 애플리케이션(213) 및 지불 애플리케이션(215)에 의해 제공되는 다양한 서비스 및 기능을 액세스한다. 예를 들어 프로그램 클라이언트(11)는 판매자로 하여금 오프라인 방식으로 네트워크기반 시장(203)상에 리스팅을 저작하고 관리할 수 있게 하며 프로그램 클라이언트(11)와 네트워크기반 시장(203) 간의 배치모드(batch-mode) 통신을 수행할 수 있게 하는 판매자 애플리케이션(예를 들면 캘리포니아 산호세의 eBay사에 의해 개발된 TurboLister 애플리케이션)일 수 있다. API 서버(13)는 애플리케이션 프로그램 인터페이스 모듈(15), 스캐터 개더 논리 데이터베이스(21), 모니터 모듈(18) 및 API 서버 자원풀(45)을 포함하도록 도시되는데, 이들 각각은 이전에 기술하였다.
또한 도 5는 API 서버(13)에 의해 제공된 프로그램 인터페이스를 통해 네트워크 시스템(201)에 대한 프로그램 액세스를 가지며, 제3자 서버 머신(30)상에서 실행되는 제3자 애플리케이션(28)을 기술한다. 예를 들면 제3자 애플리케이션(28)은 네트워크기반 시장(203)으로부터 검색된 정보를 이용하고, 제3자에 의해 관리되는 웹사이트상에 하나 이상의 특징 또는 기능을 지원할 수 있다. 예를 들어 제3자 웹사이트는 네트워크 시스템(201)의 적절한 애플리케이션에 의해 지원되는 하나 이상의 프로모션(promotional), 시장 또는 지불 기능을 제공할 수 있다.
시장 및 지불 애플리케이션
도 6은 일 실시예에서 네트워크 시스템(201)의 일부로서 제공되는 시장 애플리케이션(213) 및 지불 애플리케이션(215)을 도시하는 블록도이다. 시장 애플리케이션(213) 및 지불 애플리케이션(215)은 도 5에 도시된 바와 같이 서버 머신들간의 통신을 가능하게 하기 위해 통신가능하게 연결된 전용 또는 공유 서버 머신상에서 관리될 수 있다. 애플리케이션 그들 자신은 애플리케이션들간에 정보 전달을 가능하게 하기 위해, 또는 애플리케이션이 공통 데이터를 공유 및 액세스할 수 있게 하기 위하여 (적절한 인터페이스를 통해) 서로, 그리고 다양한 데이터 소스로 통신가능하게 연결된다. 더욱이 도 5에 도시된 바와 같이, 애플리케이션은 데이터베이스 서버(217)를 통해 하나 이상의 데이터베이스(47)를 액세스할 수 있다.
네트워크기반 시장(203)은 다수의 공시(publishing), 리스팅 및 가격 설정 메카니즘을 제공할 수 있으며, 이로써 판매자는 판매를 위해 상품 또는 서비스를 리스트(또는 이와 관한 정보를 공시)할 수 있고, 구매자는 이러한 상품 또는 서비스에 대한 관심을 표현하거나 또는 이를 구매하기를 원한다는 것을 나타낼 수 있고, 가격은 상품 또는 서비스에 관련된 거래(transaction)를 위해 설정될 수 있다. 이 목적을 위해, 시장 애플리케이션(213)은 경매 방식 리스팅 및 가격 설정 메카니즘을 지원하는 적어도 하나의 공시 애플리케이션(publication application)(221) 및 하나 이상의 경매 애플리케이션(223)을 포함하는 것으로 도시된다(예를 들면 English, Dutch, Vickrey, Chinese, Double, Reverse auctions 등). 또한 다양한 경매 애플리케이션(223)은 판매자가 리스팅과 관련하여 최저 경매 가격(reserve price)을 명시할 수 있게 하는 최저 경매 가격 특징, 그리고 입찰자가 자동 대리 입찰(proxy bidding)을 할 수 있게 하는 대리 입찰 특징과 같이, 이러한 경매 방식 리스팅을 지원시에 다수의 특징을 제공할 수 있다.
다수의 고정 가격 애플리케이션(225)은 고정 가격 리스팅 방식(예를 들면 통상적으로 분류된 광고형 리스팅 또는 카탈로그 리스팅)과 매수형(buyout type) 리스팅을 지원한다. 특히 (예를 들면 캘리포니아 eBay사에 의해 개발된 BIN(Buy-It-Now) 기술을 포함한) 매수형 리스팅은 경매 방식 리스팅과 함께 제공될 수 있으며, 경매의 시작가보다 전형적으로 보다 높은 고정 가격의 경우에 경매를 통한 판매를 위해 또 한 제공되고 있는 것으로 구매자로 하여금 상품 또는 서비스를 구매할 수 있게 한다.
판매자는 저장 애플리케이션(들)(227)으로 인하여, 브랜드화될 수 있으며, 그렇지 않으면 판매자에 의해, 그리고 그를 위해 개인화(personalization)될 수 있는, "가상" 저장소내에서 리스팅을 그룹화할 수 있다. 또한 이러한 가상 저장소는 적절한 판매자에게 특정적이며 개인화된 프로모션, 인센티브 및 특징을 제공할 수 있다.
네트워크기반 시장(203)를 이용하여 거래하는 사용자는 평판 애플리케이션(reputation applications)(229)으로 인하여, 사용가능하게 될 수 있으며 잠재적 거래 파트너(trading partner)에게 공시될 수 있는 평판을 설정, 설립 및 유지 관리할 수 있다. 예를 들면 네트워크기반 시장(203)이 개인 대 개인 거래를 지원하는 경우를 고려하면, 사용자는 이와 달리 잠재 거래 파트너의 신뢰성(trustworthiness, credibility)을 평가할 수 있는 히스토리 또는 다른 참조 정보를 가지지 않을 수 있다. 사용자는 평판 애플리케이션(229)으로 인하여, 예를 들어 다른 거래 파트너에 의해 제공되는 피드백을 통해, 시간에 걸쳐 네트워크기반 시장(203)내 명성을 설정할 수 있다. 그러면, 다른 잠재 거래 파트너는 신뢰성을 평가하기 위하여 이러한 명성을 참조할 수 있다.
네트워크기반 시장(203)의 사용자는 개인화 애플리케이션(231)으로 인하여, 네트워크기반 시장(203)과 그들의 상호작용의 다양한 양상을 개인화할 수 있다. 예를 들면 사용자는 적절한 개인화 애플리케이션(231)을 이용하여, 사용자가 당사자인(또는 이였던) 트랜잭션에 관한 정보를 보여줄 수 있는 개인화된 참조 페이지를 생성할 수 있다. 더욱이, 사용자는 개인화 애플리케이션(231)으로 인하여, 네트워크 시스템(201)과 다른 당사자들과의 그들 상호작용의 리스팅 및 다른 양상을 개인화할 수 있다.
네트워크 시스템(201)은 예를 들어 특정 지리적 영역에 대해 맞춤화된 다수의 시장을 지원할 수 있다. 어떤 버전의 네트워크 시스템(201)은 영국에 대해 맞춤화될 수 있지만, 반면에 다른 버전의 네트워크 시스템(201)은 미국에 대해 맞춤화될 수 있다. 이들 버전의 일부는 독립된 시장으로서 동작하거나, 또는 공통 기초 시장의 맞춤화된(또는 국제화된) 프리젠테이션일 수 있다. 따라서 네트워크 시스템(201)은 사전결정된 표준(예를 들면 지리적, 데모그래픽(demographic), 또는 시장 표준)에 따라서 네트워크 시스템(201)에 의한 정보(및/또는 정보의 프리젠테이션)를 맞춤화하는 다수의 국제화 애플리케이션(233)을 포함할 수 있다. 예를 들면 국제화 애플리케이션(233)은 네트워크 시스템(201)에 의해 작동되며 각 서버(13, 209)를 통해 액세스될 수 있는 다수의 지역 웹사이트에 대한 정보의 맞춤화를 지원하는데 사용될 수 있다.
네트워크기반 시장(203)의 내비게이션(navigation)은 하나 이상의 내비게이션 애플리케이션(235)에 의해 용이할 수 있다. 예를 들어 수신 모듈은 네트워크기반 시장(203)에서 항목에 대한 검색을 위해 검색 정보를 수신할 수 있고, 처리 애플리케이션은 그 요청을 처리할 수 있다. 브라우즈 애플리케이션(browse application)은 네트워크 시스템(201)내에서 리스팅을 분류할 수 있는 것에 따라서 사용자로 하여금 시스템(201)내 다양한 범주, 카탈로그, 또는 재고 데이터 구조(inventory data structure)를 브라우징할 수 있도록 해준다. 다른 다양한 내비게이션 애플리케이션이 검색 및 브라우징 애플리케이션을 보충하도록 제공될 수 있다.
네트워크 시스템(201)을 통해 사용가능한 리스팅을 가능한 한 시각적으로 유익하고 매력적인 것으로 만들기 위하여, 시장 애플리케이션(213)은 사용자가 리스팅내 포함물을 위해 이미지를 업로드(upload)할 수 있는 하나 이상의 이미징 애플리케이션(237)을 포함할 수 있다. 또한 이미징 애플리케이션(237)은 보여지는 리스팅내에 이미지를 병합하도록 동작한다. 이미징 애플리케이션(237)은 또한 잠재 구매자들에게 제시되는 이미지 갤러리와 같은 하나 이상의 프로모션 특징을 지원할 수 있다. 예를 들면 판매자는 프로모션 항목에 대한 이미지 갤러리내 포함된 이미지를 가지기 위해 추가 요금을 지불할 수 있다.
리스팅 생성 애플리케이션(239)은 판매자가 네트워크기반 시장(203)을 통해 거래하기를 원하는 상품 또는 서비스에 관한 리스팅을 편리하게 저작할 수 있게 해주는 반면에, 리스팅 관리 애플리케이션(241)은 판매자가 이러한 리스팅을 관리할 수 있게 해준다. 특히 특정한 판매자가 상당 수의 리스팅을 저작 및/또는 공시할 시, 이러한 리스팅의 관리는 도전을 제시할 수 있다. 리스팅 관리 애플리케이션(241)은 이러한 리스팅을 관리시에 판매자를 지원하기 위해 다수의 특징을 제공한다(예를 들면 자동-재리스팅, 재고 수준 모니터 등).
또한 하나 이상의 후-리스팅 관리 애플리케이션(post-listing management applications)(243)은 전형적으로 후-리스팅이 발생할 수 있는 다수의 활동으로써 판매자를 지원할 수 있다. 예를 들어 하나 이상의 경매 애플리케이션(223)에 의해 용이해진 경매 완료시에, 판매자를 특정 구매자에 관한 피드백을 남기기를 원할 수 있다. 이를 위하여, 후-리스팅 관리 애플리케이션(243)은 판매자로 하여금 다수 구매자에 관한 피드백을 평판 애플리케이션(229)에 편리하게 제공할 수 있도록 하나 이상의 평판 애플리케이션(229)으로 인터페이스를 제공할 수 있다.
분쟁 해결 애플리케이션(245)은 거래 당사자들 간에 발생하는 분쟁을 해결할 수 있는 메카니즘을 제공할 수 있다. 예를 들면 분쟁 해결 애플리케이션(245)은 분쟁을 해결하려고 시도시에 다수의 단계를 통해 당사자들을 안내하는 안내 절차를 제공할 수 있다. 분쟁이 안내된 절차를 통해 해결될 수 없는 경우에, 분쟁은 제3자인 중재자 또는 조정자로 확대될 수 있다.
다수의 사기 방지 애플리케이션(247)은 네트워크기반 시장(203)내 사기의 발생을 감소시키기 위하여 사기 검출 및 방지 메카니즘을 구현할 수 있다.
메시징 애플리케이션은 네트워크기반 시장(203)의 사용자에게 메시지 생성 및 전달을 책임질 수 있는데, 예를 들어 이러한 메시지로써 네트워크기반 시장(203)에서 리스팅 상태에 관해 사용자에게 충고한다(예를 들면 사용자에게 경매 과정 동안에 입찰자에게 "더 높은 값을 부르도록(outbid)" 통지하거나, 또는 사용자에게 프로모션 및 머천다이징(merchandising) 정보를 제공). 각 메시징 애플리케이션(251)은 메시지를 사용자에게 전달하기 위해 다수의 메시지 전달 네트워크 및 플랫폼 중의 임의 하나를 이용할 수 있다. 예를 들면 메시징 애플리케이션(251)은 유선 네트워크(예를 들면 인터넷), POTS(Plain Old Telephone Service), 또는 무선(예를 들면 모바일, 셀룰러, WiFi(예를 들면 802.11n, 802.11b, 802.11g, 802.11a를 포함한 IEEE 802.11 기술), 마이크로웨이브 액세스를 위한 월드와이드 상호운용성(예를 들면 WiMAX-IEEE 802.16) 네트워크를 통해 전자메일(e메일), IM(instant message), SMS(Short Message Service), 텍스트, 팩시밀리 또는 음성(예를 들어 VoIP(Voice over IP) 메시지를 전달할 수 있다.
머천다이징 애플리케이션(253)은 판매자가 네트워크기반 시장(203)을 통해 판매를 증가시킬 수 있도록 하는데 사용가능하게 만들어진 다양한 머천다이징 기능을 지원한다. 또한 머천다이징 애플리케이션(253)은 판매자에 의해 호출될 수 있는 다양한 머천다이징 특징을 동작시킬 수 있고, 판매자에 의해 사용되는 머천다이징 전략의 성공을 추적할 수 있다.
네트워크기반 시장(203) 그자체, 또는 네트워크기반 시장(203)을 통해 거래하는 하나 이상의 당사자는 하나 이상의 로열티 프로모션 애플리케이션(255)에 의해 지원되는 로열티 프로그램(loyalty programs)을 작동시킬 수 있다. 예를 들면 구매자는 특정 판매자와 설정 및/또는 체결된 거래를 위한 로열티 또는 프로모션 포인트를 벌 수 있고, 그 후에 누적된 로열티를 보완할 수 있는 보상을 제공받을 수 있다.
전술한 바와 같이, 네트워크기반 시장(203)은 분산 애플리케이션 프로그램 인터페이스 애플리케이션(73)을 더 포함할 수 있다.
데이터 구조
도 7은 데이터베이스(47)내 유지관리될 수 있으며 시장 애플리케이션(213) 및 지불 애플리케이션(215)에 의해 사용되며 이들을 지원하는 다양한 테이블(301) 및 논리 데이터베이스(303)를 도시하는 고레벨 엔티티 관계도이다. 사용자 테이블(305)은 네트워크기반 시장(203)의 등록 사용자에 대한 레코드를 포함한다. 사용자는 네트워크기반 시장(203)내 판매자, 구매자, 또는 이들 모두로서 동작할 수 있다. 일 실시예에서, 구매자는 누적된 값(예를 들면 상업 또는 독점 통화)를 가진 사용자일 수 있고, 따라서 네트워크기반 시장(203)에 의한 판매를 위해 제공되는 항목에 대한 누적 값을 교환할 수 있다.
또한 테이블(301)은 항목 테이블(307)을 포함하는데, 여기서 네트워크기반 시장(203)을 통해 거래할, 또는 거래된 상품 및 서비스에 대한 항목 레코드를 유지관리한다. 또한 항목 테이블(307)내 항목 레코드는 판매자 및 하나 이상의 실제 또는 잠재 구매자를 항목 레코드와 연관시키기 위하여 사용자 테이블(305)내 하나 이상의 사용자 레코드로 더 연결될 수 있다.
거래 테이블(309)은 항목 테이블(307)내 레코드가 존재하는 항목에 관한 각 거래(예를 들면 구매 또는 판매 거래)에 대한 레코드를 포함한다.
주문 테이블(311)은 주문과 관련된 각 주문 레코드로써 채워질 수 있다. 결국 각 주문은 거래 테이블(309)내 레코드가 존재하는 하나 이상의 거래와 관련될 수 있다.
입찰 테이블(313)내 입찰 레코드는 경매 애플리케이션(42)에 의해 지원되는 경매 방식 리스팅과 함께 네트워크기반 시장(203)에 수신된 입찰에 관한 것이다. 피드백 테이블(315)은 일 실시예에서 사용자에 관한 평판 정보를 구성하고 유지관리하기 위하여 하나 이상의 평판 애플리케이션(229)에 의해 이용될 수 있다. 히스토리 테이블(317)은 사용자가 당사자였던 거래 히스토리를 유지관리하는데 사용될 수 있다. 하나 이상의 속성 테이블(319)은 항목 테이블(307)내 레코드가 존재하는 항목에 관한 속성 정보를 기록한다. 이러한 속성의 단지 하나의 예를 고려하면, 속성 테이블(319)은 판매자에 의해 명시된 바와 같이 적절한 항목에 대한 가격 통화를 확인하는 통화 속성을 가지는, 특정 항목과 관련된 통화 속성을 나타낼 수 있다.
검색 테이블(321)은 특정 유형의 리스팅을 찾고 있는 사용자(예를 들면 구매자)에 의해 입력되었던 검색 정보를 저장할 수 있다. 스캐터 개더 논리 데이터베이스(21)가 전술한 바와 같이 더 사용될 수 있다.
작동 방법
도 8은 실시예에 따라서 애플리케이션 프로그램 인터페이스에 수신된 요청을 처리하기 위한 방법(401)를 도시하는 흐름도이다. 도 8의 좌측에 도시된 것은 클라이언트 머신(5)에서 수행되는 동작이다. 중앙에 도시된 것은 애플리케이션 프로그래밍 인터페이스 서버(13)(예를 들면 서버 머신)에서 수행되는 동작이다. 우측에 도시된 것은 처리 노드(26)(예를 들면 서버 머신)에서 수행되는 동작이다. 중간 우측에 도시된 동작은 스캐터 개더 프레임워크(79)에 의해 수행되며, 우측에 도시된 동작은 작업 모듈(83)에 의해 수행된다.
방법(401)은 동작(403)에서 시작하는데, 여기서 클라이언트 머신(5)은 작업(19)을 포함한 요청을 API 서버(13)로 전달한다. 일 실시예에서, 작업(19)은 클라이언트 머신(5)으로부터 리스팅 정보를 검색함으로써 네트워크기반 시장(203)상에 리스팅을 추가하는 요청을 포함할 수 있다.
동작(405)에서, API 서버(13)는 요청을 수신하고 작업 테이블(35)에 작업을 저장하고, 작업 이벤트(37)를 생성하여 이 작업 이벤트(37)를 작업 큐(25)상에 저장한다.
동작(407)에서는 처리 노드(26)에서, 제어기 모듈(85)이 작업(19)을 처리하는데 충분한 로컬 자원을 사용할 수 있는지를 확인할 수 있다. 예를 들면 실시예에 따라서, 제어기 모듈(85)은 작업(19)을 처리하는데 적절한 수의 프로세서(75) 및 메모리(77)를 사용할 수 있다고 결정할 수 있다. 다음, 제어기 모듈(85)은 작업 실행기(87)를 호출할 수 있다.
동작(409)에서, 작업 실행기(87)는 작업(19)에서 작업 유형을 기반으로 작업 전처리 프로세서(93)를 호출할 수 있고, 동작(411)에서, 작업 전처리 프로세서(93)는 작업(19)을 사전 처리할 수 있다. 예를 들면 작업 전처리 프로세서(93)는 작업(19)이 네트워크기반 시장(203)에 리스팅을 추가하기 위한 요청을 포함하는 것을 확인하고, 요청하는 사용자가 네트워크기반 시장(203)에서 계정을 가지는 지의 여부를 확인하려 할 수 있다. 예를 들어 작업 전처리 프로세서(93)는 사용자 테이블(305)에서 사용자를 조사하는 것을 요청할 수 있다. 동작(413)에서, 작업 실행기(87)는 작업 파서(95)를 호출할 수 있다. 동작(415)에서, 작업 파서(95)는 작업(19)을, 태스크(39)를 포함한 서브작업(20)으로 분석한다. 일 실시예에서, 작업 파서(95)는 작업(19)을 분석하고, 리스팅을 수신하려 하는 네트워크기반 시장(203)상의 범주에 따라 적절한 태스크(39)와 함께 서브작업(20)을 생성할 수 있다. 예를 들면 작업(19)은 10개의 리스팅을 장난감 범주에 추가하려는 한다는 것을 명시할 수 있는데, 다섯 리스팅은 도서 범주에 추가되고, 세 리스팅은 IPod 범주에 추가하려 한다. 따라서 작업 파서(95)는 장난감, 도서 및 IPod 범주에 대해 유사한 태스크(39)를 각각 포함한 세 서브작업(20)을 생성할 수 있다. 예를 들면 각 서브작업(20)은 클라이언트 머신(5)으로부터 적절한 범주에 추가할 리스팅에 대하여 리스팅 데이터를 검색하기 위한 태스크(39), 그리고 클라이언트 머신(5)으로부터 리스팅 데이터를 수신하는 것에 응답하여 적절한 범주에 리스팅을 추가하기 위한 태스크를 포함할 수 있다.
보다 상세히 후술하는 바와 같이, 동작(419)에서, 서브작업(20)을 처리하는데 적절한 로컬 및 원격 자원(41)을 사용할 수 있는 경우에, 스케줄러(89)는 서브작업 큐(27)상의 서브작업 이벤트(51), 및/또는 서브작업 재시도 큐(53)상의 서브작업 이벤트(51)를 스케줄링할 수 있다.
동작(421)에서, 동일 또는 상이한 처리 노드(26)에서 서브작업 실행기(91)는 서브작업 큐(27) 또는 서브작업 재시도 큐(53)로부터 서브작업 이벤트(51)를 검색할 수 있고, 대응한 작업(19)에서 작업 유형을 기반으로 적절한 태스크 프로세서(99)를 호출할 수 있다. 동작(421)은 병렬로 다중 처리 노드(26)에 의해 수행될 수 있다는 것을 알 것이다. 처리 노드(26)는 작업(19)과 관련된 모든 서브작업 이벤트(51)를 완료할 때까지 서브작업 이벤트(51)를 계속 처리할 수 있다. 동작(423)에서, 태스크 프로세서(99)는 서브작업(20)에서 태스크(39)를 실행할 수 있다. 본 예에서, 동작(425)로 대시선으로 도시된 바와 같이, 태스크 프로세서(99)는 클라이언트 머신(5)으로부터 리스팅 데이터를 요청시에 API 서버 자원풀(45)로부터 API 서버(13)를 이용하는 태스크(39)를 실행할 수 있고, 여기서 클라이언트 머신(5)은 리스팅 데이터에 대한 요청을 수신한다. 요청에 응답하여, 클라이언트 머신(5)은 처리 노드(26)상에서 태스크 프로세서(99)로 리스팅 데이터를 전달할 수 있다. 더욱이 동작(423)에서, 태스크 프로세서(99)는 네트워크기반 시장(203)상에서 항목 테이블(307)로 리스팅을 추가하기 위해 데이터베이스 서버 자원풀(43)에서 데이터베이스 서버를 이용하는 태스크를 실행할 수 있다. 동작(427)에서, 작업 실행기(87)는 작업(19)과 관련된 모든 서브작업(20)이 완료되는 것을 결정하고 작업 후처리 프로세서(97)를 호출한다. 동작(429)에서, 작업 후-프로세서(97)는 서브작업(20)의 각각으로부터의 태스크 결과를 수집하고, 작업 결과를 클라이언트 머신(5)으로 전달할 수 있다.
동작(431)에서, 클라이언트 머신(5)은 작업 결과를 수신할 수 있다. 예를 들면 작업 결과는 리스팅 추가 요청이 성공적이였는지, 또는 요청이 실패했는지의 여부를 나타내는 작업 결과 정보를 포함할 수 있다.
전술한 예는 중단없이 완료까지 처리되는 작업(19)에 관한 것이다. 그럼에도 불구하고, 당업자는 작업(19)이 로컬 자원(71)의 부족, 또는 소정 다른 이유로 중단되었을 수도 있다는 것을 알 것이다. 이러한 경우, 전술한 바와 같이, 작업 이벤트는 작업 재시도 큐(29)로 이동될 수 있고, 타임아웃을 설정할 수 있어 종료시 작업(19)의 후속 처리가 이어진다.
도 9a는 실시예에 따라서 병렬 처리를 위해 상이한 우선순위의 서브작업(20)을 스케줄링하기 위한 방법(451)을 도시하는 흐름도이다. 방법(451)은 도 8의 동작(419)에 대응한다. 방법(451)은 스케줄러(89)가 높은 우선순위를 가진 서브작업(20)을 스케줄링하려고 하는 동작(453)을 시작한다. 예를 들면 스케줄러(89)는 특정 서브작업(20)에 대해 원격 자원(41)을 사용할 수 있는 지의 여부를 확인하려고 할 수 있는데, 이에 대해서는 더 후술될 것이다. 전술한 바와 같이, 원격 자원(41)이 사용가능한 경우, 스케줄러(89)는 서브작업 큐(27)상에 서브작업 이벤트(15)를 저장할 수 있다. 동작(455)에서, 스케줄러(89)는 중간 우선순위를 가진 서브작업(20)을 스케줄링하려고 하고, 동작(457)에서, 스케줄러(89)는 낮은 우선순위를 가진 서브작업(20)을 스케줄링하려고 한다.
도 9b는 실시예에 따라서 병렬 처리를 위해 동일한 우선순위의 서브작업(20)을 스케줄링하기 위한 방법(475)을 도시하는 흐름도이다. 방법(475)은 도 9a상의 동작(453, 455 또는 457)의 각각에 대응한다. 방법(475)은 스케줄러(89)가 서브작업(20)을 실행하는데 필요한 로컬 자원(71)을 확인하는 동작(477)에서 시작한다. 일 실시예에서, 서브작업에 대한 로컬 자원(71)의 양은 대응한 작업(20)에 대한 작업 정보(63)에 의해 결정될 수 있다. 동작(479)에서, 스케줄러(89)는 서브작업(20)을 처리하는데 현재 이용되는 로컬 자원(71)의 양을 확인한다. 예를 들면 서브작업(20)을 처리하는데 현재 이용되는 로컬 자원(71)은 현 이용 정보(110)에서 확인될 수 있다. 동작(481)에서, 스케줄러(89)는 서브작업(20)을 처리하는데 이용될 수 있는 로컬 자원(71)의 최대 이용을 확인할 수 있다. 예를 들면 로컬 자원(71)의 최대 이용은 최대 이용 정보(112)에서 확인될 수 있다. 결정 동작(483)에서, 스케줄러(89)는 서브작업(20)을 실행하는데 필요한 로컬 자원(71), 서브작업(200을 처리하는데 현재 이용되는 로컬 자원(71), 그리고 서브작업(20)을 처리하기 위한 로컬 자원(71)의 최대 이용을 기반으로 서브작업(20)을 스케줄링하도록 조건부로 결정될 수 있다. 예를 들면 스케줄러(89)는 서브작업(20)을 스케줄링하면 현 이용을 로컬 자원(71)의 최대 수용가능한 이용보다 작은 양으로 올릴 수 있다는 것을 확인할 수 있다. 스케줄러(89)가 서브작업(20)을 처리하기 위한 충분한 용량이 있다고 결정한다면, 분기는 동작(485)로 이루어진다. 그렇지 않다면, 분기는 동작(495)으로 이루어진다.
동작(485)에서, 스케줄러(89)는 서브작업(20)이 충분한 원격 자원(41)을 사용할 수 있는 지의 여부를 확인한다.
동작(485)에서, 스케줄러(89)는 서브작업(20)을 실행하는데 요구되는 원격 자원(41)을 확인한다. 일 실시예에서, 서브작업(20)을 위한 원격 자원(41)의 양은 대응 작업(20)에 대한 작업 정보(63)를 통해 결정될 수 있다. 동작(487)에서, 스케줄러(89)는 서브작업(20)을 처리하는데 현재 사용되고 있는 원격 자원(41)의 양을 확인한다. 예를 들면 서브작업(20)을 처리하는데 현재 이용되고 있는 원격 자원(41)은 현 이용 정보(111)에서 확인될 수 있다. 동작(489)에서, 스케줄러(89)는 서브작업(20)을 처리하는데 이용될 수 있는 원격 자원(41)의 최대 이용을 확인할 수 있다. 예를 들면 원격 자원(41)의 최대 이용은 최대 이용 정보(113)에서 확인될 수 있다. 결정 동작(491)에서, 스케줄러(89)는 서브작업(20)을 실행하는데 필요한 원격 자원(41), 서브작업(20)을 처리하는데 현재 이용되는 원격 자원(41), 그리고 서브작업(20)을 처리하기 위한 원격 자원(41)의 최대 이용을 기반으로 서브작업(20)을 스케줄링하도록 결정될 수 있다. 예를 들면 스케줄러(89)는 서브작업(20)을 스케줄링하면 현 이용을 원격 자원(41)의 최대 수용가능한 이용보다 작은 양으로 올릴 수 있다는 것을 확인할 수 있다. 스케줄러(89)가 서브작업(20)을 처리하기 위한 충분한 용량이 있다고 결정한다면, 분기는 동작(493)으로 이루어진다. 그렇지 않다면, 분기는 동작(495)으로 이루어진다.
동작(493)에서, 스케줄러(89)는 서브작업(20)을 스케줄링한다. 예를 들면 서브작업(20)은 서브작업 큐(27)로 이동하고, 작업(19)은 작업 큐(25)로 이동하고, 처리는 종료된다.
동작(495)에서, 스케줄러(89)는 작업(19)을 작업 재시도 큐(29)로, 서브작업(20)을 서브작업 테이블(31)로 이동시키고, 처리는 종료된다. 전술한 방법(475)은 서브작업 큐(27)에사 유사한 우선순위의 다른 서브작업(20)에 대해 반복될 수 있다.
도 10a는 실시예에 따라서 서브작업(20)을 병렬로 실행하기 위한 방법(501)를 도시하는 흐름도이다. 방법(501)은 제1 프로세서(75)에서, 태스크 프로세서(99)가 제1 복수의 리스팅을 위한 리스팅 데이터에 대한 요청을 클라이언트 머신(5)으로 전달하는 동작(503)에서 시작한다. 예를 들면 태스크 프로세서(99)는 장난감 범주에 추가할 리스팅을 위한 리스팅 데이터에 대해 클라이언트 머신(5)으로 요청을 전달할 수 있다. 동작(505)에서, 제1 프로세서(75)는 제1 복수의 리스팅(예를 들면 장남감 범주에 추가할 리스팅)을 위한 리스팅 데이터를 수신할 수 있다. 동작(507)에서, 제1 프로세서(75)는 네트워크기반 시장(203)으로 제1 복수의 리스팅을 자동으로 추가할 수 있다. 예를 들면 제1 프로세서(75)는 장난감 범주에 복수의 제1 리스팅을 추가할 수 있다.
동작(509)에서, 제2 프로세서(75)에서, 태스크 프로세서(99)는 제2 복수의 리스팅을 위한 리스팅 데이터 요청을 클라이언트 머신(5)으로 전달한다. 제2 프로세서(75)는 제1 프로세서(75)와 동일한 처리 노드(26)상에 위치하는 것으로 도시되지만, 당업자는 제2 프로세서(75)가 상이한 처리 노드(26)상에 위치할 수 있다는 것을 알 것이다. 예를 들면 태스크 프로세서(99)는 도서 범주에 추가할 리스팅을 위한 리스팅 데이터에 대한 요청을 전달할 수 있다. 동작(511)에서, 제2 프로세서(75)는 제2 복수의 리스팅(예를 들면 도서 범주에 추가할 리스팅)을 위한 리스팅 데이터를 수신할 수 있다. 동작(513)에서, 제2 프로세서(75)는 네트워크기반 시장(203)으로 제2 복수의 리스팅을 자동으로 추가할 수 있다. 예를 들면 제2 프로세서(75)는 도서 범주에 제2 복수의 리스팅을 추가할 수 있다.
도 10b는 실시예에 따라서 서브작업을 병렬로 실행하기 위한 방법(521)을 도시하는 흐름도이다. 방법(521)은 제1 프로세서(75)에서, 태스크 프로세서(99)가 제1 복수의 리스팅을 위한 거래 데이터(transaction data)를 클라이언트 머신(5)으로 전달하는 동작(523)에서 시작한다. 예를 들면 태스크 프로세서(99)는 특정 사용자와 관련된 장난감 범주에서 리스팅에 대해 거래 형태로 거래 데이터를 전달할 수 있고, 서브작업(20)을 종료된다.
동작(525)에서, 제2 프로세서(75)에서 태스크 프로세서(99)는 제2 복수의 리스팅에 대한 거래 데이터를 클라이언트 머신(5)으로 전달한다. 예를 들면 태스크 프로세서(99)는 특정 사용자와 관련된 도서 범주에서 리스팅에 대한 거래의 형태로 거래 데이터를 전달할 수 있고, 서브작업(20)은 종료된다.
도 11은 실시예에 따라서 순환 작업(recurring job)(19)을 활성화 또는 중지시키기 위한 사용자 인터페이스(531)를 도시하는 도면이다. 사용자 인터페이스(531)는 주기적으로 실행되는 순환 작업(19)을 활성화 또는 중지시키는데 사용될 수 있다. 사용자 인터페이스(531)는 디스플레이, 활성화 및 중지를 위해 순환 작업(19)을 확인하기 위한 검색 매개변수의 형태로 사용자 인터페이스 요소(533, 535, 541)를 포함한다. 사용자 인터페이스 요소(533)는 작업 모듈(81)을 수신하는데 사용될 수 있다. 예를 들면 모니터 머신(monitor machine)(22)을 작동시키는 사용자는 풀다운 메뉴로부터 작업 모듈(81)을 선택할 수 있다. 사용자 인터페이스 요소(535)는 "활성화" 또는 "중지된" 작업 상태를 수신하는데 사용될 수 있다. 따라서 "활성화된" 작업(19)은 "중지될 수" 있고, 이의 역도 가능하다. 사용자 인터페이스 요소(537)는 확인된 처리 노드(26)를 수신하는데 사용될 수 있고, 이로써 지정된 처리 노드(26)로 작업에 대한 검색을 제한한다. 일 실시예에서, 사용자 인터페이스 요소(537)는 "모든" 처리 노드(26)에 대한 식별자를 수신하는데 사용될 수 있다. 사용자 인터페이스 요소(539)는 전술한 검색 매개변수를 제출하기 위해 선택될 수 있다. 사용자 인터페이스 요소(539)의 선택에 응답하여, 모니터 모듈(18)은 검색 매개변수를 수신하고, 통계 정보(34)에서 요청 정보를 확인하고, 그리고 디스플레이 영역(540)에서 요청 정보를 디스플레이한다.
사용자 인터페이스(531)는 순환 작업(19)을 활성화 및 중지시키기 위한 또 다른 접근방안을 제공한다. 사용자 인터페이스 요소(541)는 특정한 순환 작업(19)을 확인하기 위해 작업 식별자를 수신하는데 사용될 수 있다. 선택에 응답하여, 모니터 모듈(18)은 순환 작업(19)을 확인하고, 디스플레이 영역(540)에서 순환 작업(19)을 디스플레이할 수 있다.
디스플레이 영역(540)은 컬럼(543, 545, 547, 549, 551, 553, 557, 559)를 포함한다. 컬럼(543)은 작업(19)을 다른 작업(19)과 고유하게 식별하는 특정 작업(19)과 관련된 순환 작업 식별자를 디스플레이한다. 컬럼(545)은 전술한 바와 같이 작업 상태를 디스플레이한다. 컬럼(547)은 작업 실행을 위한 주기 유형(period type)을 디스플레이한다. 예를 들면 주기 유형은 하루, 주, 달, 격달 등과 같인 표준 시간 단위를 포함할 수 있다. 컬럼(549)은 작업 실행을 위한 주기 간격을 디스플레이한다. 주기 간격은 주기 유형 동안에 작업(19)을 개시하기 위해 특정 순간을 확인한다. 컬럼(551)은 작업(19)에 대한 시작 시간을 디스플레이할 수 있다. 컬럼(553)은 작업(19)에 대해 수집가능한 작업 정보를 디스플레이할 수 있다. 수집된 정보는 작업 모듈(81)의 저작자에 의해 정의될 수 있다. 일 실시예에서, 컬럼(553)에서 로우는 대응 작업(19)과 관련된 작업 정보를 포함한 팝업 윈도우(pop-up window)(555)를 디스플레이하도록 선택될 수 있다. 컬럼(557)은 작업(19)의 생성 날짜를 디스플레이하는데 사용될 수 있다. 컬럼(559)은 작업(19)을 사용자 인터페이스(531)상에서 마지막으로 갱신했던 날짜를 디스플레이하는데 사용될 수 있다.
도 12는 실시예에 따라서 작업(19)을 모니터링하기 위한 사용자 인터페이스(561)를 도시하는 도면이다. 사용자 인터페이스(561)는 모니터링 동안에 작업(19)을 확인하기 위한 검색 매개변수의 형태로 사용자 인터페이스 요소(563, 565, 567, 571, 573, 577)를 포함한다. 사용자 인터페이스 요소(563)는 작업 모듈(81)을 수신하는데 사용될 수 있다. 예를 들면 사용자 인터페이스(561)는 선택되는 바와 같이 "BDX" 작업 모듈(603)을 디스플레이하는 것으로 도시된다. 사용자 인터페이스 요소(565)는 작업 유형을 수신하는데 사용될 수 있다. 작업 유형은 작업 모듈(81)의 저작자에 의해 정의될 수 있다. 사용자 인터페이스 요소(567)는 작업 상태를 수신하는데 사용될 수 있다. 예를 들면 작업 상태는 "완료"와 "실패"를 포함할 수 있다. 사용자 인터페이스 요소(569)는 작업 우선순위를 수신하는데 사용될 수 있다. 예를 들면 작업 우선순위는 작업 모듈(81)의 저작자에 의해 정의될 수 있다. 일 실시예에서, 작업 우선순위는 "낮음", "중간" 및 "높음"을 포함할 수 있다. 전술한 바와 같이, 사용자 인터페이스 요소(571)는 처리 노드(26)에 대한 식별자를 수신하는데 사용될 수 있다. 사용자 인터페이스 요소(573)는 시간창(window of time)을 정의하는데 사용될 수 있다. 예를 들면 시간창 동안에 실행되는 임의 작업(19)은 사용자 인터페이스(561)상에 디스플레이될 수 있다. 사용자 인터페이스 요소(575)는 전술한 바와 같은 검색 매개변수를 제출하기 위해 선택될 수 있다. 사용자 인터페이스 요소(575)의 선택에 응답하여, 모니터 모듈(18)은 검색 매개변수를 수신하고, 통계 정보(34)에서 요청된 작업(19)을 식별하고, 그리고 디스플레이 영역(576)의 로우(rows)에서 작업(19)을 제각기 디스플레이한다.
사용자 인터페이스(561)는 특정 작업(19)에 대한 정보 디스플레이를 더 제공한다. 예를 들면 사용자 인터페이스 요소(577)는 특정 작업(19)을 식별하기 위해 스캐터 개더 작업 식별자를 수신할 수 있다. 사용자 인터페이스 요소(575)의 선택된 응답하여, 모니터 모듈(18)은 스캐터 개더 작업 식별자의 형태로 검색 매개변수를 수신하고, 통계 정보(34)에서 요청된 작업(19)을 식별하고, 작업(19)을 디스플레이 영역(576)에서 디스플레이한다.
디스플레이 영역(576)은 컬럼(579, 581, 583, 585, 587, 589, 591, 593, 595, 597, 574, 578, 580, 582, 584 및 586)을 포함한다. 컬럼(579)은 특정 작업(19)과 관련된 스캐터 개더 프레임워크 작업 식별자를 디스플레이하고 작업(19)을 다른 작업(19)과 고유하게 식별한다. 컬럼(581)은 특정 작업 모듈(83)에 의해 처리되는 다른 작업(19)으로부터 작업(19)을 고유하게 식별하는 특정 작업(19)과 관련된 작업 모듈 식별자를 디스플레이한다. 컬럼(583)은 전술한 바와 같이 작업 유형을 디스플레이한다. 컬럼(585)은 전술한 바와 같이 작업 상태를 디스플레이한다. 컬럼(587)은 전술한 바와 같이 작업 우선순위를 디스플레이한다. 컬럼(589)은 확인된 시간창 동안에 실행하기 위해 작업(19)의 마지막 태스크(39)의 태스크 식별자를 디스플레이한다. 컬럼(591)은 작업(19)을 시작한 시간을 디스플레이한다. 컬럼(593)은 작업(19)을 생성했던 날짜를 디스플레이한다. 컬럼(595)은 작업(19)의 마지막 변경 날짜 및 시간을 디스플레이한다. 컬럼(597)은 작업에 대해 SLO(service level objective)를 검색했는지의 여부를 디스플레이한다. 예를 들면 SLO는 작업(19)의 실행이 SLO를 초과했는지, 또는 떨어졌는지를 결정하기 위해 작업(19)의 실제 성능에 비해 적용할 수 있는 성능 표준을 정의할 수 있다. 컬럼(574)은 작업(19)에 대해 순환 상태를 디스플레이할 수 있다. 예를 들면 작업(19)은 순환 또는 비순환(예를 들면 한 번 실행)일 수 있다. 컬럼(578)은 작업(19)의 시작과 종료에 의해 측정된 경과 시간을 디스플레이할 수 있다. 컬럼(580)은 작업(19)에서 총 태스크의 수를 디스플레이할 수 있다. 컬럼(582)은 작업(19)에 의해 성공적으로 완료된 태스크(39)의 수를 디스플레이할 수 있다. 컬럼(584)은 작업(19)에 의해 종료되는 태스크(39)를 디스플레이할 수 있다. 컬럼(586)은 기본 이벤트에 대한 고유한 식별자를 디스플레이할 수 있다.
도 13은 실시예에 따라서 집합된 작업(aggregated jobs)(19)에 대한 통계를 모니터링하기 위한 사용자 인터페이스(601)를 도시하는 도면이다. 사용자 인터페이스(601)는 집합된 작업(19)에 대한 통계를 디스플레이하기 위해 검색 매개변수의 형태로 사용자 인터페이스 요소(603, 605, 607, 609, 613, 615)를 포함한다. 사용자 인터페이스 요소(603)는 작업 모듈(81)의 식별자를 수신하는데 사용될 수 있다. 예를 들면 사용자 인터페이스(601)는 "BDX" 작업 모듈(603)에 대한 식별자를 수신하는 것으로 도시된다. 사용자 인터페이스 요소(605)는 전술한 바와 같이 작업 유형을 수신하는데 사용될 수 있다. 사용자 인터페이스 요소(607)는 작업 우선선위를 수신하는데 사용될 수 있다. 사용자 인터페이스 요소(609)는 전술한 바와 같이 작업 상태를 수신하는 데 사용될 수 있다. 사용자 인터페이스 요소(613)는 작업 유형 및/또는 작업 우선순위 및/또는 작업 상태에 따라서 작업(19)을 그룹화하는데 사용될 수 있다. 사용자 인터페이스 요소(615)는 전술한 바와 같이 시간창을 정의하는데 선택될 수 있다. 사용자 인터페이스 요소(617)의 선택에 응답하여, 모니터 모듈(18)은 검색 매개변수를 수신하고, 통계 정보(34)에서 작업(19) 집합체(aggregate of jobs)를 확인하고, 디스플레이 영역(619)에서 작업(19) 집합에 대한 요청 정보를 디스플레이한다.
디스플레이 영역(619)은 컬럼(621, 623, 625, 627, 631, 633, 635, 637, 639, 641, 643, 645)을 포함한다. 컬럼(621, 623, 625)은 "BDX" 작업 모듈(83)에 의해 제각기 처리되는 작업 유형, 작업 우선순위 및 작업 상태에 따라 작업(19) 집합체를 종합적으로 확인한다. 컬럼(627)은 표시된 작업(19) 집계체에 대해 작업(19)의 카운트를 디스플레이할 수 있다. 컬럼(629)은 표시된 작업(19) 집합체에 대해 순환 작업(19)의 카운트를 디스플레이할 수 있다. 컬럼(631, 633, 635)은 전술한 바와 같이 표시된 작업(19) 집합체에 대해 태스크 카운트를 제각기 디스플레이할 수 있다. 컬럼(637)은 표시된 작업(19) 집합체에 작업(19)의 실행 동안에 경과한 최소 시간을 디스플레이할 수 있다. 컬럼(639)은 표시된 작업(19) 집합체에 작업(19)의 실행 동안에 경과한 최대 시간을 디스플레이할 수 있다. 컬럼(641)은 작업(19) 집합체에 대해 계산된 바와 같이 작업(19)의 실행 동안에 경과한 평균 시간을 디스플레이할 수 있다. 컬럼(643)은 표시된 작업(19) 집합체에 특정 작업(19)에 대한 최대 SLO(service level objective)를 디스플레이할 수 있고, 컬럼(645)은 작업(19)의 집합체에 대한 평균 SLO를 디스플레이할 수 있다.
도 14는 실시예에 따라서 집합된 작업(19)에 대한 통계를 모니터링하기 위한 사용자 인터페이스(651)를 도시하는 도면이다. 사용자 인터페이스(651)는 컬럼(653, 655, 657, 659, 661, 663, 665, 667, 669, 671, 673, 675, 677, 679, 681, 683, 685)를 포함한다. 컬럼(653, 655, 657, 659, 661)은 작업 모듈(81), 사용자명, 작업 유형, 작업 우선순위 및 작업 상태의 각각에 따라서 특정한 작업(19) 집합체를 종합적으로 확인할 수 있다. 컬럼(655)은 표시된 작업(19) 집합체를 생성한 사용자의 사용자명을 디스플레이할 수 있다. 컬럼(663)은 표시된 작업(19) 집합체를 위한 작업(19)의 카운트를 디스플레이할 수 있다. 컬럼(665)은 표시된 작업(19) 집합체에 대한 순환 작업(19)의 카운트를 디스플레이할 수 있다. 컬럼(667)은 표시된 작업(19) 집합체에 대한 평균 SLO를 디스플레이할 수 있다. 컬럼(669)은 작업(19)이 SLO를 놓친 수를 디스플레이할 수 있다. 컬럼(671)은 표시된 작업(19) 집합체에 대한 평균 완료 시간을 디스플레이할 수 있다. 컬럼(673, 675)은 최대 및 최소 작업(19) 완료 시간을 제각기 디스플레이할 수 있다. 컬럼(677)은 표시된 작업(19) 집합체에 대한 평균 태스크 카운트를 디스플레이할 수 있다. 컬럼(679, 681)의 각각은 특정 작업(19)에 대응한 최대 및 최소 태스크 카운트를 디스플레이할 수 있다. 컬럼(683)은 작업 손실 CLO의 평균 시간을 디스플레이할 수 있다. 컬럼(685)은 작업(19)이 SLO를 놓친 최대 시간을 디스플레이할 수 있다.
도 15는 실시예에 따라서 집합된 태스크에 대한 통계를 모니터링하기 위한 사용자 인터페이스(689)를 도시하는 도면이다. 사용자 인터페이스(689)는 컬럼(691, 693, 694, 695, 696, 697, 698, 699)를 포함한다. 컬럼(691, 693, 694, 695)은 원격 자원(41), 경매, 태스크 상태 및 이유 코드의 각각에 따라서 특정한 태스크(39) 집합체를 종합적으로 확인한다. 컬럼(696)은 태스크 집합체에서 태스크(39)의 카운트를 디스플레이할 수 있다. 컬럼(697)은 태스크 집합체에 대해 원격 자원(41)을 액세스하기 위한 평균 응답 시간을 디스플레이할 수 있다. 컬럼(698, 699)은 제각기 원격 자원(41)을 액세스하기 위해 특정 태스크(39)에 대한 최대 및 최소 작업(19) 응답 시간을 디스플레이할 수 있다.
도 16은 실시예에 따라서 작업(19)과 관련된 서브작업(20)을 모니터링하기 위한 사용자 인터페이스(701)를 도시하는 도면이다. 사용자 인터페이스(701)는 디스플레이하기 위한 통계 정보(34)를 확인하기 위한 검색 매개변수의 형태로 사용자 인터페이스 요소(703, 705, 707, 709)를 포함할 수 있다. 사용자 인터페이스 요소(703)는 특정 작업(19)을 확인하기 위해 스캐터 개더 작업 식별자를 수신할 수 있다. 예를 들면 모니터 머신(22)을 작동시키는 사용자는 스캐터 개더 작업 식별자를 입력할 수 있다. 다른 실시예에서, 사용자 인터페이스 요소(703)는 도 12에 도시된 바와 같이 사용자 인터페이스(561)상의 컬럼(579)으로부터 미리 선택된 스캐터 개더 작업 식별자를 수신할 수 있다. 사용자 인터페이스 요소(705)는 서브작업 상태를 수신하는데 사용될 수 있다. 일 실시예에서, 서브작업 상태는 "생성", "스케줄링" 및 "완료"를 포함할 수 있다. 사용자 인터페이스 요소(707)는 서브작업(20)을 식별하는 서브작업 식별자를 수신하는데 사용될 수 있다. 사용자 인터페이스 요소(709)는 전술한 검색 매개변수를 제출하도록 선택될 수 있다. 사용자 인터페이스 요소(709)의 선택에 응답하여, 모니터 모듈(18)은 검색 매개변수를 수신하고, 통계 정보(34)에서 요청 정보를 확인하고, 디스플레이 영역(710)에서 요청된 정보를 디스플레이한다.
디스플레이 영역(710)은 컬럼(711, 713, 715, 717, 719, 721, 723, 725, 727, 729, 731)을 포함한다. 컬럼(711)은 확인된 작업(19)과 관련된 서브작업(20)에 대한 서브작업 식별자를 디스플레이할 수 있다. 서브작업(20) 식별자중의 임의 식별자를 선택하게 되면 선택된 서브작업(20)에 대한 태스크로써 사용자 인터페이스를 디스플레이할 수 있는데, 이는 더 후술된다. 컬럼(713)은 전술한 바와 같이 서브작업 상태를 디스플레이하는데 사용될 수 있다. 컬럼(715)은 자원명을 디스플레이할 수 있다. 컬럼(717)은 서브작업(20)을 생성했던 날짜를 디스플레이하는데 사용될 수 있다. 컬럼(719)은 서브작업(20)의 마지막 변경 날짜 및 시간을 디스플레이하는데 사용될 수 있다. 컬럼(721)은 자원에 대한 로컬 총 비용을 디스플레이할 수 있다. 컬럼(723)은 자원에 대한 원격 총 비용을 디스플레이할 수 있다. 컬럼(725)은 자원에 대한 로컬 현 비용을 디스플레이하는데 사용될 수 있다. 컬럼(727)은 자원에 대한 원격 현 비용을 디스플레이하는데 사용될 수 있다. 컬럼(729)은 호출 GUID(invocation global user identifier)를 디스플레이하는데 사용될 수 있다. 컬럼(731)은 선택가능한 사용자 인터페이스 요소를 디스플레이하는데 사용될 수 있다.
도 17은 실시예에 따라서 서브작업(20)과 관련된 태스크(39)를 모니터링하기 위한 사용자 인터페이스(751)를 도시하는 도면이다. 사용자 인터페이스(751)는 디스플레이하기 위한 태스크(39)를 확인하기 위해 검사 매개변수의 형태로 사용자 인터페이스 요소(753, 755, 757, 759)를 포함할 수 있다. 사용자 인터페이스 요소(753)는 특정 작업(19)을 확인하기 위해 스캐터 개더 작업 식별자를 수신할 수 있다. 예를 들면 모니터 머신(22)를 작동시키는 사용자는 특정 작업(19)을 확인하기 위해 스캐터 개더 작업 식별자를 입력할 수 있다. 사용자 인터페이스 요소(755)는 특정 서브작업(20)을 확인하기 위해 스캐터 개더 서브작업 식별자를 수신할 수 있다. 예를 들면 모니터 머신(22)을 작동시키는 사용자는 스캐터 개더 서브작업 식별자를 입력할 수 있다. 다른 실시예에서, 사용자 인터페이스 요소(753)는 스캐터 개더 작업 식별자를 자동으로 수신할 수 있고, 사용자 인터페이스 요소(755)는 사용자 인터페이스(701)상의 컬럼(711)으로부터 미리 선택한 스캐터 개더 서브작업 식별자의 선택을 기반으로 스캐터 개더 서브작업 식별자를 자동으로 수신할 수 있는데, 이는 도 16에 도시된다. 사용자 인터페이스 요소(757)는 태스크 상태를 수신하는데 사용될 수 있다. 일 실시예에서, 태스크 상태는 "초기", "생성", "스케줄링", "완료", "실패" 및 "무효"를 포함할 수 있다. 사용자 인터페이스 요소(759)는 특정 태스크(39)를 식별하기 위해 태스크 식별자를 수신하는데 사용될 수 있다. 사용자 인터페이스 요소(761)는 전술한 검색 매개변수를 제출하는데 선택될 수 있다. 모니터 모듈(18)은 사용자 인터페이스 요소(761)의 선택에 응답하여, 검색 매개변수를 수신하고, 통계 정보(34)에서 태스크(39)를 위한 요청 정보를 확인하고, 디스플레이 영역(763)에서 요청 정보를 디스플레이할 수 있다.
디스플레이 영역(763)은 컬럼(765, 767, 769, 771, 773, 775, 777, 779, 781, 783)을 포함할 수 있다. 컬럼(765)은 식별된 작업(19)과 관련된 서브작업(20)에 대한 태스크 식별자를 디스플레이하는데 사용될 수 있다. 컬럼(767)은 전술한 바와 같이 태스크 상태를 디스플레이하는데 사용될 수 있다. 컬럼(769)은 경매 이름(예를 들면 원격 자원 41로 행한 경매 이름)을 디스플레이하는데 사용될 수 있다. 컬럼(771)은 태스크(39)에 의해 실행되는 재시도의 수를 나타내는 재시도 카운트를 디스플레이하는데 사용될 수 있다. 컬럼(773)은 순서 식별자를 디스플레이할 수 있다. 예를 들면 작업(19)에서 태스크는 각 태스크를 확인하기 위해 1 내지 100으로 순서화될 수 있다. 컬럼(775)은 태스크를 생성했던 날짜를 디스플레이할 수 있다. 컬럼(777)은 태스크(39)를 마지막으로 변경했던 날짜 및 시간을 디스플레이할 수 있다. 컬럼(779)은 머신(예를 들면 처리 노드 26)을 기술하는 정보/태스크상에 작업하는 쓰레드(thread)를 포함한 사용자 인터페이스를 디스플레이하는데 선택될 수 있는 사용자 인터페이스 요소를 디스플레이할 수 있다. 컬럼(781)은 요청을 디스플레이할 수 있고, 컬럼(783)은 응답을 디스플레이할 수 있다. 요청/응답 필드는 요청 및 응답과 관련된 값을 저장하도록 애플리케이션의 사용자에 의해 맞춤화될 수 있다.
도 18은 실시예에 따라서 태스크(39)상에서 작업한 머신(예를 들면 처리 노드 26)/쓰레드를 디스플레이하기 위한 사용자 인터페이스(780)를 도시하는 도면이다. 사용자 인터페이스(781)은 컬럼(782, 785, 787, 789, 791, 793, 797)을 포함한다. 컬럼(782)은 태스크(39)를 처리했던 프로세스를 확인하는 프로세스 식별자를 디스플레이할 수 있다. 컬럼(785)은 태스크(39)를 포함한 서브작업(20)과 관련된 작업(19)을 식별하는 스캐터 개더 작업 식별자를 디스플레이할 수 있다. 컬럼(787)은 태스크(39)를 실행했던 처리 노드(26)를 식별하는 머신 식별자를 디스플레이할 수 있다. 컬럼(789)은 태스크(39)를 처리했던 쓰레드를 식별하는 쓰레드 식별자를 디스플레이할 수 있다. 컬럼(791)은 쓰레드를 생성했던 날짜를 디스플레이할 수 있다. 컬럼(793)은 쓰레드의 마지막 변경 날짜 및 시간을 디스플레이할 수 있다. 컬럼(795)은 보다 충분히 후술되는 바와 같이 태스크(39)에 대해 발생되는 로깅(logging)을 디스플레이하도록 선택될 수 있는 사용자 인터페이스 요소를 디스플레이할 수 있다. 컬럼(797)은 분할 키(partition key)를 디스플레이할 수 있다. 예를 들면 분할 키는 데이터베이스 테이블 분할값을 저장할 수 있다. 동일한 시간 주기 동안에 생성된 레코드는 동일한 분할 값 및 정의된 보유 기간(retention period)에 따라서 추가될 수 있다. 일 실시예에 따라서, 보유 기간이 만료되면 분할에서 레코드가 데이터베이스 저장소의 효율적인 사용을 보장하기 위해 소거(purge)될 수 있다.
도 19는 실시예에 따라서 태스크(39)상에 작업한 머신(예를 들면 처리 노드 26)/쓰레드의 로그를 디스플레이하기 위한 사용자 인터페이스(799)를 도시하는 도면이다. 사용자 인터페이스(799)는 도 18에서 사용자 인터페이스(781)상의 컬럼(795)으로부터 사용자 인터페이스 요소를 선택함으로써 디스플레이될 수 있다. 사용자 인터페이스(799)는 연대순으로 식별되는 다중 로그 엔트리(multiple log entries)를 포함하고, 다양한 정보를 포함하는 것으로 도시된다.
전술한 사용자 인터페이스는 디스플레이를 위한 사용자 인터페이스 요소 및 컬럼을 포함하는 것으로 도시된다. 그러나 당업자는 사용자 인터페이스가 또한 머신 인터페이스 요소를 포함한 머신 인터페이스(예를 들면 SGML-Standard Generalized Markup Language), 오디오 인터페이스 요소를 포함한 오디오 인터페이스, 키네틱 인터페이스(kinetic interface) 요소를 포함한 키네틱 인터페이스, 또는 소정 다른 유형의 인터페이스 요소를 사용하는 소정의 다른 유형의 인터페이스로서 구현될 수 있다는 것을 알 것이다.
소정 실시예에서, 여기에 기술한 방법은 3층 구조 패러다임하에서 설계된 분산 또는 비분산 소프트웨어 애플리케이션으로 구현될 수 있고, 이로써 이 방법을 구현하는 컴퓨터 코드의 다양한 구성요소는 이들 세 층 중의 하나 이상에 속하는 것으로 범주화될 수 있다. 소정 실시예는 비교적 애플리케이션 처리에 관계없는 인터페이스으로서 제1 층(예를 들면 인터페이스 층)을 포함할 수 있다. 또한 제2 층은 인터페이스 레벨을 통해 입력된 데이터의 논리/수리적 조작의 형태로 애플리케이션 처리를 수행하고, 이들 논리/수리적 조작의 결과를 인터페이스 층 및/또는 후미로, 또는 저장층으로 전달하는 논리층일 수 있다. 이들 논리/수리적 조작은 소프트웨어 애플리케이션을 전체로서 제어하는 일정 비지니스 규칙 또는 프로세스에 관한 것이다. 제3 저장층은 영구 저장매체 또는 비영구 저장매체일 수 있다. 소정 경우, 하나 이상의 이들 층은 또 다른 층으로 붕괴되어 결과적으로 2 층 구조이거나, 또는 심지어 1 층 구조일 수 있다. 예를 들면 내장 데이터베이스를 가진 소프트웨어 애플리케이션의 경우에서와 같이, 인터페이스 및 논리 층은 통합될 수 있거나, 또는 논리 및 저장 층이 통합될 수 있다. 이 3 층 구조는 일 기술, 또는 후술하는 바와 같이 다양한 기술을 사용하여 구현될 수 있다. 이 3 층 구조와 이를 구현시키는 기술은 서버-클라이언트, P2P 또는 소정 다른 적당한 구성으로 조직된 둘 이상의 컴퓨터 시스템상에 실행될 수 있다. 더욱이, 이들 3층은 다양한 소프트웨어 구성요소로서 복수의 컴퓨터 시스템들 간에 분산될 수 있다.
소정 실시예는 위에서 도시한 층, 그리고 하나 이상의 소프트웨어 구성요소로서 기록되는 바와 같이 그들을 구성하는 프로세스 또는 동작을 포함할 수 있다. 이들 구성요소의 다수에 공통적인 것은 데이터를 생성하고, 사용하고, 조작할 수 있는 능력이다. 이들 구성요소 및 이들 각각과 관련된 기능성은 클라이언트 또는 피어(peer) 컴퓨터 시스템에 의해 사용될 수 있다. 이들 다양한 구성요소는 필요 원리로 컴퓨터 시스템에 의해 구현될 수 있다. 이들 구성요소는 객체지향 컴퓨터 언어로 쓰여질 수 있으므로, 구성요소 지향 또는 객체지향 프로그래밍 기법은 VCL(Visual Component Library), CLX(Component Library for Cross Platform), JB(Java Beans), EJB(Java Enterprise Beans), COM(Component Object model), DCOM(Distributed Component Object Model), 또는 다른 적당한 기법을 사용하여 구현될 수 있다. 이들 구성요소는 다양한 API를 통해 다른 구성요소로 연결될 수 있고, 그 후에 일 완료 서버, 클라이언트 및/또는 피어 소프트웨어 애플리케이션으로 컴파일링될 수 있다. 더욱이 이들 API는 분산 컴퓨팅 구성요소로서 다양한 분산 프로그래밍 프로토콜을 통해 통신할 수 있다.
소정 실시예는 분산 컴퓨팅 구성요소로서 분산 프로그래밍 환경을 통해 전술한 하나 이상의 구성요소를 구현하는데 사용되는 원격 절차 호출을 포함할 수 있다. 예를 들면 인터페이스 구성요소(예를 들면 인터페이스층)는 논리 구성요소(예를 들면 논리층)를 포함한 제2 컴퓨터 시스템으로부터 멀리 위치한 제1 컴퓨터 시스템상에 상주할 수 있다. 이들 제1 및 제2 컴퓨터 시스템은 서버-클라이언트, P2P 또는 소정 다른 적당한 구성으로 구성될 수 있다. 이들 다양한 구성요소는 전술한 객체지향 프로그래밍 기법을 사용하여 기록될 수 있고, 동일한 프로그래밍 언어 또는 상이한 프로그래밍 언어로 기록될 수 있다. 다양한 프로토콜을 구현함으로써, 이들 다양한 구성요소는 이들 구성요소를 기록하는데 사용되는 프로그래밍 언어에 관계없이 통신할 수 있다. 예를 들면 C++로 기록된 구성요소는 CORBA(Common Object Request Broker Architecture), SOAP(Simple Object Access Protocol), 또는 소정의 다른 적당한 프로토콜과 같은 분산 컴퓨팅 프로토콜을 사용함으로써 자바 프로그래밍 언어로 기록된 다른 구성요소와 통신할 수 있다. 소정 실시예는 데이터 전송을 위해 네트워크에 의해 사용되는 프로토콜을 정의하기 위한 OSI(Open Systems Interconnection) 모델, 또는 TCP/IP(Transport Control Protocol/Internet Protocol) 프로토콜 스택 모델로 개시된 다양한 프로토콜을 가진 하나 이상의 이들 프로토콜을 사용하는 것을 포함할 수 있다.
소정 실시예는 데이터를 전송하기 위해 네트워크에 의해 사용되는 프로토콜을 정의하기 위한 OSI 모델 또는 TCP/IP 프로토콜 스택 모델을 이용할 수 있다. 이들 모델을 적용시에, 서버와 클라이언트 간 또는 피어 컴퓨터 시스템들 간의 데이터 전송 시스템은 애플리케이션층, 전송층, 네트워크층, 데이터 링크층 및 물리층을 포함한 일련의 대략 5 층으로 도시된다. 3층 구조를 가진 소프트웨어의 경우, 다양한 층(예를 들면 인터페이스, 논리 및 저장 층)은 TCP/IP 프로토콜 스택의 애플리케이션층에 상주한다. TCP/IP 프로토콜 스택 모델을 사용하는 구현 예에서, 애플리케이션층에 상주하는 애플리케이션으로부터의 데이터는 전송층에 상주하는 TCP 세그먼트의 데이터 로드 필드로 로딩된다. 또한 이 TCP 세그먼트는 멀리 상주하는 수신자 소프트웨어 애플리케이션을 위한 포트 정보를 포함한다. 이 TCP 세그먼트는 네트워크층에 상주하는 IP 데이터그램의 데이터 로드 필드로 로딩된다. 다음, 이 IP 데이터그램은 데이터 링크층에 상주하는 프레임으로 로딩된다. 그 후, 이 프레임은 물리층에서 인코딩되고, 데이터는 인터넷, LAN(Local Area Network), WAN 또는 소정 다른 적당한 네트워크와 같은 네트워크를 통해 전송된다. 소정 경우, 인터넷은 네트워크들의 한 네트워크를 언급한다. 이들 네트워크는 전술한 TCP/IP, 부가적으로 ATM(asynchronous transfer mode), SAN(system network architecture), SDI 또는 소정 다른 적당한 프로토콜을 포함하는, 데이터 교환을 위한 다양한 프로토콜을 사용할 수 있다. 이들 네트워크는 다양한 위상(예를 들면 성형 토폴로지(star topology)) 또는 구조내에서 구성될 수 있다.
도 20은 머신이 여기에 거론된 임의 하나 이상의 방법론을 수행하도록 인스트럭션 집합을 실행할 수 있는 컴퓨터 시스템(800)의 형태 예인 머신을 나타내는 도식도이다. 다른 실시예에서, 머신은 자립형 장치로서 동작하거나, 또는 다른 머신으로 연결될 수 있다(예를 들면 네트워크화). 네트워크 전개에서, 머신은 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 머신의 능력에서 동작하거나, 또는 P2P(또는 분산) 네트워크 환경에서 피어 머신으로서 동작할 수 있다. 머신은 서버 컴퓨터, 클라이언트 컴퓨터, 퍼스널 컴퓨터(PC), 태블릿 PC, STB(set-top box), PDA, 셀룰러 전화, 웹 어플라이언스, 네트워크 라우터, 스위치 또는 브리지, 또는 머신에 의해 취해진 동작을 명시하는 인스트럭션 집합(순차 또는 그외)을 실행할 수 있는 임의 머신일 수 있다. 또한 단일 머신을 도시하였지만, 용어 "머신"은 여기에 거론한 하나 이상의 임의 방법론을 수행하기 위해 인스트럭션 집합(또는 다중 집합)을 개별적으로 또는 결합하여 실행하는 임의 머신 콜렉션을 포함하려는 것이다.
예시의 컴퓨터 시스템(800)은 하나 이상의 프로세서(802)(예를 들면 CPU(central processing unit), GPU(graphics processing unit), 또는 이들 모두), 주 메모리(804) 및 정적 메모리(806)을 포함하는데, 이들은 버스(808)을 통해 서로 통신한다. 컴퓨터 시스템(800)은 비디오 디스플레이 유닛(810)(예를 들면 LCD(liquid crystal display) 또는 CRT(cathod ray tube))을 더 포함할 수 있다. 또한 컴퓨터 시스템(800)은 입력 장치(812)(예를 들면 키보드), 커서 제어 장치(814)(예를 들면 마우스), 디스크 드라이브 유닛(816), 단일 발생 장치(818)(예를 들면 스피커) 및 네트워크 인터페이스 장치(820)를 포함한다.
디스크 드라이브 유닛(816)은 여기에 기술한 하나 이상의 임의 방법론 또는 기능을 구현하는 하나 이상의 인스트럭션 집합(예를 들면 소프트웨어)(824)을 저장한 머신 판독가능 매체(822)를 포함한다. 또한 인스트럭션(824)은 컴퓨터 시스템(800)의 실행 동안에 주 메모리(804), 정적 메모리(806) 및/또는 프로세서내에서 완전히 또는 적어도 부분적으로 상주할 수 있다. 주 메모리(804) 및 프로세서(802)는 또한 머신 판독가능 매체를 구성할 수 있다. 게다가 인스트럭션(824)은 네트워크 인터페이스 장치(820)를 거쳐 네트워크(826)를 통해 전송 또는 수신될 수 있다.
다양한 실시예의 장치 및 시스템을 포함할 수 있는 애플리케이션은 넓게는 다양한 전자 및 컴퓨터 시스템을 포함한다. 소정 실시예는 모듈들 간에 및 이들을 통해 전달되는 관련 제어 및 데이터 신호와, 둘 이상의 특정 상호연결된 하드웨어 모듈 또는 장치에서 기능을 구현하거나, 또는 애플리케이션 특정적 집적회로의 일부로서 기능을 구현한다. 따라서 시스템 예는 소프트웨어, 펌웨어 및 하드웨어 구현에 적용될 수 있다. 실시예에서, 애플리케이션에 의해 구성된 컴퓨터 시스템(예를 들면 자립형, 클라이언트 또는 서버 컴퓨터 시스템)은 여기에 기술되는 바와 같이 소정 동작을 수행하기 위해 구성 및 동작하는 "모듈"을 구성할 수 있다. 다른 실시예에서, "모듈"은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들면 모듈은 소정 동작을 수행하기 위해 (예를 들어 특정목적 프로세서내에서) 영구히 구성된 전용 회로 또는 논리부를 구비할 수 있다. 또한 모듈은 소정 동작을 수행하기 위해 소프트웨어에 의해 일시적으로 구성된 (예를 들어 범용 프로세서 또는 다른 프로그램가능 프로세서내에 포함되는) 프로그램가능 논리부 또는 회로를 구비할 수 있다. 전용 및 영구히 구성된 회로에서, 또는 임시 구성된 회로(예를 들면 소프트웨어에 의한 구성된 회로)에서 모듈을 기계적으로 구현하기 위한 결정은 비용 및 시간 고려사항에 의해 도출될 수 있다는 것을 알 것이다. 따라서 용어 "모듈"은 유형 엔티티, 여기에 기술된 소정 동작을 수행하기 위해 및/또는 소정 방식으로 동작하기 위해 물리적으로 구성된, 영구히 구성된(예를 들면 하드와이어) 또는 일시적으로 구성된(예를 들면 프로그램화된) 엔티티일 수 있다는 것을 알아야 한다.
머신 판독가능 매체(822)는 실시예에서 단일 매체로 도시되었지만, 용어 "머신 판독가능 매체"는 하나 이상의 인스트럭션 집합을 저장하는 단일 매체 또는 다중 매체(예를 들면 집중 또는 분산된 데이터베이스, 및/또는 캐시 및 서버)를 포함하는 것으로 알아야 한다. 또한 용어 "머신 판독가능 매체"는 머신에 의한 실행을 위해 인스트럭션 집합을 저장, 인코딩 또는 운송할 수 있으며, 그리고 머신으로 하여금 본 개시물의 하나 이상의 임의 방법론을 수행하게 하는 임의 매체를 포함하려는 것이다. 따라서 용어 "머신 판독가능 매체"는 고체상태 메모리, 광 매체 및 자기 매체를 포함하지만 이로 제한되지 않는다. 언급한 바와 같이, 소프트웨어는 전송 매체를 사용하여 네트워크를 통해 전송될 수 있다. 용어 "전송 매체"는 머신으로의 전송 및 머신에 의한 실행을 위해 인스트럭션을 저장, 인코딩 또는 운송할 수 있는 임의 매체를 포함하려 하며, 디지털 또는 아날로그 통신 신호, 또는 이러한 소프트웨어의 전송 및 통신을 용이하게 하기 위한 무형 매체를 포함한다.
여기에 기술한 실시예의 설명은 다양한 실시예의 구조의 일반적 이해를 제공하려는 것이며, 여기에 기술된 구조를 사용하는 장치 및 시스템의 모든 요소 및 특징을 완벽히 설명하려는 것이 아니다. 당업자는 전술한 설명을 검토하여 다수의 다른 실시예를 명백히 알 것이다. 이로부터 다른 실시예를 도출 및 이용함으로써, 본 개시물의 범주를 벗어나지 않으면서 구조적 및 논리적 대체 및 변경을 행할 수 있다. 여기에 제공된 도면은 단순히 표현한 것이며 스케일에 맞게 도시된 것이 아니다. 이의 소정 부분은 과장될 수 있으며, 반면에 다른 것들은 축소될 수 있다. 따라서 명세 및 도면은 제한의 의미 보다는 설명을 위한 것으로 간주한다.
따라서 애플리케이션 프로그램 인터페이스에 수신된 요청을 처리하기 위한 시스템 및 방법을 개시한다. 본 개시물은 몇몇 실시예라는 점에서 기술하였지만, 당업자는 본 개시물이 기술한 실시예로 제한되지 않으며 첨부된 청구범위의 사상 및 범주내에서 변형 및 변경되어 실행될 수 있다는 것을 알 것이다. 따라서 여기의 설명은 제한이 아닌 설명을 위한 것으로 간주한다.

Claims (24)

  1. 데이터와 관련된 작업(job)을 포함한 요청(request)을 클라이언트 머신(client machine)으로부터 네트워크를 통해 수신하기 위한 애플리케이션 프로그램 인터페이스 모듈(application program interface module) - 상기 요청은 애플리케이션 프로그램 인터페이스에 수신됨 - 과,
    상기 작업을 기반으로 복수의 서브작업(sub-jobs)을 생성하기 위한 처리 노드의 P2P(peer-to-peer) 네트워크 - 상기 복수의 서브작업은 제각기 상기 데이터의 일부에 대응하는 적어도 하나의 태스크(task)를 포함하고, 상기 처리 노드의 P2P 네트워크는 상기 서브작업에 의해 제각기 이용되는 자원의 이용가능성에 기반한 병렬 처리를 위해 상기 복수의 서브작업을 스케줄링(schedule)하고, 상기 복수의 서브작업을 병렬로 처리하고, 상기 복수의 서브작업과 제각기 관련된 태스크 결과를 생성함 - 와,
    데이터베이스 서버풀(a pool of database servers) - 상기 처리 노드의 P2P 네트워크는 상기 데이터베이스 서버풀과 관련된 피크 부하(peak load)에 기반하여 스케줄링되는 다수의 서브작업(a number of sub-jobs)을 제한하고, 상기 데이터베이스 서버풀과 관련된 상기 피크 부하는 상기 P2P 네트워크 외의 엔티티에 의한 상기 데이터베이스 서버의 이용에 의해 발생됨 - 을 포함하는
    요청 처리 시스템.
  2. 제1항에 있어서,
    상기 작업은 네트워크기반 시장(network-based marketplace)에 리스팅(listing)을 추가하는데 이용되고,
    상기 처리 노드의 P2P 네트워크는 제1 복수의 리스팅을 위한 리스팅 데이터와 관련된 제1 서브작업에 기반하여 리스팅 데이터에 대한 제1 요청을 상기 클라이언트 머신으로 전달하고, 제2 복수의 리스팅을 위한 리스팅 데이터와 관련된 제2 서브작업에 기반하여 리스팅 데이터에 대한 제2 요청을 상기 클라이언트 머신으로 전달하고, 또한 상기 제1 복수의 리스팅 및 상기 제2 복수의 리스팅을 상기 네트워크기반 시장에 자동으로 추가하는
    요청 처리 시스템.
  3. 제1항에 있어서,
    상기 시스템은 네트워크기반 시장을 포함하고, 상기 작업은 상기 네트워크기반 시장으로부터 상기 클라이언트 머신으로 거래 데이터(transaction data)를 전달하는데 이용되고, 상기 처리 노드의 P2P 네트워크는 제1 복수의 거래를 위한 상기 거래 데이터를 상기 클라이언트 머신으로 전달하고 제2 복수의 거래를 위한 상기 거래 데이터를 상기 클라이언트 머신으로 전달하는
    요청 처리 시스템.
  4. 제1항에 있어서,
    상기 자원은 로컬 자원(local resources)을 포함하고, 상기 처리 노드의 P2P 네트워크는 상기 서브작업에 의해 이용되는 로컬 자원의 이용가능성에 기반하여 상기 복수의 서브작업을 스케줄링하는
    요청 처리 시스템.
  5. 제1항에 있어서,
    상기 자원은 원격 자원(remote resources)을 포함하고, 상기 처리 노드의 P2P 네트워크는 상기 서브작업에 의해 이용되는 원격 자원의 이용가능성에 기반하여 상기 복수의 서브작업을 스케줄링하는
    요청 처리 시스템.
  6. 제1항에 있어서,
    상기 처리 노드의 P2P 네트워크는 상기 작업의 우선순위를 계산하는
    요청 처리 시스템.
  7. 삭제
  8. 삭제
  9. 제1항에 있어서,
    상기 처리 노드의 P2P 네트워크는 액세스할 수 없는 데이터베이스 서버를 확인(identify)하고, 상기 데이터베이스 서버에 대한 액세스를 재시도하는
    요청 처리 시스템.
  10. 제1항에 있어서,
    상기 처리 노드의 P2P 네트워크는 태스크 결과를 작업 결과 내로 수집(gather)하는
    요청 처리 시스템.
  11. 데이터와 관련된 작업을 포함한 요청을 클라이언트 머신으로부터 네트워크를 통해 수신하는 단계 - 상기 요청은 애플리케이션 프로그램 인터페이스에 수신됨 - 와,
    상기 작업에 기반한 복수의 서브작업을 생성하는 단계 - 상기 복수의 서브작업은 제각기 상기 데이터의 일부에 대응한 적어도 하나의 태스크를 포함하고 상기 생성 단계는 처리 노드의 P2P 네트워크 내의 하나의 처리 노드에 의해 수행됨 - 와,
    상기 서브작업에 의해 제각기 이용되는 자원의 이용가능성에 기반한 병렬 처리를 위해 상기 복수의 서브작업을 스케줄링하는 단계 - 상기 자원은 데이터베이스 서버풀을 포함하고, 상기 스케줄링하는 단계는 상기 데이터베이스 서버풀과 관련된 피크 부하를 식별하는 것에 응답하여 스케줄링되는 다수의 서브작업을 제한하는 단계를 포함하고, 상기 데이터베이스 서버풀과 관련된 상기 피크 부하는 상기 P2P 네트워크 외의 상기 데이터베이스 서버풀을 이용하는 엔티티에 의한 상기 데이터베이스 서버의 이용에 의해 발생되고, 상기 스케줄링하는 단계는 상기 처리 노드의 P2P 네트워크 내의 하나의 처리 노드에 의해 수행됨 - 와,
    상기 복수의 서브작업과 제각기 관련된 태스크 결과를 생성하기 위한 복수의 프로세서를 사용하여 상기 서브작업을 병렬 처리하는 단계 - 상기 병렬 처리하는 단계는 상기 처리 노드의 P2P 네트워크 내의 적어도 하나의 처리 노드에 의해 수행됨 - 를 포함하는
    요청 처리 방법.
  12. 제11항에 있어서,
    상기 작업은 네트워크기반 시장에 리스팅을 추가하는데 이용되고,
    상기 방법은,
    제1 복수의 리스팅을 위한 리스팅 데이터와 관련된 제1 서브작업에 기반하여 리스팅 데이터에 대한 제1 요청을 상기 네트워크기반 시장으로부터 상기 클라이언트 머신으로 전달하는 단계와,
    제2 복수의 리스팅을 위한 리스팅 데이터와 관련된 제2 서브작업에 기반하여 리스팅 데이터에 대한 제2 요청을 상기 네트워크기반 시장으로부터 상기 클라이언트 머신으로 전달하는 단계와,
    상기 제1 복수의 리스팅 및 상기 제2 복수의 리스팅을 상기 네트워크기반 시장으로 자동 추가하는 단계를 더 포함하는
    요청 처리 방법.
  13. 제11항에 있어서,
    상기 작업은 네트워크기반 시장으로부터 거래 데이터를 검색하는데 이용되고, 상기 요청 수신 단계는 거래 데이터를 검색하기 위한 요청을 수신하는 단계를 포함하고, 상기 작업과 관련된 서브작업은 제1 복수의 거래를 위한 거래 데이터를 검색하기 위한 제1 서브작업, 그리고 제2 복수의 거래를 위한 거래 데이터를 검색하기 위한 제2 서브작업을 포함하고,
    상기 서브작업을 병렬 처리하는 단계는,
    상기 제1 복수의 거래를 위한 거래 데이터를 상기 클라이언트 머신으로 전달하는 단계와,
    상기 제2 복수의 거래를 위한 거래 데이터를 상기 클라이언트 머신으로 전달하는 단계를 포함하는
    요청 처리 방법.
  14. 제11항에 있어서,
    상기 P2P 네트워크의 처리 및 저장 용량을 증가시키기 위해 상기 처리 노드의 P2P 네트워크에 노드를 추가하는 단계를 더 포함하는
    요청 처리 방법.
  15. 제11항에 있어서,
    상기 P2P 네트워크의 처리 및 저장 용량을 감소시키기 위하여 상기 처리 노드의 P2P 네트워크로부터 노드를 제거하는 단계를 더 포함하는
    요청 처리 방법.
  16. 제11항에 있어서,
    상기 자원은 로컬 자원을 포함하고, 상기 복수의 서브작업의 스케줄링은 상기 서브작업에 의해 이용되는 로컬 자원의 이용가능성에 기반하는
    요청 처리 방법.
  17. 제11항에 있어서,
    상기 자원은 원격 자원을 포함하고, 상기 복수의 서브작업의 스케줄링은 상기 서브작업에 의해 이용되는 원격 자원의 이용가능성에 기반하는
    요청 처리 방법.
  18. 제11항에 있어서,
    상기 복수의 서브작업을 스케줄링하기에 앞서 상기 작업의 우선순위를 계산하는 단계를 더 포함하고, 상기 복수의 서브작업의 스케줄링은 상기 작업의 우선순위에 기반하는
    요청 처리 방법.

  19. 삭제
  20. 삭제
  21. 제11항에 있어서,
    액세스할 수 없는 데이터베이스 서버풀을 확인하고, 상기 확인에 응답하여 상기 데이터베이스 서버풀에 대한 액세스를 재시도하는 단계를 더 포함하는
    요청 처리 방법.
  22. 제11항에 있어서,
    태스크 결과를 작업 결과 내로 수집하는 단계를 더 포함하고, 상기 수집 단계는 상기 처리 노드의 P2P 네트워크 내의 하나의 처리 노드에 의해 수행되는
    요청 처리 방법.
  23. 데이터와 관련된 작업을 포함한 요청을 클라이언트 머신으로부터 네트워크를 통해 - 상기 요청은 애플리케이션 프로그램 인터페이스에 수신됨 - 수신하기 위한 수단과,
    상기 작업에 기반한 복수의 서브작업을 생성하기 위한 처리 노드의 P2P 네트워크 - 상기 복수의 서브작업은 제각기 상기 데이터의 일부에 대응하는 적어도 하나의 태스크를 포함하고, 상기 처리 노드의 P2P 네트워크는 상기 서브작업에 의해 제각기 이용되는 자원의 이용가능성에 기반한 병렬 처리를 위해 상기 복수의 서브작업을 스케줄링하고, 상기 서브작업과 제각기 관련된 태스크 결과를 생성하기 위해 상기 서브작업을 병렬 처리함 - 와,
    데이터베이스 서버풀 - 상기 자원은 상기 데이터베이스 서버풀을 포함하고, 상기 처리 노드의 P2P 네트워크는 상기 데이터베이스 서버풀과 관련된 피크 부하에 기반하여 스케줄링되는 다수의 서브작업을 제한함 - 을 포함하는
    요청 처리 시스템.
  24. 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로세서로 하여금 다음 동작(actions)을 수행하게 하는 인스트럭션을 저장하는 컴퓨터 판독가능 매체에 있어서, 상기 동작은,
    데이터와 관련된 작업을 포함한 요청을 클라이언트 머신으로부터 네트워크를 통해 수신하고 - 상기 요청은 애플리케이션 프로그램 인터페이스에 수신됨 - ,
    상기 작업에 기반하여, 제각기 상기 데이터의 일부에 대응한 적어도 하나의 태스크를 포함하는 복수의 서브작업을 생성하고,
    상기 서브작업에 의해 제각기 이용되는 자원의 이용가능성에 기반한 병렬 처리를 위해 상기 복수의 서브작업을 스케줄링하고 - 상기 자원은 데이터베이스 서버풀을 포함하고, 상기 복수의 서브작업을 스케줄링하는 것은 상기 데이터베이스 서버풀과 관련된 피크 부하의 식별에 응답하여 스케줄링되는 다수의 서브작업의 제한을 포함함 - ,
    상기 서브작업과 제각기 관련된 태스크 결과를 생성하기 위한 복수의 프로세서를 사용하여 상기 서브작업을 병렬 처리하는 것을 포함하는
    컴퓨터 판독가능 매체.
KR1020127011931A 2009-10-08 2010-09-01 요청 처리 시스템 및 방법과 머신 판독가능 매체 KR101422372B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/576,097 US9043401B2 (en) 2009-10-08 2009-10-08 Systems and methods to process a request received at an application program interface
US12/576,097 2009-10-08
PCT/US2010/047569 WO2011043883A1 (en) 2009-10-08 2010-09-01 Systems and methods to process a request received at an application program interface

Publications (2)

Publication Number Publication Date
KR20120068966A KR20120068966A (ko) 2012-06-27
KR101422372B1 true KR101422372B1 (ko) 2014-07-22

Family

ID=43855677

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127011931A KR101422372B1 (ko) 2009-10-08 2010-09-01 요청 처리 시스템 및 방법과 머신 판독가능 매체

Country Status (7)

Country Link
US (2) US9043401B2 (ko)
EP (1) EP2486722B1 (ko)
KR (1) KR101422372B1 (ko)
CN (1) CN102783129B (ko)
BR (1) BR112012011569A2 (ko)
RU (1) RU2534953C2 (ko)
WO (1) WO2011043883A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9794334B2 (en) 2009-10-08 2017-10-17 Paypal, Inc. Systems and methods to process a request received at an application program interface

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110093493A1 (en) 2008-10-28 2011-04-21 Honeywell International Inc. Building management system site categories
JP5361659B2 (ja) * 2009-10-27 2013-12-04 キヤノン株式会社 情報処理システム、情報処理システム制御方法、およびそのプログラム
US8745639B2 (en) * 2009-12-31 2014-06-03 Cbs Interactive Inc. Controller and method to build a combined web page using data retrieved from multiple APIS
US20110196539A1 (en) * 2010-02-10 2011-08-11 Honeywell International Inc. Multi-site controller batch update system
US8965966B2 (en) * 2010-12-15 2015-02-24 Sap Se System and method for logging a scheduler
US9111326B1 (en) 2010-12-21 2015-08-18 Rawles Llc Designation of zones of interest within an augmented reality environment
US8905551B1 (en) 2010-12-23 2014-12-09 Rawles Llc Unpowered augmented reality projection accessory display device
US9134593B1 (en) 2010-12-23 2015-09-15 Amazon Technologies, Inc. Generation and modulation of non-visible structured light for augmented reality projection system
US8845110B1 (en) 2010-12-23 2014-09-30 Rawles Llc Powered augmented reality projection accessory display device
US8845107B1 (en) 2010-12-23 2014-09-30 Rawles Llc Characterization of a scene with structured light
US9721386B1 (en) * 2010-12-27 2017-08-01 Amazon Technologies, Inc. Integrated augmented reality environment
US9607315B1 (en) 2010-12-30 2017-03-28 Amazon Technologies, Inc. Complementing operation of display devices in an augmented reality environment
US9508194B1 (en) 2010-12-30 2016-11-29 Amazon Technologies, Inc. Utilizing content output devices in an augmented reality environment
JP5887942B2 (ja) * 2011-02-15 2016-03-16 株式会社リコー 情報処理装置、情報処理システム、情報処理方法およびプログラム
US9118782B1 (en) 2011-09-19 2015-08-25 Amazon Technologies, Inc. Optical interference mitigation
WO2013117225A1 (en) * 2012-02-09 2013-08-15 Telefonaktiebolaget L M Ericsson (Publ) Distributed mechanism for minimizing resource consumption
US9223839B2 (en) 2012-02-22 2015-12-29 Honeywell International Inc. Supervisor history view wizard
EP2828761A4 (en) * 2012-03-23 2015-12-02 Infosys Ltd METHOD AND SYSTEM FOR DISTRIBUTING CALCULATION OF JOBS
US20130328887A1 (en) * 2012-06-08 2013-12-12 Joshua H. Shaffer Methods and systems for hosting a portion of a user interface and synchronizing animation between processes
US9529349B2 (en) 2012-10-22 2016-12-27 Honeywell International Inc. Supervisor user management system
US10783568B1 (en) 2013-03-15 2020-09-22 Poshmark, Inc. Social merchandising system
US10055777B1 (en) * 2013-03-15 2018-08-21 Poshmark, Inc. Real-time user generated virtual shopping parties
US10248987B1 (en) 2013-03-15 2019-04-02 Poshmark, Inc. Using digital item tracking to drive e-commerce
US10754834B1 (en) * 2013-06-15 2020-08-25 Veritas Technologies Llc System and method for operational continuity of backup operations to a deduplicated storage
EP2863307A1 (en) * 2013-06-19 2015-04-22 Hitachi Data Systems Engineering UK Limited Decentralized distributed computing system
US9401953B2 (en) 2013-10-09 2016-07-26 At&T Intellectual Property I, L.P. Intelligent high-volume cloud application programming interface request caching
US9021296B1 (en) 2013-10-18 2015-04-28 Hitachi Data Systems Engineering UK Limited Independent data integrity and redundancy recovery in a storage system
US9971977B2 (en) 2013-10-21 2018-05-15 Honeywell International Inc. Opus enterprise report system
US20150121374A1 (en) * 2013-10-30 2015-04-30 Alistair Black Application Processing Systems and Methods
US20150271044A1 (en) * 2014-03-24 2015-09-24 International Business Machines Corporation Browser response optimization
WO2015149830A1 (en) 2014-03-31 2015-10-08 Huawei Technologies Co., Ltd. Event processing system
US9933762B2 (en) 2014-07-09 2018-04-03 Honeywell International Inc. Multisite version and upgrade management system
CN104618126A (zh) * 2014-09-26 2015-05-13 成都映真广告有限公司 户外led大屏的广告的计费系统及计费方法
CN105450618B (zh) * 2014-09-26 2019-06-04 Tcl集团股份有限公司 一种api服务器处理大数据的运算方法及其系统
WO2016122658A1 (en) * 2015-01-30 2016-08-04 Hewlett Packard Enterprise Development Lp Request processing
RU2609089C2 (ru) * 2015-02-24 2017-01-30 Общество С Ограниченной Ответственностью "Яндекс" Система и способ выполнения очереди запросов в отношении цифровых объектов
US10209689B2 (en) 2015-09-23 2019-02-19 Honeywell International Inc. Supervisor history service import manager
US10362104B2 (en) 2015-09-23 2019-07-23 Honeywell International Inc. Data manager
US10503562B2 (en) * 2015-12-17 2019-12-10 Ab Initio Technology Llc Processing data using dynamic partitioning
JP6698177B2 (ja) 2016-05-17 2020-05-27 アビニシオ テクノロジー エルエルシー 再構成可能な分散処理
RU2642371C1 (ru) * 2016-11-06 2018-01-24 Илья Владимирович Редкокашин Способ распределения заказов
US10778781B2 (en) * 2017-05-10 2020-09-15 Microsoft Technology Licensing, Llc Contention management in communication networks
RU2649797C1 (ru) * 2017-06-14 2018-04-04 Общество С Ограниченной Ответственностью "Центр Разработки И Внедрения Инновационных Технологий" Интерактивная система, способ и считываемый компьютером носитель данных представления рекламного контента
CN110881223B (zh) * 2017-09-29 2022-04-29 华为技术有限公司 调度请求的处理方法和终端设备
KR102045125B1 (ko) * 2017-11-17 2019-11-14 전자부품연구원 분산환경에서의 cda 프로토콜을 활용한 자원할당방법 및 이를 적용한 기록매체 및 분산처리장치
RU2673388C1 (ru) * 2017-12-26 2018-11-26 Илья Владимирович Редкокашин Способ распределения заказов
RU2018110169A (ru) * 2018-03-22 2018-06-14 Илья Владимирович Редкокашин Способ распределения заказов
CN108776862B (zh) * 2018-05-02 2021-08-10 华南理工大学 支持工序任务量拆分的智能排产方法
US11412041B2 (en) 2018-06-25 2022-08-09 International Business Machines Corporation Automatic intervention of global coordinator
US11265227B2 (en) * 2019-12-26 2022-03-01 Paypal, Inc. System and method for dynamic time estimates
US11443320B2 (en) 2020-01-07 2022-09-13 Bank Of America Corporation Intelligent systems for identifying transactions associated with an institution impacted by an event using a dashboard
US11238459B2 (en) 2020-01-07 2022-02-01 Bank Of America Corporation Intelligent systems for identifying transactions associated with an institution impacted by an event
CN111343436B (zh) * 2020-03-26 2022-04-19 中国铁道科学研究院集团有限公司电子计算技术研究所 基于云边协同的轨道交通视频监控方法及系统
CN113468214B (zh) * 2020-03-30 2022-04-29 阿里巴巴集团控股有限公司 数据库访问控制方法、装置、电子设备及可读存储介质
CN113806029A (zh) * 2020-06-16 2021-12-17 北京达佳互联信息技术有限公司 任务处理方法、装置、服务器及存储介质
CN112685158B (zh) * 2020-12-29 2023-08-04 杭州海康威视数字技术股份有限公司 一种任务调度方法、装置、电子设备及存储介质
CN113395358B (zh) * 2021-08-16 2021-11-05 贝壳找房(北京)科技有限公司 网络请求的执行方法与执行系统
US20230076061A1 (en) * 2021-09-07 2023-03-09 Hewlett Packard Enterprise Development Lp Cascaded priority mapping

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090109959A1 (en) * 1996-11-18 2009-04-30 Mci Communications Corporation System and method for providing requested quality of service in a hybrid network
JP2009151645A (ja) * 2007-12-21 2009-07-09 Mitsubishi Electric Corp 並列処理装置及びプログラム並列化装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5170481A (en) * 1989-06-19 1992-12-08 International Business Machines Corporation Microprocessor hold and lock circuitry
US8078727B2 (en) * 1998-10-09 2011-12-13 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US8538843B2 (en) * 2000-07-17 2013-09-17 Galactic Computing Corporation Bvi/Bc Method and system for operating an E-commerce service provider
US7581033B2 (en) * 2003-12-05 2009-08-25 Unisys Corporation Intelligent network interface card (NIC) optimizations
US7650331B1 (en) * 2004-06-18 2010-01-19 Google Inc. System and method for efficient large-scale data processing
CA2622404A1 (en) 2004-09-15 2006-03-23 Adesso Systems, Inc. System and method for managing data in a distributed computer system
US7403945B2 (en) * 2004-11-01 2008-07-22 Sybase, Inc. Distributed database system providing data and space management methodology
BRPI0517993B8 (pt) * 2004-11-03 2019-07-30 Samsung Electronics Co Ltd método e sistema para transmitir informação de capacidade de memória provisória de solicitação de repetição automática híbrida por uma estação móvel em um sistema de comunicação de acesso sem fio de banda larga
US7562035B2 (en) * 2005-01-12 2009-07-14 International Business Machines Corporation Automating responses by grid providers to bid requests indicating criteria for a grid job
US7779421B2 (en) * 2005-06-30 2010-08-17 Ebay Inc. Business event processing
US8595313B2 (en) * 2005-11-29 2013-11-26 Netapp. Inc. Systems and method for simple scale-out storage clusters
US20070143827A1 (en) 2005-12-21 2007-06-21 Fiberlink Methods and systems for intelligently controlling access to computing resources
US8589249B2 (en) * 2006-02-28 2013-11-19 Esnipe, Inc. Dynamic load adjustment for online auction bidding
CN100571206C (zh) * 2006-06-19 2009-12-16 上海贝尔阿尔卡特股份有限公司 混合组网中基站系统及其呼叫建立、切换和释放处理方法
JP2008077428A (ja) 2006-09-21 2008-04-03 Fujitsu Ltd 負荷分散装置、負荷分散方法及び負荷分散プログラム
US8401921B2 (en) * 2006-09-21 2013-03-19 Alejandro Backer Seller-driven method for a bid set system
CN100547973C (zh) 2007-05-23 2009-10-07 华中科技大学 一种基于对等网络的高性能计算系统
US20100153950A1 (en) * 2008-12-17 2010-06-17 Vmware, Inc. Policy management to initiate an automated action on a desktop source
US8301798B2 (en) * 2009-06-12 2012-10-30 Barclays Captial Inc. System and method for processing large amounts of transactional data
CN101923551B (zh) * 2009-06-12 2015-06-03 Sap欧洲公司 信息值驱动的接近实时的决策支持
US9043401B2 (en) 2009-10-08 2015-05-26 Ebay Inc. Systems and methods to process a request received at an application program interface

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090109959A1 (en) * 1996-11-18 2009-04-30 Mci Communications Corporation System and method for providing requested quality of service in a hybrid network
JP2009151645A (ja) * 2007-12-21 2009-07-09 Mitsubishi Electric Corp 並列処理装置及びプログラム並列化装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9794334B2 (en) 2009-10-08 2017-10-17 Paypal, Inc. Systems and methods to process a request received at an application program interface

Also Published As

Publication number Publication date
CN102783129A (zh) 2012-11-14
CN102783129B (zh) 2015-04-22
US20150215397A1 (en) 2015-07-30
RU2534953C2 (ru) 2014-12-10
WO2011043883A1 (en) 2011-04-14
US9794334B2 (en) 2017-10-17
EP2486722B1 (en) 2019-08-28
EP2486722A1 (en) 2012-08-15
US9043401B2 (en) 2015-05-26
KR20120068966A (ko) 2012-06-27
EP2486722A4 (en) 2015-05-06
BR112012011569A2 (pt) 2017-12-12
RU2012116596A (ru) 2013-11-20
US20110087731A1 (en) 2011-04-14

Similar Documents

Publication Publication Date Title
KR101422372B1 (ko) 요청 처리 시스템 및 방법과 머신 판독가능 매체
US11373224B2 (en) Business event processing
US10528656B2 (en) Application module for managing jobs asynchronously
US9471941B2 (en) Managing delivery of application server content
RU2433463C2 (ru) Динамическое перепозиционирование потока работ конечными пользователями
US20160117713A1 (en) Error detection and correction in complex entitlement benefits
US9904945B2 (en) Business channel synchronization
US9052941B1 (en) Automated testing of online functionality providers
JP5797847B2 (ja) ホスト型サービスイメージのためのカスタマイズ可能な一様性制御
US8898641B2 (en) Managing transactions within a middleware container
WO2011039594A1 (en) Systems and methods for controlling the content displayed on the browser of a remote user
WO2009059294A1 (en) Dynamic order fulfillment for communications, information and entertainment services
CN114846490A (zh) 量化机器人流程自动化相关资源的使用
US9589285B2 (en) Representation manipulation language
Kavanagh et al. An economic market for the brokering of time and budget guarantees

Legal Events

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

Payment date: 20170616

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190617

Year of fee payment: 6