KR20040019033A - 호스팅되는 애플리케이션을 위한 서버 자원들의 관리 - Google Patents
호스팅되는 애플리케이션을 위한 서버 자원들의 관리 Download PDFInfo
- Publication number
- KR20040019033A KR20040019033A KR10-2003-7017243A KR20037017243A KR20040019033A KR 20040019033 A KR20040019033 A KR 20040019033A KR 20037017243 A KR20037017243 A KR 20037017243A KR 20040019033 A KR20040019033 A KR 20040019033A
- Authority
- KR
- South Korea
- Prior art keywords
- requests
- users
- resource
- application
- instances
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/505—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5055—Allocation 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 software capabilities, i.e. software resources associated or available to the machine
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/53—Network services using third party service providers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/535—Tracking the activity of the user
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer And Data Communications (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Telephonic Communication Services (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
Abstract
ASP 서버팜 내에서, 애플리케이션을 사용하기 위한 요청들은, 그 애플리케이션이나 그 컴포넌트의 사용가능한 그러한 인스턴스들의 최소 부하로서 식별되는 것인 애플리케이션의 특정 실행 인스턴스(또는 그의 적절한 컴포넌트)로 지향된다. 그러한 인스턴스들의 수는 그 애플리케이션이나 컴포넌트를 위한 요청들의 수에 응답하여 동적으로 증가되거나 감소된다. 요청들은 클라이언트-기초 당 지향되거나(첫번째 측면에 따라서) 또는 인스턴스가 조절되며(두번째 측면에 따라서), 애플리케이션의 인스턴스들 및/또는 그의 컴포넌트들이 사용자의 특정 그룹 또는 사용자의 사용을 위해서 유보된다. 이러한 방식의 운영은 개별적인 사용자들 또는 사용자들의 그룹들에 대한 서비스 약속의 준수를 용이하게 한다. 인스턴스 및 사용자의 각 조합에 대해서 현재 배정된 자원과 현재 소비되는 자원의 기록이 유지되며, 애플리케이션의 인스턴스들이나 그 컴포넌트들에 의해서 서비스되는 요청들에 의해 인스턴스들에 배치되는 부하 요인들에 따른다. 전술한 구성은 애플리케이션에 대한 요청들의 예측되는 범위에 따라 사용자에 대한 서비스 약속이 구성되도록 허용하며, 이러한 예측된 범위내에서 하나 이상의 서로 다른 대역을 가지는 서비스 요청 레이트들에 대해 과금이 된다. 요청이 서비스되지 못하는 경우 벌금 레이트가 과금된다(사용자를 위해서).
Description
애플리케이션 서비스 제공자(application service provider, ASP)는 종종 서버팜(server farm)이라 칭해지는 공유 컴퓨팅 인프라스트럭쳐를 사용하여 복수의 고객[즉, 클라이언트 조직(organsation)들]을 위한 애플리케이션을 호스팅(host)한다. ASP는 규모의 경제(중복, 첨두 부하 취급, 기술적 숙련도 등)의 장점을 가지고 있고, 또한 고객들이 복잡한 정보 기술 관리보다는 핵심 경쟁력(competency)에 초점을 맞추게 하는 장점을 가지고 있다. 이러한 컴퓨팅 인프라스트럭쳐가 ASP에 의해서 소유되고 고객들 사이에서 공유되므로, ASP는 그 자원들의 사용을 개선하기 위한 충분한 기회를 가지게 되고 따라서 비용 면에서 효율적인 서비스를 제공하는 기회를 가진다.
위의 관점에서, 경제적, 기술적 및 경쟁적 이유를 위해서 ASP들을 통해서 사용자가 그들의 애플리케이션들을 아웃소싱(outsourcing)하도록 협조하기 위한 명백한 경향이 존재한다. 현재, 대부분의 ASP들은 특정 서버들이 개별적인 고객들에 전용되는(dedicated) 것인 웹 호스팅과 같은 간단한 서비스들을 제공한다. 다른 ASP들은 이러한 서비스들을 제공하는 것을 관리하는 매우 단순한 서비스 레벨 약속(Service Level Agreement, SLA)을 가지며 서버들이 상대적으로 정적인 방식으로 공유된다.
머신 사용을 개선하기 위한 현존하는 한 가지 접근법은 고객들 사이에서 전체 머신의 배정(allocation) 및 배정해제(deallocation)에 관련된 것이다. 이러한 접근법은 고객이 고객의 처분에 의해서 머신들의 수의 상한과 하한 면에서 그들의 필요를 특정하는 것을 요구하며, 이는 고객이 기술적으로 지식이 있어야 한다는 것을 암시한다. 이것은 대규모 기업 고객들에 대해서는 합리적인 제안이지만, 중소 규모 기업들에 대해서는 일반적으로 적절한 것이 아니다.
캘리포니아 서니베일에 위치한 엔심 코포레이션(Ensim Corporation)에 의해서 개선된 배열이 제안되었다. 이 제안된 배열은 머신 분할(fraction)의 개념을 사용한 애플리케이션 호스팅을 제공한다. 엔심의 해결책은 사설 서버(private server, PS)들이라 칭하는 것을 지원하는 것에 의해서 서버팜을 가로지르는 애플리케이션들의 배치(deploy)를 관리하는 것뿐만이 아니라, ASP들이 고객들 사이에 서버 자원들을 안전하게 공유하도록 허용한다. 각 PS는 물리적 서버 상에서 지원되는 임의의 재고(off-the-shelf) 애플리케이션들을 실행할 수 있다. 엔심의 시스템은 또한 고장난 PS들을 복원하기 위한 기초적 관리를 제공하며, 고객들을 PS들 및 머신들 상에서 이동시키고 PS 자원들을 수동으로(manually) 증가시킨다. 단일 콘솔로부터, ASP들은 복수의 PS들을 관리하고 제공할 수 있다. 호스팅되는 애플리케이션들은 단지 웹-호스팅 준비된 것만을 필요로 하고, 더 이상의 변경을 필요로 하지 않는다.
다양한 장점에도 불구하고, 엔심에 의해 제안된 이러한 배열은 많은 제한점을 가진다. 각 PS가 물리적 서버 자원들의 최소 사용가능성을 보증한다는 점에서 PS들은 상대적으로 정적이다. 그 결과, 엔심에 의해서 제공된 이 해결책은 여전히 그 자원들의 사용에 있어서 비효율적이다. 또한, 시스템 관리가 콘솔을 통해서 수동으로 수행되어야만 한다.
이러한 관점에서 볼 때, 기존의 기술들에 관련된 이러한 그리고 다른 문제점을 개선하기 위한 시도들을 위해서 애플리케이션을 호스팅하기 위한 개선된 해결책이 명백하게 필요하다.
본원 발명은 서드파티(third party)들에 대한 호스팅되는(hosted) 애플리케이션들에 대한 접속을 제공하는 서버 자원들을 관리하는 것에 관련한 것이고, 특히 이에 한정되지는 않지만, 애플리케이션 서비스 제공자에 의해서 운영되는 서버들의 자동화된 관리에 관련된 것이다.
도 1은 ASP 호스팅 시스템의 서로 다른 기능적 컴포넌트들의 개요도.
도 2는 도 1의 ASP 호스팅 시스템의 아키텍쳐의 개요도.
도 3은 전역 의사 결정자 컴포넌트[global decision maker component]에 의해서 진행되기 이전에, 도 1의 시스템 내에서 집합된(aggregated) 데이터 흐름들이어떻게 취급되는 가를 나타낸 개요도.
도 4는 도 1의 시스템 내에서 레벨 2a 집합자(aggregator)에 대한 알고리즘을 개요적으로 나타내는 흐름도.
도 5는 도 1의 시스템 내에서 어떻게 들어오는(incoming) 요청들이 분배되는 가를 나타낸 개요도.
도 6은 도 1의 시스템의 서로 다른 가상 부분(portion)들을 위한 부하 분배의 개요도.
도 7a 및 도 7b는 에이전트(agent) 및 집합자 각각에 대해서, 도 1의 시스템 내에서 고장 검출을 위한 알고리즘을 개요적으로 나타내는 흐름도.
도 8은 도 1의 시스템 내에서 부하 분배를 위한 알고리즘을 개요적으로 나타내는 흐름도.
도 9는 도 1의 시스템을 구현하기 위해 사용될 수 있는 예시적인 컴퓨터 시스템의 개요도.
고객들은 종종 그들의 ASP들로부터 전용 하드웨어를 요구하지 않는다. 그들의 직원(staff)의 요구사항은 통상적으로 충분히 적어서, 복수의 고객들의 요구사항이 서버팜 내의 단일 머신 상에서 그들을 호스팅하는 것에 의해서 동시에 만족될 수 있다. 따라서, 분할화 호스팅(즉, 머신들의 분할부들만을 특정 고객에 대해서 배정하는 것)이 일반적으로 바람직하다. 이것은 클라이언트들 사이에서 고가의 머신들 및 소프트웨어의 비용 부담을 공유하면서 최고급 서비스들의 제공을 허용한다. 이러한 측면에서, 분할화 호스팅을 제공하기 위한 유연성있는 체제가 후술하는"가상"서버들의 개념을 사용하여 제공된다.
한 애플리케이션으로 지향(direct)되는 요청들은, 그러한 컴포넌트(component)들 또는 그 애플리케이션의 사용가능한 그러한 인스턴스(instance)들 중 최소의 부하가 걸리는 것으로 식별된 것인, 그 애플리케이션의 특정 실행 인스턴스로(또는 적절한 컴포넌트로) 포워딩(forward)된다. 그러한 인스턴스들의 수 및/또는 용량은 그 애플리케이션 또는 그 컴포넌트에 대한 요청들의 다양한 수에 응답하여 동적으로 증가하거나 감소할 수 있다.
요청들이 지향되거나 또는 인스턴스들이 클라이언트-기초 당(per client-basis)으로 조절(adjust)된다. 즉, 애플리케이션의 인스턴스들 및/또는 그 컴포넌트들은 고객 또는 특정 고객들의 그룹의 개별적인 사용을 위해서 예정(reserve)된다. 이러한 방식의 동작은 각각의 엔터티(entity)들에 서비스 약속에 순응(compliance)하도록 촉진한다. 어플리케이션의 인스턴스들이나 컴포넌트들에 의해서 서비스되는 요청들에 의한 인스턴스들 상에 위치하는 부하 요인(factor)에 의하여, 인스턴스와 고객의 각 조합에 대해서 현재 배정된 자원들과 현재 소비된 자원들의 기록(record)이 유지된다.
고객과의 서비스 레벨 약속은 애플리케이션의 요청들의 예상되는 범위에 의하여 구체화되며, 이러한 예상되는 범위 내의 하나 이상의 서로 다른 대역들 내에서 요청 레이트(rate)를 서비스하기 위해 요금이 부과된다. 인프라스트럭쳐가 요청들을 서비스하지 못할 때는 벌금(penalty) 레이트가 부과된다(고객들을 위해서).
바람직한 실시예는 복수의 고객들의 첨두 부하를 취급하고 또한 그 SLA들이위반되지 않았다는 것을 보증하기 위해 필요한 자원들의 감소하는 것에 의해서 ASP의 자원 사용을 개선한다. 반드시 제공되야 하는 예비 용량은 고객들의 수에 따라 선형적으로 증가하는 것이 아니고 다수의 고객들에 대해서 거의 일정하게 유지된다. 이럼에도 불구하고, 고장의 위험성은 제한되어 있으며, 이는 서로 다른 일치하는(즉, 동일한 시간에서 발생하는) 사용들로부터의 요구의 급상승(surge) 가능성이 현저하지는 않지만 이미-작은 가능성들의 곱셈에 의해서 현출될 수 있기 때문이다.
전술한 시스템은 최적화된 자원 배정과 자동화된 시스템 관리와 필요-기초한 자원들의 공유(소프트웨어 뿐만 아니라 하드웨어도)를 통해서 ASP의 수익을 최대화한다.
설명된 기술들은, 고객들이 사용을 원하는 애플리케이션들 및 예상되는 사용 레벨들의 면에서, 편리하게 고객들이 그들의 고-레벨 요구사항들 만을 특정할 수 있다. 고객은 ASP가 그 밑에 있는 자원들에 관한 모든 결정을 하도록 할 수 있다. ASP는 서로 다른 머신들의 분할들을 고객에게 배정할 수도 있고, 부하 및 고장들의 변화에 응답하여 같이 시간상에서 증가 또는 감소하는 가상 서버를 구성할 수 있다.
서버 자원들을 관리하기 위한 기술들 및 배열들이 ASP에 의해서 제공되는 서비스들과 관련하여 설명되고, 여기서 사용자들(ASP의 고객들 또는 클라이언트들)은 ASP에 의해서 운영되는 복수의 네트워킹된 머신들 상에서 호스팅되는 하나 이상의 애플리케이션들에 접속할 수 있다. 통상적으로 특정 물리적 사이트(site)에서 국부 영역 네트워크(LAN)에 의해서 연결되는 것인 이러한 네트워킹된 머신들의 모임(collection)은 서버팜으로 칭해진다.
애플리케이션 호스팅
서버팜은 자원들의 모임으로 볼 수 있다. 이러한 것은 하드웨어(컴퓨터, 전원 공급, 네트워킹 장치류, 등) 뿐만 아니라 ASP가 그 잠재적인 고객들에게 유용하다고 생각하는 소프트웨어(애플리케이션, 표준 미들웨어, 운영 체제)를 포함한다. 컴퓨터들은 이질적(heterogeneous)일 수도 있으며, 광범위하게 다른 성능을 가질 수도 있다. 예컨대, ASP는 저-용량 웹사이트들을 호스팅하기 위한 단순한 개인용 컴퓨터 서버들을 제공할 수 있으며 또한 복잡한 회계적 또는 과학적 분석을 수행하기 위한 고성능 메인프레임들을 제공할 수도 있다.
유사하게, ASP에 의해서 제공되는 소프트웨어는 단순한 제작툴(워드프로세싱, 스프레드쉬트)에서 특화된 도메인(체스와 같은 대화형 게임, 기상 예측과 같은 과학적 계산 등)을 위한 복잡한 알고리즘 및 완전-보장(full-pledged) 애플리케이션(급료 계산, 전자상거래 웹-사이트)들까지 다양할 수 있다.
가상 서버들 및 가상 서버팜
애플리케이션은 자원 클래스(class)들의 세트로 간주될 수 있다. 이 가상 서버 유형이라는 용어는 그러한 자원 클래스들의 세트를 칭하는데 사용된다. 예컨대, 웹-기반의 소매점 애플리케이션은 다음과 같이 구성될 수 있다.
- 전단(front-end) 컴포넌트 <웹 서버>;
- 미들웨어 컴포넌트 <전자상거래 서버>; 및
- 후단(back-end) 컴포넌트 <데이터베이스 서버>.
따라서, 통상적으로 ASP 클라이언트들에 의해서 필요하게 되는 애플리케이션들은 개념적으로 자원 클래스들의 세트로 개념적으로 분리(partition)되어 있다. 자원 클래스는 특정 유형의 자원의 기능(functionality)과 특성(property)들을 캡슐화(encapsulate)한다. 예를 들어:
- DB2TM서버는 자원 클래스<데이터베이스 서버>의 인스턴스이다.
- WebSphereTM상거래 서버(WCS)는 자원 클래스<전자상거래 서버>의 인스턴스이다.
자원 클래스는 서로 다른 인스턴스들을 가질 수 있다 -예컨대, <데이터베이스 서버> 클래스는 DB2 서버에 부가하여 오라클 및 사이베이스 서버들을 포함할 수 있다. 그러나, 이러한 인스턴스들은 공유된 관계 데이터베이스들에 대한 원격 접속을 제공하는 것인 공통 기능을 공유한다.
가상 서버는 곧 가상 서버 유형의 인스턴스이다. 예컨대, ASP 고객의 웹-상점 애플리케이션은 ApacheTM웹서버와, WebSphereTM상거래 서버와 DB2TM데이터베이스 서버로 구성된다. 이러한 애플리케이션이 ASP의 서버팜 상에서 배치될 때, 여기에는 각 자원 클래스의 복수의 인스턴스가 존재하여 모든 들어오는 요청들이 시간적으로 적절한 형태로 취급되는 것이 가능하도록 하는 것에 주의하자.
ASP는 예컨대 ApacheTM전단의 5개의 인스턴스들과 WCSTM의 2개의 인스턴스들과 DB2TM의 하나의 인스턴스를 웹-상점상에서 주어진 현재 부하를 가정하여 실행하는 것을 결정할 수도 있다. 가상 서버의 런타임(run-time) 구현(embodiment)은 따라서 가상 서버 유형 내에 포함된 각 자원 클래스의 (가능하게는 복수의) 인스턴스들로 구성된다.
따라서, 클라이언트의 애플리케이션 요구사항은 가상 서버 유형의 상세사항(specification)으로 변환될 수 있다. 다음 단계는 자원 인스턴스들을 서버팜 내에서 사용가능한 물리적 머신들 상으로 매핑(map)하냐를 결정하는 것이다.
이어지는 설명에서, 클라이언트들 사이에 머신들을 공유하는 ASP의 문맥 내에서, 머신 분할은 단일 클라이언트에 배정된 자원의 세트로 정의되며, 모두 동일한 물리적 머신 상에 존재한다.
이하 상세히 설명되듯이, 가상 서버의 자원 인스턴스들은 머신 분할 내에서 모두 공존하지만, 일반적으로는 ASP는 가상 서버를 서로 다른 머신들 상의 머신 분할들의 세트 상으로 매핑한다. 예컨대, 고객의 웹 상점을 나타내는 가상 서버는, 한 머신의 분할 상에서의 2개의 ApacheTM서버와 1개의 WCSTM의 서버와, 다른 머신 상의 3개의 ApacheTM서버와 1개의 WCSTM의 서버와, 세 번째 머신 상의 DB2 서버를 실행하는 것에 의해서 지원될 수 있다. 이러한 것은 ASP가 그 머신들 상에서 부하를 분배하도록 허용한다. 이후, 만약 고객 웹상점의 부하가 매우 낮다면, ASP는 하나의 ApacheTM및 WCSTM서버를 포함하는 하나의 머신 분할과 DB2TM을 실행하는 두 번째 분할로 가상 서버를 재구성할 수 있다.
한 접근법은 특정 자원 클래스들을 위한 머신들을 전용(dedicate)하는 것이다. 예컨대, 고객의 가상 서버는, 전단 웹서버들을 실행되는 하나의 머신과 상거래 서버를 실행되는 다른 머신과 데이터베이스 서버를 실행하는 세 번째 머신의 분할로, 매핑할 수 있다. 이러한 것은 ASP의 유지 작업을 단순화하여 따라서 머신이 전용된 애플리케이션의 사용량 계측을 모니터링하는 데 있어 다른 애플리케이션의 간선을 줄이는 장점이 있다. 물리적 머신이 특정 자원 클래스에 전용되는 이러한 접근법은 바람직한 실시예에서 채택된 접근법이다.
가상 서버들과 머신 분할들의 복합 개념을 사용하여 모델링되고 관리되는 것인 ASP의 서버 웨어하우스(warehouse)는 가상 서버팜으로 칭해진다. 가상 서버팜의 목적은 ASP 자원들의 효율적이고 자동화된 관리를 제공하는 것이고, 여기서 자원들은 최적 또는 준-최적 형태로 요구시(on demand) 고객들에게 배정되고, 동시에 고객의 서비스 레벨 약속에서 특정된 것인 약속된 서비스 표준을 유지한다.
서비스 레벨 약속
ASP의 고객들은 바람직하게는 ASP 자원들의 기술적인 상세사항으로부터 바람직하게는 보호된다. 이러한 것이 ASP가, 전문 기술적 파라미터들을 참조하는 것을 요구하지 않고 이해해야할 상세한 기술적 지식을 요구하지 않는 고객과 서비스 레벨 약속을 협상할 수 있도록 허용한다고 인식된다. 그러나, 그러한 서비스 레벨 약속들은 여전히 고객의 서비스 요구사항을 얻는데 적절하다. 고객은 단지 어떤 애플리케이션이 고객이 호스팅되는 것을 원하는 지와 그 애플리케이션 상에서 예상되는 수요 또는 부하를 지시할 뿐이다.
본원 명세서에서 설명된 실시예와 관련되어 제공될 수 있는 서비스 레벨 약속들은 그 애플리케이션의 히트(hit)의 개념에 기초한다. 히트는 그 애플리케이션의 사용을 요청하는 것을 나타낸다. 히트들은 통상적으로 그의 가중치(weight):히트가 그 애플리케이션에 부과하는 계산 부하에 따라 변한다. 또한, 실제 자원 사용은 애플리케이션 벤치마킹(benchmarking)에서 얻어지는 예상되는 사용과 정확히 정합하지 않을 수 있다. 설명된 실시예에서는 이러한 실제 행동(behaviour)과 예상된 행동과의 차이와 같은 다소의 변형을 처리할 수 있다. 그럼에도 불구하고, 히트들은 적절히 행동한다고 가정하며, 즉 그들이 가중치가 한정(bound)된다는 것으로 가정한다.
고객은 애플리케이션이 배치되기 위해 예상되는 요청들의 레이트 면에서 그들의 요구사항을 특정한다. 이러한 히트 레이트의 서로 다른 값들은 서로 다른 시간 주기에 대해서 특정될 수도 있다. 히트-레이트의 특정에 기초하여, 고객 및 ASP는 서비스 레벨 약속의 요금을 협상할 수 있다. 가격책정 모델은 바람직하게는 시스템과 독립적이다. 시스템은 다양한 시스템 스킴들에 대해서 지원을 가능하게 한다. 예컨대, 어떤 서비스가 제공되던지 간에, ASP는 고객으로부터 월 일정 레이트를 청구할 수 있으며, 또는 ASP는 서로 다른 시간에 애플리케이션이 사용되는 사용자의 수를 기초로 하여 청구할 수도 있다. 일관성(consistency)을 위해서, 서비스 레벨 약속은 다음과 같은 파라미터들을 포함한다고 가정하다.
- 가능하다면 평균 히트 레이트를 지원하고 수신하는 것이 예상되는 고객 애플리케이션의 히트들의 범위.
- 이러한 범위의 부-범위(sub-range)들에 대해서 고객이 지불하기로 약속한 요금.
- 최소 요구사항이 지켜지지 못할 때 고객에게 ASP가 지불해야 하는 벌금.
이러한 유형의 단순화된 서비스 레벨 약속은 고객들이, 어떤 하드웨어가 사용되는 지 얼마나 많은 서버가 배치되는지 그리고 다른 그러한 상세한 기술적 상세사항의 기술적 세부사항의 세부적인 지식보다는, 그 애플리케이션이 접하게 될 부하의 양에 대하여 생각할 수 있도록 요구한다. 교대로, ASP는 고객 요구사항의 이러한 기능적 상세사항을, 서비스 레벨 약속 내에서 고객의 요구를 만족할 수 있는 것인 자원의 특정 세트로, 이송(transfer)하는 것이 가능하다. 이러한 이송을 얻기 위하여, ASP는 바람직하게는 아래 직접적으로 설명한 유형의 벤치마킹 데이터를 참조한다.
벤치마킹
특정 애플리케이션을 지원하는 머신의 용량은 그 머신 상에서 실행될 때 그 애플리케이션의 히트-레이트로 측정된다. 모든 호스팅되는 애플리케이션은 중앙 처리 장치(CPU) 사이클, 임의 접근 메모리(RAM) 요구사항, 디스크 공간 사용 등과 같은 머신의 물리적 자원들의 소비에 관한 정보를 얻기 위해서 우선 벤치마킹된다. 벤치마킹의 이러한 프로세스는 다음의 두 개의 레벨로 수행된다. (a) 모든 최종-사용자 애플리케이션들은 벤치마킹된다. (b) 최종-사용자 애플리케이션의 빌딩 블록(building block)을 구성하는 모든 소프트웨어 자원 클래스들은 개별적으로 벤치마킹된다.
이러한 후자의 개별적인 자원 클래스 벤치마킹 프로세스는 주어진 히트레이트에 대해 필요한 물리적 자원들을 결정한다. 이러한 정보는 히트레이트에 의하여 요구가 만들어질 때마다 클라이언트의 애플리케이션의 구성(constituent) 자원 클래스들에 대해서 배정될 실제 물리적 자원의 양을 결정하는 데 요구된다. 주어진 히트 레이트를 지원하기 위해서, 다른 측면에서 최종-사용자 애플리케이션들의 벤치마킹 정보는 필요한 서로 다른 구성 자원 클래스들의 양을 제공한다. 이러한 정보는 최종-사용자 애플리케이션의 소프트웨어 컴포넌트들 사이의 관계를 설정하고, 이것은 애플리케이션 상의 부하가 이러한 개별적인 컴포넌트들 상의 부하로 번역되는 비율을 나타낸다.
다수의 대중적인 애플리케이션들에 있어서, 그러한 벤치마킹 정보는 관련된 개발자들로부터 이미 사용가능한 것이다. 만약 벤치마킹 정보가 사용가능하지 않으면, ASP는 스스로 적절한 테스트 및 실험에 의해서 이 정보를 생성한다. 대안적으로, 필요한 물리적 자원들의 약간의 자유로운 초기 예측에 기초하여 자원들을 배정한 후 애플리케이션이 배치될 수 있다. 실제 자원 사용은 실험적인 기간 상에서 학습될 수 있으며 배정은 시행 및 오류의 프로세스에 의해서 이에 따라 조절될 수 있다.
개괄(overview)
도 1은 ASP 관리 시스템의 기능적 컴포넌트를 소개한다. 이러한 기능적 컴포넌트들은 개괄적으로 아래에 직접적으로 간단하게 설명된다. 이러한 컴포넌트들은 시스템에 의해서 제어되는 것인 하나 이상의 네트워킹된 머신들 상에서 존재한다. 도 1에서, 표시된 기능적 컴포넌트들 사이의 정보의 흐름은 이러한 기능적 컴포넌트들 사이의 화살표에 의해서 지시된다. 기능적 컴포넌트들 사이의 상호작용(interaction)은 아래에 설명된다.
자원 관리자
그 에이전트와 함께 자원 관리자(150)는 집합적으로 분배된 컴포넌트이다. 이 에이전트들은 서버팜 내에서 물리적 머신들 상에서 분배된다. 핵심 컴포넌트- 자원 관리자(150)는 그 고유의 머신 상에서 위치하게 되는 단일 엔터티이다.
부하 분배자
각 가상 서버팜 내에서 각 서브-팜(sub-farm)에 대한 하나의 중앙화된 부하 분배자(110)가 있다.
전역 의사 결정자(GDM)
전역 의사 결정자(140)는 단일 중앙화된 엔터티이다.
부하 모니터(monitor)
부하 모니터(130)는 도 1에서 제시된 바와 같이 가상 서버팜 내의 모든 물리적 머신들을 통해서 분배된다.
집합자
집합자(120)는 아래와 같은 서로 다른 컴포넌트를 가진다.
- 레벨 1 집합자는 서버팜을 통하여 분배된다. 이러한 컴포넌트의 각 인스턴스는 하나 이상의 서브-팜들 또는 팜의 고객의 그룹들에 대해서 책임이 있다. 이러한 구현 결정은 부하 정보 생성에 대한 해당하는 서브-팜(들)의 크기에 의존한다.
- 레벨 2a 집합자는, 레벨 1 집합자(들)에 의해서 생성된 부하에 따라서, 분배된 엔터티 또는 중앙화된 엔터티일 수 있다. 분배된 경우, 각 인스턴스는 고객들의 그룹을 취급한다.
- 레벨 2b 집합자는 유사하게, 레벨 1 집합자(들)에 의해서 생성된 부하에 따라서, 분배된 엔터티 또는 중앙화된 엔터티일 수 있다. 분배된 경우, 각 인스턴스는 자원 클래스들의 그룹을 취급한다.
구성 저장소(repository)
구성 저장소(160)는 중앙화된 데이터베이스이다.
시스템 아키텍쳐 개괄
도 1에 표시된 시스템 아키텍쳐가 이제 좀더 상세하게 설명된다. ASP는 여러 고객들을 호스팅하고, 사용자들은 인터넷을 통해서 ASP 인프라스트럭쳐로 접속한다. 서버팜에 합류(join)하면서, 고객은 서비스 레벨 약속에 서명(sign)하며, 여기에는 그의 요구사항들에 대한 정보가 포함되어 있다. 이것은 고객의 가상 서버를 초기화하는데 사용된다.
고객의 애플리케이션은 자원 클래스들로 분할되며[전술한 바와 갈이 웹 서버들과 상거래 서버들과 데이터베이스 서버들의 계층화된(tiered) 층들과 같이], 각각의 클래스는 임의의 주어진 시간에서 실행되는 복수의 인스턴스들을 가질 수 있다. 물리적 머신들 상의 다양한 자원 인스턴스들의 레이아웃과 고객의 애플리케이션에 대한 상세한 정보는 구성 저장소(160)에 의해서 동적으로 유지된다.
벤치마킹 정보와 애플리케이션 특성을 사용하여, 고-레벨 고객 요구사항들은 자원 클래스 요구사항[per resource class requirement]으로 변환된다. 시스템은 많은 서브-팜들을 가질 수 있고, 각각은 자원 클래스의 다수의 인스턴스들로 구성된다. 특정 서브-팜에 대한 트래픽은 그 서브-팜의 부하 분배자(110)를 통하여 공급되고, 이것은 그 밑의 서로 다른 인스턴스들 간에 균등하게 부하를 분배하도록 시도한다.
각 자원 인스턴스는 연관된 부하 모니터(130)를 가지고, 이는 그 성능 상에서 연속적으로 메트릭스(metrics)를 수집하는 것이다. 이러한 정보는 부하 분배자(110)에 대해서 사용가능하도록 만들어지고, 이 부하 분배자는 이 정보를 사용하여 부하를 분산한다. 모니터링된 정보는 또한 집합자(120)에게로 공급되고, 집합자는 약간의 의미있는 형태로 메트릭스를 축적하고 정규화한다. 이러한 것은 메트릭스가 각 자원 클래스 상에서 전역적으로 사용되게 하고, 또한 각 고객에 의해 사용되게 한다. 이러한 후자의 사용은 고객의 서비스 레벨 약속 내에서 설정되고 허용되는 범위와 비교된다. 이러한 숫자들에 기초하여, 집합자(120)는 각 고객에 대한 현재의 자원 배정에 대해서 어떠한 변경이 필요한 지를 결정하고 이러한 것들을 전역 의사 결정자(140)에 제안한다.
전역 의사 결정자(140)는 생성된 수익, 자원 사용 또는 현재 배정의 불안(perturbation)과 같은 특정 파라미터들을 최적화하기 위한 관점에서 다양한 고객들에 대한 자원 배정을 재-계산한다. 이러한 새로운 배정은 자원 관리자(150)에게로 제공되고, 여기서 변경된 배정 계획의 실제 구현을 책임진다. 자원 관리자(150)는 또한 구성 저장소(160)를 갱신하고, 변경이 완료된 후, 구성 저장소는 서버팜을 위한 중앙 구성 저장장치이다.
서버팜의 운영 구조
가상 서버팜의 운영이 자원 사용 및 배정을 관리하는 컴포넌트들을 참조로 하여서 이제 제시된다.
부하 모니터
논리적 모니터 I는 모니터링된 데이터(mI0, mI1, ... ,mIn)(또는 모니터 이벤트들)의 시간-순서 시퀀스를 나타낸다. 논리적 모니터들의 세트는 동적인 세트이다. 두가지 종류의 모니터들이 있다 - 히트레이트 모니터들과 머신 부하 모니터들이다. 각 자원 인스턴스에 대해서, 각 종류에 대해서 정확히 하나의 모니터가 존재한다. 각 모니터에 대한 첫 번째 모니터 이벤트(0th이벤트)는 일관성 및 단순성의 목적을 위해서 미리 정의된다. 그러한 초기화는 그 애플리케이션 상에서 초기에 예상되는 부하에 기초한다. 어떤 시간에서도, 각 모니터는 자원 인스턴스를 조회(query)할 수도 있는 모듈들에 대한 하나의 "최종(latest)" 모니터 이벤트를 버퍼링할 책임이 있다. 그들의 값들의 영구 기록을 유지할 필요가 없으므로, 노후(old)된 모니터 이벤트들은 폐기된다.
집합자
집합자(120)는 집합자들의 두 개의 레벨에 관련된다. 레벨 1 집합자들은 모니터 데이터를 수집하고 집합한다. 각 클라이언트 및 자원 클래스 쌍에 대해서, 하나의 레벨 1 집합자가 존재한다.
클라이언트 및 자원 클래스로부터 대응되는 인스턴스들로부터의 모든 모니터링된 데이터는 단일 집합자에 송신된다. 집합자는 이 데이터를 인스턴스 당 히트레이트(중요하지 않음) 및 인스턴스 당 히트 가중치로 변환한다. 집합자는 이 집합자와 관련된 각각의 모니터로부터 하나의 "최종" 모니터 이벤트를 얻는다. 미리 정의된 것인 사용가능한 모니터 이벤트가 항상 존재하므로, 비록 어떠한 새로운 모니터 이벤트도 생성되지 않았다고 하더라도, 최종 모니터 이벤트를 수집하는 프로세스는 여전히 잘 정의되는 것이고 또한 비-블로킹(non-blocking)이다. 모든 모니터 이벤트들이 이 프로세스 내에서 사용된다는 보증은 없으며, 따라서 집합 수행 중에, 주어진 모니터의 시퀀스 내의 일부 이벤트들은 생략될 수 있다.
히트 가중치를 계산하는 데 있어서, 집합자는 모니터 이벤트들을 수집하는 프로세스가 신속하다는 것과 모든 수집된 데이터가 시간 내에서 나란히 배치되어(collocated) 계산된 결과가 의미가 있다는 것을 가정한다. 레벨-1 집합자의 출력은 레벨-1 이벤트들의 세가지 종류로 구성된다.
- 첫 번째 이벤트는 클라이언트에 대응하는 각 애플리케이션에 대해서 얼마나 많은 부하가 존재하는가에 관한 부하-분배자에게도 다시 공급되는 부하 요인이다.
- 두 번째 이벤트는, 클라이언트에 대해서 모든 자원 클래스들을 통해서 데이터를 수집하고 집합하며 클라이언트에 대한 현재 배정들과 히트-레이트 모니터들로부터 얻어진 현재 데이터에 기초하여 클라이언트에 대한 요구 산출(projection)을 만드는 것인 레벨-2a 집합자에게 송신되는, 신규 히트 레이트이다.
- 세 번째 이벤트는, 레벨-2b 집합자에게 송신되는 신규 히트 가중치이고, 이것은 각 인스턴스에 대한 정정 요인을 계산하고 이들을 클라이언트에 대한 전체 정정 요인들(자원 클래스 당 하나)로 집합한다.
요약하면, 고객에 대해서, 집합(aggregation)은 모니터 시퀀스 데이터의 슬라이스(slice)들을 검색(look up)하고, 이 데이터를 클라이언트에 대한 클래스별(class-by-class) 가중치 정정 요인들과 클라이언트에 대한 산출된 배정 요구와 부하 분배자들을 위한 피드백 이벤트들로 변환한다.
부하 분배자
서버팜은 복수의 내부 서브팜들로 나누어지고, 여기서 각 서브팜은 팜의 자원 클래스에 대응한다. 그 자원 클래스에 대응하는 애플리케이션 인스턴스들은 서브팜 내에 포함되고, 애플리케이션 인스턴스들을 위한 들어오는 부하는 인스턴스들 사이에서 분배된다. 각 서브팜에 대해서 하나의 부하 분배자(110)가 존재한다. 서버팜의 게이트웨이는 들어오는 히트들을 분배자 또는 개별적인 전단 서브팜들로 고객의 정체(identity)에 기초하여 라우팅(routing)한다. 전단 서브팜들은 중간 계층 및/또는 전단 컴포넌트들이 의존하는 후단 자원 클래스들 상에서 내부 부하를 생성한다. 부하는 미들/후단 자원 클래스들에 대응하는 서브팜들에 대해서 생성된 내부 히트들에 관한 것이다. 내부 히트들은 내부 서브팜들의 부하 분배자(110)에 대해서 라우팅된다.
서브팜 기능들을 위한 부하 분배자(110)는 다음과 같다. 들어오는 히트들의 클라이언트가 식별되고, 이어서 어떠한 서브팜 애플리케이션 인스턴스가 그 히트를 취급하기에 가능하도록 그 클라이언트에 배정될 충분한 배정된 용량을 가지는 가를 결정한다. 만약 그 히트에 대해서 어떠한 배정된 예비 용량도 존재하지 않으면, 이후 히트는 버려지거나, 또는 지연된 처리를 위해서 큐(queue)된다.
부하 분배자(110)는 인스턴스들의 현재 세트를 추적하여 배정된 용량들과 현재 부하들에 대해서 분배자가 히트들을 분배하도록 한다. 각 부하 분배자(110)는 레벨 1 집합자들로부터 최종 부하 정보를 판독하는 것에 의해서 그 정보를 갱신한다. 부하 정보는 따라서 이전에 모니터들과 같은 모듈들에 대해서 설명한 유닛 용량의 버퍼 내에서 저장된다. 버퍼들은 예측되는 초기 부하들에 기초하여 미리 정의된 부하들을 사용하여 초기화될 수 있다. 최종 부하 정보 이외에도, 각 부하 분배자(110)는 최종 자원 배정 정보를 얻는 것이 필요하며, 이는 부하 분배자(110)가 구성 저장소(160)로부터 얻는다.
전역 의사 결정자
하나의 전역 의사 결정 프로세스가 존재한다. 이 프로세스는 모든 클라이언트들에 대한 요구들의 주어진 "최종" 세트이다. 이러한 목적을 위해서, 레벨-2a 집합자들은 그 들의 데이터에 대해서 모니터들에 의해서 수행된 유닛-용량 최종 요구 버퍼를 유지할 수 있다. 버퍼들은 그 곳에서 "최종 요구"가 어떤 시간에도(모니터들 내에서와 같이) 유효하도록 아웃세트(outset)에서 미리-정의된 요구들과 함께 초기화되어야 한다. 전역 의사 결정자(140)는, 최종 요구들의 세트 상에서 호출(invoke)될 때, 서버팜을 위한 배정 계획을 계산한다. 배정 계획은 전역 의사 결정자(140)의 유닛-용량 출력 버퍼들 상에서 사용가능하도록 된다. 모니터들과 집합자들의 유닛-용량 출력 버퍼들과는 달리, 전역 의사 결정자(140)의 출력 버퍼는미리-정의된 배정과 같이 초기화되지는 않는다. 따라서 전역 의사 결정자(140)에 의존하는 임의의 모듈은 어떠한 "최종" 배정 계획도 사용가능하지 않은 경우 블록(block)하도록 준비되어야 한다. 배정 계획을 생성하는 프로세스 내에서, 전역 의사 결정자(140)는 구성 저장소(160)내에 저장된 정보를 사용한다.
자원 관리자
자원 관리자(150)는 전역 의사 결정자(140)에 의해서 만들어진 최종 배정 계획 상에서 수행하는 단일 프로세스이다. 자원 관리자(150)는 다음과 같은 태스크들을 책임진다.
- 배정 당 애플리케이션 인스턴스들을 생성함.
- 모니터들을 생성하고 초기화함.
- 그들의 모니터들과 함께 폐기된 애플리케이션 인스턴스들을 파괴함.
- 애플리케이션 용량들을 축소/확대하기 위한 임의의 OS-레벨 기술들을 인터페이스함.
- 위의 변경들에 따라서 집합자들을 변경함[예컨대, 모니터는 변경된 것으로부터 데이터를 얻어서 설정하고 연결이 집합자들로부터 분배자들로 그리고 또한 전역 의사 결정자(140)로 변경함].
- 부하 분배자들(110) 및 서브팜들의 생성/삭제를 처리함.
자원 관리자(150)는 자원들의 가상 세계와 머신들 및 프로세스들의 실제적인 세상 사이의 다리(bridge)이다. 전역 의사 결정자(140)는 추상적인 용어에서 팜-범위(farm-wide) 자원 배정을 계산하여, 그들의 요청-서빙(serving) 용량들에 의하여 자원 인스턴스들을 서로 다른 클라이언트에 지정(assign)한다. 이러한 배정 계획은 물리적 머신들 및 프로세스들 상에서 수행되는 행동(action)들로 번역되어서 원하는 구성에 도달한다. 자원 관리자는 그들의 에이전트와 함께 이러한 태스크들을 수행한다.
일반적으로 서브팜들은 정적이며, 이는 주어진 클라이언트에 대한 서브팜으로부터 하나의 애플리케이션 인스턴스들이 필요되는 한 어떠한 서브팜도 계속 존재할 수 있기 때문이다. 서브팜들은 신규 자원 클래스들을 가지는 신규 클라이언트들의 추가나 노화 자원 클래스들을 노화 클라이언트의 삭제에 의존하여 삭제되거나 생성된다. 자원 관리자(150)는 모든 위의 활동들(activities)이 클라이언트들과 그들의 히트들이 관련되는 한 투명하게 발생하도록 보장하여야 한다. 그러한 위의 활동들에 대해서는 서버팜의 정지(stoppage) 또는 시간종료(timeout)가 없다. 서브팜 생성 및 삭제에 대해서, 이것은 생성은 서브팜에 대한 임의의 히트 도착들보다 선행(precede)되야 하고 삭제는 그 서브팜에 대한 임의의 히트 도착들보다 후행(succeed)되야 하는 것을 의미한다.
구성 저장소
구성 저장소(160)는 서버팜을 위한 중앙 저장장치로서 행동한다. 이것은 다음과 같은 정보를 저장한다.
- 하드웨어 정보
- 소프트웨어 정보: 의존사항, 필요한 하드웨어 등.
- 머신 용량 테이블: 서로 다른 자원 클래스들(애플리케이션들)에 대한 벤치마킹 정보, 참조 히트들의 다양한 수에 대한 k-개 요인의 집합[k-tuple].
- 배정 테이블: 서비스될 수 있는 실제 히트들에 의해서 각 클라이언트들에 대한 서버팜 내에서의 현재 배정 그리고 다양한 자원 클래스 인스턴스들에 대한 히트 가중치.
- 애플리케이션 특성 테이블: 애플리케이션들을 구성하는 다양한 자원 클래스들에서 참조 히트들에 의해서 호스팅된 애플리케이션들에 대한 벤치마킹 정보
- 모든 고객들을 위한 SLA 정보
- 시스템 컴포넌트를 위한 구성 정보. 모든 시스템 관리 컴포넌트는 초기화시 예컨대, 정보를 송신해야할 컴포넌트들의 주소와 같은 정보를 판독함.
후술하는 단순한 스위핑(sweep) 스케줄(schedule)을 유지하는 것에 있어서, 중앙화된 구성 저장소(160)에 대한 접속들 사이의 논쟁(contention )/의존도(dependency)는 다음의 광의의 정책을 사용하여 단순화될 수 있다. 스케줄링될 스위핑들의 주어진 세트 내에서[모니터들은 집합자들에 의해 이어지고, 전역 의사 결정자(140)가 이어지며, 자원 관리자(150)가 이어짐], 데이터가 스케줄 내에서 이어지는 모듈에 의해서 사용될 것이 아닌 한 어떠한 모듈도 데이터를 구성 저장소(160)에 데이터를 기록하지 않는다.
다른 말로 하면, 데이터는 데이터를 사용하는 최종 모듈까지 모듈로부터 모듈로 메시지-전달 방식으로 전달되며, 이후 만약 데이터가 이후 사용될 것이라면 그 모듈은 데이터를 구성 저장소(160)에 기록한다. 그 예로써, 히트 가중치들이 집합자들에 의해서 전역 의사 결정자(140)에게로 전달될 때, 전역 의사 결정자(140)는 그 배정 계획과 함께 히트 가중치들을 자원 관리자(150)에게 전달하거나, 또는 자원 관리자는 이후 자원 관리자(150)와 이후의 스케줄에 의해서 사용하도록 히트 가중치들과 배정 계획을 구성 저장소(160)에 기록한다. 이러한 전술한 정책들에 이어서, 전역 의사 결정자(140)는 더 이상의 구성 저장소 기록을 수행하지 않으며, 모든 것을 자원 관리자(150)에 남겨 두어서, 데이터에 기초한 모든 기록이 이것으로 전달되도록 한다.
전술한 정책을 가정하면, 현재 스케줄에 대한 데이터를 위해서 구성 저장소에 대해 어떠한 판독 접속도 발생하지 않는다. 모든 판독 접속은 이전의 긴 스케줄(또는 초기화 같은 일부 다른 선행 이벤트) 내에서 저장된 데이터를 위한 것이고, 여기서는 의존도들 사이에 어떠한 데드록(deadlock)도 존재하지 않으며, 논쟁 문제도 단순하다(판독만 됨). 이것은 또한 모니터링과 집합과 부하 분배 단독으로 관련된 최단 스케줄들에 대해서 사실이고, 전역 의사 결정자(140) 또는 자원 관리자(150)의 호출(invocation)들 사이에서 여러 번 실행될 수 있다.
스케줄링
하나의 단순환 스케줄은 모니터링 스위핑과 이어지는 집합 스위핑과 전역 의사 결정자(140) 계획 계산과 이후 자원 관리자에 의한 계획 배치를 가지는 것이다. 이 후에 이 사이클이 반복된다.
계획 계산과 배치가 상대적으로 느린 프로세스들이므로, 전술한 것과 같은 사이클은 상대적으로 큰 시간 주기를 요구한다. 모니터링, 부하 정보를 부하 분배자(110)에 다시 공급하는 집합은 상대적으로 작은 시간 주기를 요구할 수도 있다. 이러한 것을 장만하기 위해서, 부하 분배자(110)에 대한 피드백의 다수의 사이클들은 전역 의사 결정자(140)에 관하여 사이클 당 실행된다. 따라서, 모니터 시퀀스 내에서 이벤트들의 대부분은 단지 적은 소수의 유도(guiding) 계획 재계산을 가지고 피드백을 부하 분배자(110)에게로 향하게 할 수 있다. 이러한 스킴의 단순하고, 선택적인 변화는, 소수의 유도 계획 재계산을 또한 다른 모니터 이벤트들로부터 계산된 평균을 포함하도록 한다.
가상 서버팜의 구현
가상 서버팜 시스템의 개별적인 컴포넌트들의 구현은 이제 도 1을 참조로 하여 상세하게 설명된다. 그러한 가상 서버들 및 가상 서버팜의 하나의 예는 도 2에 도시된다.
도 2는 ASP 호스팅 해결책의 아키텍쳐를 나타낸다. 서버팜의 게이트웨이는 들어오는 히트들을 분배자들(210 및 240)에 개별적인 전단 서브팜들(212 및 242)각각을 위해서 라우팅한다. 도 2에서, 가상 서버 1(실선으로 표시됨)은 서브팜들(212, 222 및 232)내의 자원들의 인스턴스들로 구성되고, 가상 서버 2(점선으로 표시됨)는 서브팜들(242, 222 및 232)내의 자원들의 인스턴스들로 구성되고, 가상 서버 3(점선으로 표시됨)은 서브팜들(212, 252 및 262)내의 자원들의 인스턴스들로 구성된다. 히트들은 개별적인 부하 분배자들(210, 220, 230, 240, 250, 260)에 의해서 그러한 서브팜들(212, 222, 232, 242, 252, 262) 각각에 대해서 도시된 바와 같이 분배된다.
부하 모니터
부하 모니터(130)는 다양한 자원 클래스 인스턴스들에 의한 자원 사용을 모니터링하기 위해서 사용된다. 이 정보는 서비스 레벨 약속에 따른 배정 내에서의 변경을 결정하는데 사용되며 다양한 자원 클래스 인스턴스들을 통해 부하를 균형화(balancing)하기 위함이다.
각 클라이언트는 그 애플리케이션이 요구하는 것인 자원 클래스의 인스턴스를 가진다. 이 인스턴스들은 다음과 같은 방법으로 실제 구현상으로 매핑될 수 있다.
- 자원 클래스의 분리된 물리적 인스턴스는 각 클라이언트에 대해서 존재한다. 특정 클라이언트에 대응하는 복수의 그러한 인스턴스는 복수의 물리적 머신들 상에 존재할 수도 있다.
- 서로 다른 클라이언트들에 대응하는 인스턴스들은 동일한 물리적 머신 상에 존재할 수도 있다.
- 단일 물리적 자원 인스턴스가 복수의 클라이언트들을 서비스한다. 각 클라이언트에 의한 자원의 사용은 인스턴스 그 자체 또는 외부 엔터티에 의해서 제한된다.
국부적으로, 부하 모니터(130)는 클라이언트를 위한 자원 클래스의 각 인스턴스를 위해서 존재한다. 그러나, 실제 시스템에서, 물리적 머신 당 단일 부하 모니터는 그 머신 상의 모든 애플리케이션 인스턴스들에 대한 부하 정보를 모니터링하고 보고한다.
모니터들의 두 가지 유형이 있다.
- 각 애플리케이션 인스턴스에 대해서 단위 시간당 히트들의 수를 측정하는 히트-레이트 모니터.
- 각 애플리케이션 인스턴스에 의해서 소비되는 실제 물리적 자원들을 측정하는 머신 부하 모니터. 이것은 중앙 처리 유닛 사이클, 필요한 메모리 용량 등과 같은 파라미터들로 구성되는 k 차원의 벡터일 수 있다.
부하 분배자(110)는 클라이언트의 각 애플리케이션 인스턴스에 대한 히트 레이트를 그에 포워딩되는 히트들의 수를 집합시킴으로써 측정한다. 부하분배자(110)는 따라서 부하 모니터로도 동작한다.
머신 부하 모니터는 다음과 같은 기술들을 이용하여 구현될 수 있다.
- UNIX 에서의 ps 또는 top 과 같은 부하 정보를 제공하는 기존의 일부 시스템 프로그램들을 사용하는 것에 의해서.
- UNIX 에서의 /proc 파일 시스템과 같은 밑에 있는 운영 시스템에 의해서 제공되는 정보를 사용하는 것에 의해서.
- TivoliTM부하 모니터링 시스템과 같은 기존의 임의의 부하 모니터링 기술.
- 만약 존재한다면, 애플리케이션에 의해서 제공되는 부하 정보.
부하 모니터(130)는 레벨 1 집합자에 의해서 선택된 유닛 버퍼 내에서 최종 부하 정보를 유지한다.
부하 정보는 또한 자원 사용에 따라서 클라이언트에 요금을 부과하는데 사용될 수 있다. 또한, 시간 주기 동안 도달하는 요청들의 세트에 의해서 생성되는 부하를 모니터링하는 것에 의해서 귀중한 정보가 획득될 수 있다. 그러한 정보는 시스템의 미세-조절(fine-tuning)과 더 좋은 정책의 설계를 위해서 모아질 수 있다.
부하 분배자(LD-n)는 VSF 시스템의 이어지는 컴포넌트들과 상호작용하여서 전에 리스트된 모든 태스크들을 실행한다.
레벨 1 부하 집합자
LD-n 은 레벨 1 부하 집합자에게로 Sjk를 송신하고 Ljk를 수신하며 그로부터 각 클라이언트에 대한 인스턴스의 사용가능 상태를 수신한다.
자원 관리자
LD-n은 자원 관리자(150)로부터 다음에 관련된 메시지들을 수신한다.
- 기존 인스턴스의 폐쇄(shutdown)
- 클라이언트들에 대해 배정된 용량들과 인스턴스의 생성.
- 인스턴스 내에서 클라이언트들에 대한 배정된 용량의 변경.
- 새로운 배정들로 변경하기 위한 "switch plan" 메시지.
LD-n을 자원 클래스(i)의 서브팜을 위한 부하 분배자라 하자. t를 그 값이 0에서 Tu사이인 타이머라고 하자. t는 시스템 클럭에 기초하여 증가된다. 타이머는 부하 분배자에 대해서 국부적이다. 시동(start-up)에서 그리고 서브팜 생성 도중에서, 모든 클라이언트들에 대한 인스턴스의 각각의 Ljk및 Sjk를 0으로 가정한다. 클라이언트 k 당 각 인스턴스 j의 Hjk는 자원 관리자로부터 수신된 값으로 초기화된다. t를 0으로 초기화한다. LD-n은, 자원 관리자(150)에 의해서 정보를 받은 대로클라이언트 당 인스턴스들의 각각의 Hjk배정에 기초하여, 들어오는 요청들을 포워딩하는 것을 시작한다.
집합자
집합자(120)는 모니터링 에이전트로부터 부하 정보를 수집하고 효율적인 의사-결정을 위해서 다양한 레벨에서 집합한다.
도 3은 집합된 데이터 흐름이 취급되는 방식을 개요적으로 나타낸다. 도 3을 참조로 하며, 집합자(120)는 다음의 부-컴포넌트(sub-component)들로 구성된다.
레벨 1 집합자(322) : 부하 정보(각 애플리케이션 인스턴스들에 대한 현재 들어오는 히트레이트와, 각 애플리케이션에 의해서 자원들의 현재 소비를 나타내는 자원 사용 k-개 요인의 집합)를 부하 모니터들(130)(R1, R2, R3)로부터 수신하고 사용자 당 및 자원 클래스 당 기초하여 정보를 집합한다. 집합자(120)는 아래에 주어진 식들을 사용하여 다음 파라미터들을 계산한다.
- 신규 히트 레이트: 특정 사용자를 위한 특정 자원 클래스의 각 인스턴스에 대해서 히트 레이트를 부가하는 것에 의해서 얻어지는 사용자 당 및 특정 자원 클래스 당 기초한 집합 히트 레이트.
- 신규 히트 가중치: 각 자원 클래스 인스턴스에 대한 히트의 가중치. 레벨1 집합자(322)는 이러한 정보와 대응 히트레이트를 레벨 2b 집합자 (326)로 송신한다.
- 부하 요인: 각 자원 클래스 인스턴스에 대해 소비된 것인 배정된 자원들의 분할이다. 이 정보는 부하 분배자(110)로 송신된다.
히트의 가중치 = max( i(서비스된 히트들의 실제 수에 대한 자원 사용 i) /(참조 히트에 대한 자원 사용 i * 서비스된 실제 히트들의 실제 수) )
여기서, i = CPU, 메모리 등으로 구성된 k-개 요인의 집합임.
부하 요인 = (서비스된 히트들의 수*현재 히트의 가중치)/(배정된 실제 히트들*배정된 히트의 가중치)
머신 상의 특정 자원에 대한 참조 히트에 의한 자원 사용( 전술한 바와 같은,CPU, 메모리 등으로 구성된 k-개 요인의 집합)은 구성 저장소(160)내의 벤치마킹 정보로부터 얻어진다. 이것에 부가하여, 각 자원 인스턴스에 대해 배정된 히트들의 수와 그들의 배정된 가중치는 또한 구성 저장소(160)로부터 판독된다.
레벨 2 집합자(324, 326): 레벨 1 집합자(322)로부터 집합된 부하 정보를 수신하고 사용자들의 각 자원 클래스에 대한 자원 요구사항들 내에서의 변경들을 계산하고 이를 요구에 따라 전역 의사 결정자(140)에게 송신한다. 새로운 자원 요구사항들이 현재 배정과 다르고 클라이언트의 SLA들과 일치되는 경우 변경들이 요구된다. 이러한 사용자들의 이러한 요구들은 참조 히트들의 수로서 송신된다(증가되도록 또는 감소되도록).
전술하였듯이, 이러한 요구들은 각 클라이언트와 그 클라이언트의 애플리케이션을 구성하는 각 자원 클래스들을 위해서 송신된다. 이러한 요구들은 두가지 유형의 요청들로 구성된다. 요구 중 하나는 자원 클래스 상에 들어오는 히트 레이트 내에서 변화가 있을 때마다 발생하며, 시스템은 이러한 변화에 응답하여 그 자원 배정을 조절할 필요가 있다. 이러한 요구들이 식별되고, 인증(verify)되고 레벨 2 집합자(324)에 의해서 발생된다. 레벨 2 집합자(324)는 도 3에서 전역 의사 결정자(140)에 대비하여 국부적 의사 결정자로 참조된다.
두 번째 유형의 요구(정정 요인으로 불리는)는 들어오는 히트들의 가중치가 참조 히트들과 다를 때마다 발생될 필요가 있고 자원 배정은 이러한 변경을 구현하기 위하여 정정될 필요가 있다. 이러한 요구들은 식별되고 레벨 2 집합자(326)에 의해서 발생된다.
레벨 2 집합자(324): 각 자원 클래스 상의 클라이언트의 현재 히트 레이트를 지시하는 부하 정보의 부분을 수신한다. 이러한 정보와 현재 자원 배정 정보[구성 저장소(160)로부터 얻어짐]에 기초하여, 집합자(120)는 클라이언트를 위해서 배정(가능하게는 무효일 수 있는)에서 요구되는 변경들을 계산한다.
도 4는 신규 자원 요구들을 계산하는데 사용되는 알고리즘의 흐름도이다. 이것은 서로 다른 클라이언트들에 대해 서로 다를 수 있는 4개의 구성 파라미터들(a, b, g 및 d)을 사용한다. 이 파라미터는 과도부하(overload) 트리거(trigger)를 나타내며 즉, 클라이언트의 부하가 그 현재 배정의 요인 a 내에 도달할 때, b로 표시되는 증가의 양은 그 클라이언트에 대해서 요구된다. 파라미터들(g 및 d)은 과소부하(underload)에 대응한다. 이러한 파라미터들(a, b, g 및 d)은 상수이거나 또는 현재 부하, 현재 배정 및 SLA 한계들의 함수이며, 이 경우 파라미터들은 시스템 성능을 개선하기 위하여 조절(tune)될 수도 있다. 그러나, b를 계산한 후, 집합자는 배정 내에서 요구된 증가가 클라이언트의 SLA와 일치하는 것을 인증하고 단지 이후 이러한 요구를 전역 의사 결정자(140)에게로 송신한다.
유사하게, 만약 변경이 부정적이면, 즉 배정이 감소되어야 하면, 감소가 SLA에 따라 최소 자원 배정 레벨을 넘어서지 않는지를 집합자는 확인할 필요가 있다.
도 4의 알고리즘의 동작은 전에 설명하였듯이 간단하다. 단계 410에서, 현재 부하는 현재 배정과 비교되고, 파라미터 a에 의해 곱해진다. 만약 현재 부하가 작으면, 이는 곧 단계 420에서 현재 부하가 현재 배정에 파라미터 g를 곱한 것보다 작은지 확인된다. 어떠한 경우든, 만약 현재 부하가 크거나 또는 작거나 각각의 경우, 이는 이후 단계 430 및 440에서 각각 현재 부하가 최소 및 최대 자원 요구사항들 사이에 있는지 확인된다.
만약 현재 부하가 현재 배정에 a를 곱한 것보다 크다면, 그리고 이 자원 요구사항 범위의 바깥이면, 이는 단계 450에서 현재 부하가 최소 자원 요구사항에 동일한 파라미터 a를 곱한 것보다 큰 지 확인된다. 만약 그렇다면, 최대 자원 배정 및 현재 배정에 파라미터 b를 더한 것 중 더 작은 것으로 신규 배정이 결정된다. 현재 부하가 단계 430에서 자원 요구사항 범위 내에 있다면, 최대 자원 배정 및 현재 배정에 파라미터 b를 더한 것 중 더 작은 것으로 신규 배정이 또한 결정된다.
유사하게, 만약 현재 부하가 현재 배정에 g를 곱한 것보다 크다면, 그리고 이 자원 요구사항 범위의 바깥이면, 이는 단계 460에서 현재 부하가 최소 자원 요구사항에 동일한 파라미터 g를 곱한 것보다 큰 지 확인된다. 만약 그렇다면, 최소 자원 배정 및 현재 배정에 파라미터 d를 뺀 것 중 더 큰 것으로 신규 배정이 결정된다. 현재 부하가 단계 440에서 자원 요구사항 범위 내에 있다면, 최소 자원 배정 및 현재 배정에 파라미터 d를 뺀 것 중 더 큰 것으로 신규 배정이 또한 결정된다.
만약, 대신에, 단계 450 또는 단계 460에서, (i) 현재 배정이 최소 자원 배정에 파라미터 a를 곱한 것보다 더 크거나(단계 450에서) 또는 (ii) 현재 배정이 최대 자원 요구사항에 파라미터 d를 곱한 것보다 더 큰 경우(단계 460)라면, 신규 배정은 단순하게 최소 자원 요구사항이다.
더구나, 만약 요구사항 내에서의 변경이 클라이언트의 애플리케이션에 대한 전단(front end)으로서 행동하는 자원 클래스에 대응한다면, 이후 이 요구(demand)는 애플리케이션 레벨 요구이고 서로 다르게 취급된다. 다른 말로 하면, 그러한 요청은 번역되어서, 클라이언트의 애플리케이션의 모든 자원 클래스들을 위한 히트들의 적절한 수로 구성되는 복합(compound) 요청으로 된다. 밑에 있는(underlying) 자원 클래스들에 대한 대응 히트 요구를 계산하기 위해서, 집합자는 그 애플리케이션의 자원 클래스들의 현재 대응 비율(ratio)을 그 클라이언트를 위해서 계산한다.
그 애플리케이션의 전단 자원 클래스에 도달하는 각 히트들에 대한 밑에 있는 자원 클래스들에서 생성되는 참조 히트들의 수를, 애플리케이션의 대응 비율은 특정한다. 이 정보는 각 자원 클래스를 위한 클라이언트의 현재 히트 레이트를 획득하고 그 값들을 비교하는 것에 의해서 계산될 수 있다. 시스템 초기화에서, 이러한 비율은 벤치마킹 정보로부터 얻어지고 구성 저장소에서 저장된다. 새롭게 계산된 비율에서 현저한 변경이 있다면, 곧 구성 저장소 내의 노후된 값은 신규 값으로 변경된다. 일단 구성 비율이 얻어지면, 집합자는 곧 이 비율을 사용하여 그 애플리케이션의 모든 자원 클래스들을 위한 적절한 자원 요구들을 생성한다.
레벨 2b 집합자(326) : 각 클라이언트를 위한 각 자원 클래스 인스턴스에 대한 참조 히트들로서 정정 요인을 계산한다. 레벨 2b 집합자(326)는 레벨 1 집합자로부터 각 자원 클래스 인스턴스에 대한 대응 가중치와 함께 현재 히트 레이트를 수신한다. 집합자(120)는 이전 히트-가중치를 구성 저장소(160)로부터 얻고 이후 이하의 식을 사용하여 정정 요인을 계산한다.
정정 요인 = (신규 히트 가중치 - 이전 히트 가중치)*배당된 참조 히트들의 수
이러한 정정 요인들을 각 클라이언트를 위한 각 자원 클래스의 모든 인스턴스들을 통하여 집합하여, 또한 요구 내에서의 전체 변경을 계산한다. 이러한 요구들은 곧 전역 의사 결정자(140)에게 현재 배정, 현재 히트-가중치 및 각 자원 클래스 인스턴스를 위한 정정 요인과 함께 포워딩된다.
부하 분배자
부하 분배자(110)는 이에 라우팅된 요청들을 그 요청의 클라이언트 정체성에 따라서 적절한 애플리케이션 인스턴스로 매핑한다. 서브팜 내에서의 인스턴스들에 의해서 생성된 요청들은 다음-레벨 부하 분배자에 의해서 다음-레벨 서브팜들 중 하나로 라우팅된다.
도 5는 어떻게 들어오는 요청들이 분배되는 가를 개요적으로 나타낸다. 도 5에 도시되듯이, 들어오는 요청들은 레벨-1 부하 분배자(512)에서 수신된다. 이러한 요청들은 레벨-1 부하 분배자(512)에 의해서 예컨대 인스턴스 1, 2 및 3(522, 524 및 526)을 호스팅하는 것인 자원 클래스 1을 위한 서브팜 1(540)로 분배된다. 자원 클래스 1을 위한 서브팜 1(540)에서 처리된 후, 요청들은 레벨-2 부하 분배자 2(514)로 전달된다. 이러한 요청들은 차례로 레벨-2 부하 분배자(514)에 의해서 예컨대 인스턴스 1 및 2(532, 534)를 호스팅하는 것인 자원 클래스 1을 위한 서브팜 1(560)로 분배된다.
도 6은 들어오는 요청들의 흐름을 개요적으로 표현한다. 도 6에서, 클라이언트 C에 속하는 요청 R이 LD-1(610)에 의해서 수신된다고 하자. 요청 R은 서브팜 S1(612)내의 클라이언트 C에 속하는 최소-부하 인스턴스 I에 포워딩된다. 요청 R을처리한 후, 인스턴스 I는 다음-층(tier) 자원을 위해서 내부 요청(들)을 생성할 수도 있다. 다음 층 자원의 인스턴스들은 서브팜 S2(622)의 부분이다. 그러한 요청들은 LD-2[620, 즉 LD-1(610)의 다음-레벨 분배자]에 의해서 서브팜 S2(622)내의 클라이언트 C를 위해서 층-2 자원의 최소 부하 인스턴스로 포워딩된다. 도 6에 도시되었듯이, 요청들은 이런 방식으로 다른 부하 분배자 LD-4(640) 및 LD-5(650)로 개별적인 서브팜들 S4(642) 및 S5(652) 내에서 클라이언트 C에 속하는 최소 부하 인스턴스들로 전달된다.
부하 분배자(110)는 단위 시간 간격(Tu)을 가지며, 이는 히트 레이트를 계산하는 것에 대한 것이다. 이는 들어오는 요청들에 대해서 FIFO 큐를 가진다. 각 부하 분배자는 또한 2개의 2-차원 테이블을 가진다-각각의 행은 그 서브팜 내의 자원 인스턴스에 대응하고 각각의 열은 클라이언트에 대응한다. 이러한 테이블 중 하나는 전역 의사 결정자(140)에 의한 자원 배정에 대해서 정적이고 RAT(자원 배정 테이블)이라고 불린다. 다른 테이블은 동적이고 RCT(자원 소비 테이블)로 명명된다. RAT 내의 엔트리는 Hjk이고 이는 시간 간격 Tu동안에 클라이언트 k에 대한 j번째 인스턴스에 의해서 제공될 배정된 히트들이다. RCT 내의 엔트리는 (Sjk, Ljk)이다. Sjk는 현재 시간 간격 Tu동안에 클라이언트 k에 대한 j번째 인스턴스로 송신되는 히트들의 수다. Ljk는 현재 시간 간격 Tu동안에 클라이언트 k에 대한 j번째 인스턴스의 부하 정보(부하 요인)이다.
부하 분배자 LD-n에 의해서 최선(best-effort)의 방식으로 인스턴스들 간에 히트들을 분배하기 위해서 수행되는 태스크들이 이하에 설명된다.
- 수신된 각 요청에 대해서, 최소 부하 인스턴스(m)를 검색하고 히트를 여기로 포워딩한다.
- 현재 시간 간격에서 클라이언트 당 인스턴스에 대해 포워딩되는 히트들의 수를 추적하고 이 정보를 레벨 1 집합자에게 송신한다.
- RAT와 RCT로부터 결함 인스턴스들을 제거한다.
- 자원 관리자에 의해서 구현되는 신규 자원 배정 계획에 따라 인스턴스에 대한 배정된 용량을 갱신하고 신규 배정에 따라서 요청들을 포워딩하기 시작한다.
- 폐쇄(shut down)된 인스턴스에 대해서 요청들을 포워딩하는 것을 중지하고 신규로 생성된 인스턴스에 대해서 요청들을 포워딩하기 시작한다.
- 만약 요청 FIFO 큐가 비어있지 않으면, 곧 큐의 윗부분에서 요청을 처리(포워딩/드롭)한다.
전역 의사 결정자
전역 의사 결정자(140)는 시스템의 컴포넌트로서 그 입력으로서 클라이언트 SLA들과 함께 현재 시스템 상태를 취하고 그 출력으로서 신규 자원 배정 계획을 생성한다. 전역 의사 결정자(140)는 다음 정보를 입력으로서 수신한다.
- 참조 히트들에 의한, 레벨 2a 집합자(324)에 의해서 유지되는 유닛 출력 버퍼로부터의 자원 요구들. <자원 클래스, 클라이언트> 집합에 대한 요구가 이 주기 내에서 무효(null)인 경우, 출력 버퍼는 노후 값[플래그가 이러한 진부(staleness)를 나타냄]을 포함하고 그리고 무시된다.
- 참조 히트들에 의한, 레벨 2b 집합자(326)에 의해서 유지되는 유닛 출력 버퍼로부터의 정정 요인 요구들. 위와 같이 입력이 이전 주기에 속하는 경우 입력은 무시된다.
- 대응 비율. 시스템 초기화에서, 클라이언트 벤치마킹 정보는 클라이언트에 의해서 사용되는 자원 클래스들 사이의 상호관련성(interdependence)이 있는 경우 대응 비율을 정의한다. 이 비율은 자원들을 배정하는데 사용된다. 애플리케이션이 특정 자원 클래스에 대해서 그 요구들을 허용하지 못할 경우 그 애플리케이션의 다른 자원 클래스들의 대응 자원들을 유보하는 것이 의미가 없기 때문에 이것은 중요하다. 이 비율은 시간상에서 현저하게 변화할 수 있다. 그 값은 집합자들에 의해서 갱신되고 구성 저장소 내에 저장된다. 전역 의사 결정자(140)는 이 값을 구성 저장소(160)로부터 판독한다.
- 다른 클라이언트-특정 애플리케이션 정보[구성 저장소(160)로부터 획득됨].
- 배정될 각 자원 클래스의 최대 및 최소 양(SLA들로부터 얻어지며 0일수 있음.
- 클라이언트에 대한 자원 클래스 내에서 허용되는 인스턴스들의 최대 수.
- 자원 클래스의 기존의 인스턴스를 폐쇄하거나 신규 인스턴스를 시작하는 비용을 나타내는 수(양수, 0 또는 음수일 수 있음).
- 한 머신에서 다른 머신으로 자원 인스턴스를 이동하는 비용을 나타내는 수
- [구성 저장소(160)로부터 얻어질 수 있는] 인프라스트럭쳐 정보.
- 그 밖에 그리고 각 자원 클래스에 대해 사용가능한 머신들의 추상(abstract) 식별 (이름들).
- 자원 클래스에 대한 각 머신의 용량. 이것은 O/S 오버헤드, 애플리케이션 오버헤드에 대하여 계산한 후 부하에서 작은 임시 변동을 취급하도록 소정의 초과 용량을 남긴 후에 계산된다.
- 그러한 머신들 각각에 허용되는 인스턴스들의 수의 한계(만약 있다면).
- 실제 히트들의 레이트에 의해 특정되는, 팜 내부의 머신들 상에서 각 클라이언트의 현존 배정. 이러한 것들과 함께 히트-가중치들이 또한 공급된다. 이러한 두 개의 곱은 참조 히트들에 의한 배정을 주게 된다.
- 클라이언트의 SLA들로부터의 과금(charging) 정보. 이것은 SLA에 일치하지 않는 다양한 상황에서 지불해야 하는 벌금을 포함한다.
시스템 내에서의 결함이 존재시 머신의 용량의 감소를 가져올 수 있다(0으로 까지). 전역 의사 결정자(140)는 그러한 결함들에 의한 사용가능한 용량의 감소가 구성 저장소(160)에 반영되었다고 가정한다.
GDM 해결(solver) 알고리즘은 전술한 요구들에 응답하여 머신들에 대한 부하의 배정들을 결정한다. 호스팅의 비용은 시스템의 혼합 정수 선형 프로그래밍 모델을 사용하여 최소화된다. 선형 모델이 설명될 것이며, 이러한 모델에 대한 해결 방법이 이어진다.
선형 프로그래밍 모델
이 모델(선형 프로그래밍을 사용하는)의 목적은 다양한 자원 클래스들에서 클라이언트 요구들에 대해서 머신들의 공급을 정합하는 것이다. 복수 유형의 머신들과 서로 다른 양을 지불하는 클라이언트들을 가정하면, 이 모델은 이송(transportation) 문제(선형 프로그래밍의 영역에 있어서)이고, 수요 및 공급은 이익을 최대화하기 위해서 정합된다. 추가적인 주요 복잡함은 단일 자원 클래스에 대해 지정될(assigned) 각 머신에 대한 요구사항이다.
초과 배정은 낭비가 되므로, 기껏해야 요구되는 용량이 공급된다(수학식 2를 참조). 또한, 시스템이 충분한 용량을 가지지 못한 경우, 이러한 것은 최소 우선권을 통해서 클라이언트들에 기인한 요구의 일부를 버리는 것을 허용한다.
공급 제약조건(constraint)(아래의 수학식 3, 4 참조)은 두 개의 제약조건들로 변경된다. 한가지 제약조건은 각 머신에 단일 자원 클래스를 지정하는 것이다. 다른 제약조건은 그 자원 클래스 내의 요구만이 그에 배정되는 것을 허용하는 것이다.
단일 자원 클래스 내에서 단일 클라이언트의 요구사항이 확산될 머신들의 수 그리고 단일 머신 상에서 존재할 수 있는 클라이언트들의 수에 있어서의 제한이 모델링된다. 첫째로, 단일 머신 상에서 클라이언트들의 많은 수를 지원하여 발생하는 오버헤드들을 제한하는 것이다. 둘째는, 클라이언트가 확산되는 머신들의 수가 증가하면서 복수의 인스턴스들을 관리하는 것이 더 어려워지기 때문이다(수학식 5, 6 참조)
다음 제약조건은 서로 다른 자원 클래스들로부터의 자원들에 대한 요구사항이 서로 의존하고 있는 경우(예컨대, 한 자원 클래스가 다른 클래스를 호출하는 경우), 배정되는 양들은 할당(proportion)대로(수학식 7 참조) 된다는 것이다. 비록 선형 모델이 정확한 것은 아니지만, 선형 모델은 두 개의 자원들 사이의 실제 의존성의 근사를 표현한다.
모델의 실험에 있어서, 이러한 문제는, 모든 클라이언트들의 최소 요구들을 만족하기 위해 충분한 자원들이 있는 한, 항상 쉬운 해결책을 가지고 있는 것이 명백하다. 수학식 7을 만족시키기 위해서, 병목(bottleneck) 자원 클래스의 사용가능한 용량에 따라 자원 클래스들에 관계되는 배정들은 감소될 것이다.
최종적으로, SLA에 따라서 약속된 각 클라이언트의 최소 요구사항에 대한 제약조건은 항상 충족된다(수학식 8). 임의의 시간에서의 머신들의 공급은 이러한 제약조건의 실현을 보장하기에 충분한 것이다. 그러나, 주요 시스템 결함과 같은 경우들에 있어서, 이러한 것은 유지되지 않을 수도 있다. 최소 요구사항들은 대응 비율 내에서 또한 있어야 한다.
전술한 모델에 대해서 가능한 배정이 결정되고 동시에 다음의 비용 모델에 의해 최적화된다.
우선, 클라이언트들은 그들의 SLA, 사용한 머신들 그리고 이용한 자원 클래스들에 따른 것인 자원 사용의 유닛(유닛들은 참조 히트들이다)당 과금이 된다. 과금은 또한 그 시간에 클라이언트가 사용한 "범위"에 따른다. 예컨대, 만약 과금 유닛들이 과금 사이클 내에서 히트들의 전체 수라면, 곧 첫 번째 A 유닛들은 다음 A 유닛들 보다 더 낮은 레이트로 과금될 수 있는 그러한 식이다(아래의 수학식 1 첫 번째 부분 참조). 또한 클라이언트가 히트들에 대해 지불하는 실제 양을 반영하기 위해서, 참조 히트들의 히트-가중치에 따라서 과금이 가중될 수도 있다.
두 번째로, 머신으로부터 클라이언트를 추가(설정 비용)하거나 제거("청소" 비용)하는 시스템 비용이 있다(수학식 1의 두 번째 부분 참조).
세 번째로, 자원 클래스 상의 클라이언트의 인스턴스들의 수가 많아지면, 시스템이 데이터 일관성을 관리하기 위해서 더 많은 비용이 든다(수학식 1의 세 번째 부분 참조)
최종적으로, 시스템이 시스템 결함과 같이 어떠한 이유로던 클라이언트의 최소 요구사항을 취급하지 못하는 경우의 벌금이 있다. 자원들이 모들 클라이언트들의 최소 요구들을 만족하는데 충분하지 않은 경우, 벌금이 모델에 부가되고, 이 경우, 이러한 제약조건(수학식 8)은 폐기되고 모델이 이러한 것이 없이 대신에 벌금을 가지고 다시 계산된다. 선형 프로그래밍에서 벌금들을 부과하는 표준 모델이 있으며, 이러한 것은 설명의 편의를 위해서 생략되었다(예컨대 [12] 참조).
상세한 모델 설명은 일부 표기 부호의 사용을 필요로 한다. 이하의 부호들은 변수들(해결되어야 할 값들) 또는 GDM 계산기(solver)에 대한 입력들(시스템에 대한 데이터)을 나타낼 수도 있다. 첨자 i, j, k 는 1에서 Ni, Nj, Nk각각까지의 정수를 취하며, Ni는 시스템 상의 클라이언트들 전체 수이며, Nj는 자원 클래스들의 전체 수이며, Nk는 머신들의 전체 수이다.
명확하게 하면, 다음은 입력들을 나타낸다.
Aijk- 현재 배정
Cij- 대응 비율
Dij- 요구
Ljk- 머신 상의 클라이언트의 최대 수
Mjk- 클라이언트가 존재하는 것인 머신들의 최대 수
Minij- 요구
Ni- 클라이언트들의 수
Nj- 자원 클래스들의 수
Nk- 머신들의 수
Pijk- 과금된 요금
Sjk- 자원 클래스들에 대한 머신 용량
Tijk- 인스턴스들을 부가 또는 제거하는 것에 대한 벌금
Uij- 인스턴스들의 수에 대한 벌금
Vijk- 히트-가중치 요구
Yijk- 머신들 상의 현재 인스턴스들
다음의 부호는 변수들을 나타낸다.
Bijk- 클라이언트에 대한 배정
Zijk- 머신 상의 인스턴스의 배정
Rjk- 자원 클래스에 대한 머신의 배정
Dij가 자원 클래스 j를 위해서 클라이언트 i 에 의한 전체 요구를 나타낸다고 하자. Dij는 참조 히트 유닛들 내에서 집합자들(2a 및 2b)로부터의 요구들의 합이고, 특정 클라이언트들에 대해서 임의의 최대 허용되는 부하들에 따라서 절삭(truncated)된다. Dij는 자원들의 배정이 감소하는 것에 대한 요청이면 음수일 수도 있다. 구성 저장소로부터 머신 k, 자원 클래스 j상의 클라이언트 i에 대해서, 참조 히트들에 의한 현재 배정 Aijk가 얻어진다.
Pijk가 클라이언트 i, 자원 클래스 j, 머신 k 조합에 대해서 배정된 자원 Bijk의 유닛 당 과금의 합을 나타낸다고 하자. 이러한 클라이언트의 부가 또는 제거의 시스템 비용은 각 그러한 변경에 대해서 Tijk의 레이트로서 함께 과금된다. Uij가 이러한 인스턴스들 사이의 일관성을 유지하는 시스템 비용을 나타낸다고 하자.
여기서, {0,1}인 Yijk는 Aijk>0인지를 나타내고, {0,1}인 Zijk는 Bijk>0인지를 나타낸다. Sjk가 자원 클래스 j에 대한 머신 k의 용량 즉 머신이 지원할 수 있는 자원 클래스 j의 참조 히트들의 수를 나타낸다고 하자. 그러면 그 중의 두 번째가 제약조건인 다음 식들이 얻어진다
Yijk>= Aijk/Sjk, Zijk>= Bijk/Sjk
요구 제약조건은,
각 머신 k는 j번째 자원 클래스 Sjk에 대한 용량만큼 배정될 수 있다. {0,1}인 변수 Rjk는 자원 클래스 j가 머신 k상에 존재하는지를 나타낸다.
단지 하나의 자원이 하나의 머신 상에 배정된다.
각 머신 상의 인스턴스들의 수에서 한계 Ljk가 존재한다.
주어진 자원 클래스 상에서 각 클라이언트들에 대해서 인스턴스들의 수에 대해 다른 한계 Mij가 존재한다.
Cjj'가 대응 비율(자원 클래스 j의 사용에 대해서 자원 클래스 j'의 사용의 비율로서 이전에 정의됨)을 나타낸다고 하자. 배정들이 대응 비율 Cjj'에 대응된다는 것을 보증하기 위해서, 다음을 만족한다.
각 클라이언트는 최소로 배정되어야 한다
전술한 제약조건들에 추가로 다음의 단순화가 수행되어서 변수의 수를 감소시킬 수 있다. 일부 클라이언트-자원 조합들은 단지 머신들의 특정 세트 내에서 존재한다. 대응 Bijk'는 전술한 세트들이 아닌 모든 k' 머신에 대해서 제거된다. 또한, 특정 자원 클래스에 지정되는 모든 머신 k'에 대해서, 대응 Rjk''는 1로 설정되고, 다른 Rjk'들은 k가 k,'가 아니도록 0으로 설정된다.
전술한 문제점들은 우선 수학식 8의 이어지는 최소에 대해서 해결된다.
Minij= maximum( SLA에 의해 특정되는 최소, (SkAijk+SkVijk) )
여기서 SkAijk+SkVijk는 현재 배정과 역시 참조 히트들에 의한 그 대응 히트-가중치 요구 Vijk의 합을 나타낸다. 이러한 옵션은 모든 클라이언트에 대해서 더 높은 품질의 서비스를 지원하며, 이는 시스템 내에서 기존의 배정들이 유지될 수 있기 때문이다. 이러한 것이 가능하지 않은 경우, 원래의 수학식 8로 대체될 것이다. 만약 실행불가능이면, 제약조건은 전술한 바와 같이 최소 자원 요구사항을 만족하지 못한 벌금에 의해서 대체된다.
전술한 문제점들은 일반적으로 정확한 방식으로 해결하기가 어렵다. 그러나, 이러한 것들은 표준 선형 프로그래밍 기술들, 문제점 선형 프로그래밍 완화(relaxation) 및 칼럼 생성 기술들이며, 전술한 바에 대해서 효율적으로 근사적인 해결책을 생성할 수 있는 것이다. 단순한 발견적 방법(heuristic)은 선형 프로그래밍 완화를 통한 해결책을 생성하기 위한 것이고 이후 통합적인 변수들을 라운드 오프된(rounded off) 그러나 실행가능한 값들로 설정한 후에 단순화된 문제점을 다시 해결한다. 사전처리 모듈의 추가는 해결책의 속도 향상을 위해서 변수들이나 제약조건들을 제거할 수 있다. 최선의 해결책을 이후 얻기 위해서 짧은 시간동안 해결책 처리는 중지된다.
일단 신규 배정 계획이 얻어지면, 자원 관리자는 신규 배정을 실행하도록 명령된다. 전역 의사 결정자(140)가 자원 관리자(150)에게로 전달하는 정보는 머신들 상의 지배적인 히트-가중치들과 함께 가상 서버팜 내에서 머신들 상의 자원 배정의 클라이언트-방향(wise) 리스트로 구성된다. 이러한 배정은 참조 히트들에 의해서 특정된다. 성공적인 실행을 위해서, 제공될 수 있는 실제 히트들에 의한 것인 배정의 신규값(참조 히트에 의한 배정을 대응 히트 가중치로 나누는 것에 의해서 얻어짐)으로서, 자원 관리자(150)는 구성 저장소(160)를 갱신한다. 히트 가중치들의 값 역시 갱신된다.
자원 관리자
자원 관리자 에이전트(RM 에이전트)는 머신이 부팅될 때 자동적으로 실행되는 프로그램으로서, 서버팜 내의 각 머신 상에 인스톨된다. RM 에이전트는 그 머신 상의 자원 인스턴스들을 관리하기 위해서 자원 관리자(150)에 의해서만이 사용될 수 있는 인터페이스를 제공한다. 팜 내에서 사용가능한 자원의 각 유형에 대해서, 적절한 세트의 저-레벨 시작 및 종료 명령들이 팜의 구성 저장소(160)내에 등록된다. 서브팜내의 각 머신이 단지 자원의 한가지 유형만을 호스팅하기 때문에, RM 에이전트는 단지 하나의 세트의 시작 및 종료 명령들만을 학습할 필요가 있다. 그 머신상에 호스팅되는 자원의 유형을 알면, RM 에이전트는 구성 저장소(160)에 질의하는 것에 의해서 적절한 명령들을 획득한다. 일단 이러한 것이 실행되었으면, 에이전트는 구성 저장소(160)내에 그 위치를 등록하여서 자원 관리자(150)가 필요시 통신할 수 있도록 하게 한다.
서브팜 내의 머신은 자원의 복수의 인스턴스들을 호스팅할 수도 있다. 각 인스턴스에 대해서 그 머신상에서 유일한 식별자가 주어진다. 이러한 것은 단순히 운영 시스템의 프로세스 식별자(pid)를 인스턴스 ID로서 사용하여 구현될 수도 있다. 각 인스턴스는 복수의 클라이언트들로부터의 히트들을 지원할 수도 있고, 각 클라이언트는 그 인스턴스의 서로 다른 최대 히트 레이트로 배정될 수도 있다. 머신에 대한 RM 에이전트는 따라서 각 인스턴스에 대한 테이블을 유지하며, 클라이언트 당 이러한 히트-레이트 배정들을 포함한다. 에이전트는 RM에 대한 다음의 추상 인터페이스를 나타낸다.
startup( ), instanceID 리턴함.
이 startup() 명령은 에이전트가 그 머신상의 자원의 인스턴스를 시작하고 ID를 그에 대해 지정하도록 요청한다.
shutdown(instanceID)
이 shutdown() 명령은 에이전트가 특정 자원 인스턴스를 종료하도록 요청한다.
setAllocation(instanceID, clientName, hitRate)
이 setAllocation() 명령은 히트-레이트에 의해서 특정 자원에 대한 클라이언트의 자원 배정을 설정한다.
이러한 연산 중 하나가 요청될 때, 에이전트는 이를 실행하도록 시도하고 곧 그의 성공 또는 실패를 자원 관리자(150)에 보고한다. 이러한 연산들 각각의 구현은 아래에 상세히 설명한다.
자원 관리자(150)는, 전역 의사 결정자(140)에 의해서 준비되는 배정 계획을 구현하기 위해서, 가상 서버팜의 다른 컴포넌트 뿐만 아니라 그 에이전트의 행동들을 조율하는 중앙 엔터티이다. 이것은 배정들의 두 개의 사본- 팜의 현재 상태를 반영하는 현재 계획과 전역 의사 결정자(140)에 의해서 제공되는 신규 계획-을 유지한다. 팜 시작 시에, 현재 배정은 초기화되어서 어떠한 자원도 어떠한 클라이언트에 배정되지 않았다는 것을 나타낸다. 자원 관리자(150)는, 새로운 배정 계획이 생성되었는지 여부를 결정하기 위해서, 전역 의사 결정자(140)의 출력 버퍼를 검사하는 것에 의해서 시작한다. 만약 계획이 생성되지 않았으면, 그러한 계획이 사용가능할 때까지 단순히 기다린다.
전역 의사 결정자(140)의 배정 계획은 3차원 테이블의 형태로 정의된다. 각 클라이언트에 대해서, 계획은 필요로 하는 모든 자원 클래스의 인스턴스 각각에 대해서 갱신된 배정들을 리스팅한다. 배정들은 히트-레이트에 의해서 통상적으로 표현된다. 전역 의사 결정자(140)가 신규 계획을 생성하는 것으로 실행되었을 때, 자원 관리자(150)를 호출하고 그 계획을 구현을 위해서 파라미터로서 제공한다. 자원관리자(150)는 곧 자원 인스턴스 축을 따라서 3차원 계획 테이블을 스캔한다. 각 자원 인스턴스에 대해서, 각 클라이언트에 대한 현재 배정과 신규 배정을 비교한다. 몇 가지 경우들이 가능하다.
I. 현재 및 신규 배정이 동일한 경우
I. 현재 = 0, 신규는 0이 아닌 경우
I. 현재는 0이 아니고 신규 = 0인 경우
I. 현재 및 신규가 0이 아니고 현재와 신규가 동일하지 않은 경우
경우 I
어떠한 행동도 자원 관리자(150)에 의해서 취해질 필요가 없다.
경우 II
신규 자원 인스턴스는 이미 존재하지 않으면 즉 그 인스턴스의 모든 다른 클라이언트들이 또한 현재 0 배정이 아니면 생성되어야 할 수 있다. 자원 관리자(150)는 RM 에이전트 상에서 startup() 연산을 호출한다. 구성 저장소(160)내의 주소를 검색하여서 적절한 에이전트를 배치한다. 에이전트는 자원의 시작 스크립트를 사용하는 것에 의해서 인스턴스를 생성하기 위해서 응답한다. 각 인스턴스는 연관된 모니터를 가져야 한다. 따라서, RM 에이전트는 새로운 모니터를 생성하거나 또는 그 머신상의 기존의 모니터에 신규 인스턴스를 모니터링하는 책임을지정한다. 이러한 태스크들이 성공적으로 완료되면, 승인 메시지를 자원 관리자(150)에 송신하고, 곧 에이전트의 setAllocation() 연산을 사용하여 클라이언트의 히트-레이트 배정을 신규 값으로 초기화한다. RM 에이전트는 곧 그 서브팜의 부하 분배자(110)에게로 메시지를 송신하여, 신규 인스턴스의 생성을 알려주고, 따라서 들어오는 요청들이 그에 의해서 제공되도록 한다.
경우 III
자원 인스턴스들은 더 이상 필요하지 않으면 즉 그 인스턴스의 모든 다른 클라이언트들이 또한 0 배정으로 감소되면 삭제될 수도 있다. 자원 관리자(150)는 곧 적절한 RM 에이전트 상에 shutdown 연산을 호출하여 인스턴스 ID를 제공한다. 에이전트는 우선 서브팜의 부하 분배자(110)에게 자원 인스턴스가 더 이상 사용가능하지 않다는 것을 알려주어서, 후속 히트들이 그 인스턴스로 라우팅되지 않도록 한다. 에이전트는 이후 자원의 shutdown 스크립트를 사용하여 인스턴스를 삭제하고, 연관된 모니터를 사용불가능하게 하고, 그 인스턴스를 보유하는 내부 데이터 테이블을 삭제한다. 자원 클래스에 의해서 제공되는 shutdown 스크립트는 인스턴스를 즉시 삭제할 필요는 없다. 인스턴스는 이미 수신된 임의의 요청들을 제공하는 것을 계속 진행할 수도 있으나 그 이후에 들어오는 요청들은 거부한다. 일단 계속중인 요청들이 제공되면, 인스턴스는 곧 깨끗하게 종료된다.
경우 IV
자원 인스턴스의 배정은 변경될 필요가 있다. 자원 관리자(150)는 이러한 것을 얻기 위해서 RM 에이전트상의 setAllocation 연산을 사용한다. 에이전트는 그 내부 테이블들을 갱신하여서 신규 최소 히트-레이트를 지시한다. 또한 이러한 배정을 강화할 필요가 있다. 이러한 목적으로, 서브팜의 부하 분배자(110)에게 메시지를 송신하여, 자원 인스턴스 상의 클라이언트에 대한 신규 배정을 나타낸다. 부하 분배자(110)는 클라이언트에 들어오는 요청들을 조절하여 이러한 배정된 한계 이상의 자원의 사용을 방지할 책임이 있다. 이 경우에 대해서 몇 가지 부가적인 경우들이 있다.
경우 IV-A
이 경우에서, 신규 > 현재, 즉 배정이 증가된 경우이다. 통상적으로, 전역 의사 결정자(140)가 특정 인스턴스의 배정을 증가시킬 때, 이는 또한 클라이언트의 애플리케이션에 의해서 요구되는 다른 자원 클래스들의 배정도 증가시킬 필요가 있다. 대응되는 (n+1)번째-계층(tier)을 증가시키지 않는 n번째-계층의 자원 인스턴스의 증가는 효력이 없다-이는 단지 (n+1)번째 계층 인스턴스가 또한 확장될 때까지 초과 요청들을 조절할 뿐이다. 경우 IV-A에서 메시지를 개별적인 에이전트들에 송신하는데 관련된 예측할 수 없는 지연 때문에, 부하 분배자(110)는 즉각적으로 이러한 인스턴스의 사용을 증가시킬 수는 없다. 모든 종속 자원 인스턴스들이 또한 그 메시지들을 수신할 때까지 기다려야 한다. 따라서 RM 에이전트가 자원 관리자(150)에게 승인 메시지들을 다시 송신하는 것이 필요하며, 이러한 것은 배리어(barrier) 동기화를 효율적으로 구현한다. 모든 에이전트가 그들의 인스턴스들이 확장되었다고 확인한 후, 자원 관리자는 "스위치 계획" 메시지를 모든 부하 분배자들(110)에게 발급한다. 이 메시지의 수신후, 부하 분배자들(110)은 신규하고 증가된 배정으로 스위칭할 수 있다.
또한, 운영-시스템 레벨 메카니즘이 클라이언트들 사이에서 머신을 분할하는데 사용가능하다면, RM 에이전트는 이에 인터페이싱하는 책임을 가진다. 그러한 분할 메카니즘들은 통상적으로 그의 CPU 사용과, 디스크 공간, 네트워크 대역폭 및 다른 유사한 OS-레벨 자원들에 의해서 각 애플리케이션상의 엄격한 경계들을 강화한다. 이러한 것은 자원들의 과도-소비뿐만 아니라 애플리케이션 서로간의 보안 격리를 제공한다. 클라이언트의 배정 내에서의 변경이 주어지면, RM 에이전트는 운영 시스템에 그에 따라서 머신 분할을 축소 또는 확장하도록 요청한다. 그러나, 만약 그러한 메카니즘이 사용가능하지 않으면, 시스템은 기능을 계속하고, 이것은 독립적인 조절-기반 메카니즘이 어떠한 경우에도 배정 한계를 강화하기 때문이다.
일단 RM 에이전트들이 요청된 재배정을 수행하면, 자원 관리자(150)는 신규 배정 계획을 구성 저장소(160)에 위탁(commit)한다.
서브팜 생성 및 제거
자원 관리자(150)는 또한 전체 서브팜들을 생성하고 삭제하는 것을 책임진다. 클라이언트가 도착하고 서버 팜 상에서 현재 사용가능하지 않은 자원 클래스의 사용을 요청할 때, 신규 서브-팜이 그 자원 클래스의 인스턴스들을 실행하기 위해서 생성돼야만 한다. 자원 관리자(150)는 구성 저장소(160)에 질의하여서, 인스톨된 자원 클래스를 가지는 자유(free) 풀 내에서 사용가능한 머신들을 찾는다. 이후 이들을 신규 서브-팜의 일부로서 지정하고, 부하 분배자(110)의 인스턴스를 생성하여 이 서브-팜에 들어오는 요청들을 관리한다. 어떠한 자원 인스턴스들도 실제적으로 이 단계에서 생성되지는 않는다. 이전에 구획(outlined)된 대로 인스턴스들이 생성되며, 전역 의사 결정자(140)는 0이 아닌 히트-레이트들을 이에 배정한다.
일부 단계에서, 서브-팜은 더 이상 필요하지 않을 수 있고, 이는 어떠한 클라이언트도 그에 인스톨된 자원 클래스를 필요로 하지 않기 때문이다. 전역 의사 결정자(140)는 그 서브-팜에 전용된 머신들을 다시 요청하도록 결정할 수도 있고, 이는 이들을 과중한 부하가 걸리는 일부 다른 서브-팜들을 위해서 재사용하기 위함이다. 이후 자원 관리자(150)에게 서브-팜들을 제거하도록 요청한다. 자원 관리자(150)는 그 에이전트들을 사용하여 그 서브-팜 상에서 실행될 수도 있는 임의의 자원 인스턴스들(그리고 그의 모니터들)을 종료하고, 팜의 부하 분배자(110)의 종료 연산을 또한 호출한다. 일단 팜이 비활성으로 되면, 팜 내의 각 머신의 상태를 변경하는 구성 저장소(160)를 갱신하여 다시 자유 풀 내에서 사용가능하다는 것을 나타낸다.
부하 분배자(110)는 들어오는 히트들을 클라이언트에 지정된 특정 자원 인스턴스들에 분배하여서, 동일한 자원 클래스의 다른 인스턴스들이 상대적으로 부하가 덜 걸리는 상태에서 단일 인스턴스가 과도부하로 되는 것을 방지한다. 이는 또한 전역 의사 결정자(140)에 의해서 그들에 배정되는 용량에 따라서 클라이언트들에의해서 사용되는 것을 제어한다. 동일한 자원 클래스의 인스턴스들의 세트를 포함하는 각 서브팜에 대해서, 하나의 부하 분배자(110)가 사용된다.
결함의 취급
본원 명세서에서 설명된 모델은 서브팜들 내에서 머신 오류들을 취급하도록 구현된다. 심박(heartbeat) 메카니즘이 머신이 결함이 있는지 결정하기 위해서 사용된다. 결함있는 머신이 식별되면, 메카니즘은 집합자(120)에게 이를 알린다. 결함 통지의 수신시, 집합자들은 이 통지를 시스템 어드미니스트레이터(administrator)에게 포스팅(post)한다. 집합자들은 영향이 있는 부하 분배자들(120)에게 히트들을 결함있는 머신으로 지향하는 것을 중지하도록 알린다. 이 정보는 일반 부하 피드백 정보와 함께 부하 분배자들로 전달된다. 이는 이후 부하 분배자들까지 전달되어, 히트들을 가능한 한 다른 머신들로 송신하도록 하고, 취급되지 못할 일부 히트들은 조절하도록 한다.
집합자들(120)은 변경되어서 결함 데이터를 전역 의사 결정자(140)로 전달하여, 전역 의사 결정자(140)가 결함있는 머신을 그 배정 계획들에서 제거할 수 있도록 한다. 배정 계획을 준비하기 이전에, 전역 의사 결정자(140)는 머신들의 자유 풀의 최종 상태를 모으고(사용될 수 있는 풀에 부가된 신규 또는 신규로 고정된 머신들이 있을 수 있다), 모든 결함있는 머신들이 제거되었는지를 고려한다.
신규 계획 배치의 일부로서의 자원 관리자(150)는 제거돼야 하는 것인 머신들 상의 애플리케이션 인스턴스들을 삭제한다. 자원 관리자(150)는 머신을 종료하고, 시스템 어드미니스트레이터 콘솔에게 머신들이 삭제되어 고정되었다는 것을 알린다.
심박 메카니즘은 다음과 같이 머신 상에서 결함들을 발견하는데 사용된다. 에이전트는 주기적으로 머신 상의 애플리케이션 인스턴스들을 폴링(poll)/핑(ping)하여서 그들의 사용가능 상태를 요청한다. 만약 오류가 없다면 애플리케이션들은 일정 시간 간격 내에서 이러한 에이전트에 대해 응답하도록 구성되어야 하고, 에이전트는 이후 이러한 응답들을 다음의 문맥-종속 규칙들에 기초하여 대조한다. 머신이 결함이 있으면 애플리케이션 인스턴스 중 어떠한 것도 응답하지 않는다. 머신이 결함이 없고 애플리케이션 인스턴스들 중 X 퍼센트 이하가 결함이 있으면 이 머신의 부하를 취급하기 위한 부하 분배자(110)에 대해서 사용가능한 대체 머신들이 없다. 머신이 결함이 있고 애플리케이션 인스턴스의 Y 퍼센트 이상이 결함이 있으면 이 머신을 대체하기 위한 자유 풀 내에서 사용가능한 머신들이 있다. 이 규칙들은 불연속이거나 또는 잘 정의된 순서로 적용되어서 결정적인 대답이 머신에 대해서 도달하도록 한다. X 및 Y와 같은 파라미터는 애플리케이션/문맥에 종속적이고, 문맥-종속 정보의 나머지 부분들은 에이전트를 위해서 자원 관리자(150)에 의해 작성된 전역 의사 결정자(140)의 각 신규 배치마다 갱신된다. 원격 에이전트와 그 애플리케이션 인스턴스들 사이에 생성되는 네트워크 트래픽을 감소시키기 위해서, 원격 에이전트들은 허용되지 않을 수도 있다(즉 에이전트를 인스턴스들과 대조한다). 이 경우, 국부적 에이전트는 그 결함 결정을 관련된 집합자(120)와 주기적으로 통신하여(너무 길게 걸리지 않고, 즉 시간 만료가 없이), 집합자(120)가 국부적 에이전트를 신뢰할 수 있도록 한다. 만약 국부적 에이전트가 시간 만료되면, 곧 관련된 집합자들은 오류있는 머신들로 추정하여야 하고 그에 따라 처리한다. 모든 집합자들(120)이 공통 프로세스에 의해서 구현되기 때문에, 단지 하나의 추정만이 모든 집합자들에 의해서 도달되고 따라서 일관성이 유지된다. 국부적 에이전트에 의존하지 않는 경우, 원격 에이전트는 집합자들과 대조하여 집합자들(120)내의 통신 비용을 감소시키도록 할 수 있다.
심박 메카니즘이 결함들에 대해 핑하는 주기는 부하 모니터들이 스케줄링되는 주기와는 독립적이다. 집합자들(120)에 필요한 모든 것은 최종 결함 정보를 얻는 것이고 이후 이를 다른 모듈로 부하 정보와 함께 송신하다.
도 7a는 국부적 에이전트에 의해서 머신 상의 결함을 발견하는 것을 나타내는 흐름도이다. 도 7b는 에이전트 입력에 기초하여 결함 결정을 이끄는 집합자의 활동을 동시에 나타낸다. 도 7a에서, 단계 710에서 에이전트는 머신 상의 애플리케이션 인스턴스들을 핑하여 결함을 테스트한다. 다음으로 단계 720에서 애플리케이션 인스턴스들로부터의 응답이 전술한 문맥-종속 규칙에 따라서 에이전트에 의해서 평가된다. 평가는 에이전트가 머신 상에 결함이 있는지 여부의 결론을 내도록 한다. 그리고 단계 730에서, 에이전트는 이 결정을 집합자들과 통신한다.
도 7b는 집합자에 의한 머신상의 결함 검출의 처리를 나타내는 흐름도이다. 도 7b에서, 집합자는 동시에 머신상에서 결함 결정에 따라서 에이전트에 대한 주기적인 통신을 청취한다. 단계 740에서, 집합자는 에이전트로부터의 결함-관련 통신(도 7a의 단계 730에 대응)을 얻는다. 만약 에이전트로부터의 통신이 지연되면, 이후 단계 750에서, 집합자는 에이전트에 의해 보고되는 머신이 결함이 있다고 결론내도록 분기한다(단계 760).
만약 에이전트로부터의 통신이 지연되지 않으면, 이후 집합자는 통신의 내용을 살펴보아서, 머신에 대한 에이전트의 결정을 찾는다. 단계 770에서, 에이전트가 머신의 결함을 결정하였다면, 이후 집합자는 머신이 결함이 있다고(단계 760) 또는 머신이 결함이 없다고(단계 780) 분기한다. 도 7b의 단계들은 머신상의 에이전트로부터의 다음 통신이 기대될 때 다시 반복된다.
부하 분배
도 8은 전술한 부하 분배자에 관련된 프로세스를 나타내는 흐름도이다.
요청의 수신시(단계 820) : 부하 분배자는 수신된 요청을 단계 860과 같이 큐의 끝부분에 부가한다.
요청의 처리: 단계 812에서 부하 분배자는 요청 R을 큐의 머릿부분으로부터 제거한다. 요청 R로부터, 부하 분배자는 요청이 의미하는 자원에 대한 클라이언트 C를 식별한다. 이후 그 요청이 포워딩될 수 있는지 그 클라이언트 자원의 인스턴스를 찾아본다. 그러한 인스턴스는 레벨 1 부하 집합자로부터 수신된 부하 정보(부하 요인)에 대해서 최소 부하가 걸리는 것이다. 이는 단계 814와 같이 수행된다. 만약 단계 870에서 인스턴스의 배정된 용량이 완전히 소비되면(부하 요인이 1과 같거나또는 더 크면), 이후 단계 890에서 이 요청을 폐기한다. 그렇지 않으면, 단계 891과 같이 요청을 인스턴스에 포워딩하고 그 인스턴스에 송신된 요청들의 카운트를 1만큼 증가시킨다. 부하 분배자는 이 카운트를 시간 간격 dT(dT는 Tu보다 작음) 후에 레벨 1 부하 집합자로 송신하고 또는 단계 891에서와 같이 그 각 요청 후에 이를 그 인스턴스로 포워딩한다. 이것이 구현-레벨 파라미터이고 부하 분배자(110)의 시작 시에 구성 가능하여야만 하는 것이다.
자원 관리자로부터 메시지의 수신시(단계 830): 만약 단계 850에서 인스턴스가 종료되었다는 것을 메시지가 나타내면, 이후 부하 분배자는 그 인스턴스로 요청을 포워딩하는 것을 중단한다. 만약 메시지가 인스턴스내의 클라이언트에 대한 배정이 단계 850에서 감소되었다는 것을 나타내면, 이후 즉시 신규 배정을 고려한다. 만약 신규 인스턴스가 생성되었거나 또는 인스턴스 내에서 클라이언트에 대한 배정이 증가되었다면, 배리어 메시지-단계 850에서와 같이 자원 관리자로부터의 "스위치 계획"-를 수신할 때까지 신규 값(들)은 부하 분배자에 의해서 사용되지 않는다. 신규 인스턴스 메시지는 생성된 신규 인스턴스와, 0이 아닌 용량이 그에 배정된 클라이언트와, 히트 레이트들에 의한 대응 배정들에 대한 정보를 포함한다. 단계 850과 같이 "스위치 계획" 메시지 후에, 두 테이블 모두에서 각 신규 클라이언트에 대한 열을 가지고 있지 않는 클라이언트들이 있을 수도 있다. 유사하게, 클라이언트의 RAT 열 내에서 모든 엔트리들이 0이 되면, 곧 그 클라이언트의 RAT 및 RCT 열은제거된다.
레벨 1 부하 집합자로부터의 메시지의 수신시: 단계 840에서와 같이 메시지가 인스턴스의 클라이언트에 대한 부하 요인을 포함하면, 이후 부하 분배자는 자원 소비 테이블(RCT)내의 그 값을 갱신한다. 인스턴스가 다운(down)이라는 것을 메시지가 나타내면, 이후 그 인스턴스로 요청들을 포워딩하는 것을 중단하며, 이 인스턴스를 단계 840에서 RAT 및 RCT 모두에서 제거한다.
시스템 초기화
시스템 초기화시, 시스템 관리 컴포넌트들[전역 의사 결정자(140), 집합자(120), 부하 모니터들(130), 자원 관리자(150) 등]을 실행하도록 지정된 것인 머신이 시작되어서 미리 정의된 스크립트를 실행한다. 이러한 스크립트들은 개별적인 시스템 관리 컴포넌트들을 시작하고 초기화한다. 모든 머신에 대해서 균일한 파일 시스템 뷰(view)가 제공되며 모든 애플리케이션들이 인스톨된 것인 분산 파일 시스템이 사용가능하다.
고객들의 초기 세트가 서버팜에 하나씩 부가되고 다음과 같이 신규 고객을 추가하기 위한 절차가 이어진다.
신규 고객이 서버팜에 합류할 때, 이 정보가 이미 사용가능하지 않으면 이는 실험적인 설정 상에 호스팅되어서 그 애플리케이션들을 벤치마킹하며, 이 정보가 구성 저장소에 저장된다. 다음으로, (가상) 서브팜들이 고객에 대해서 구성되고 예상되는 부하-요구들에 대해서 초기화된다. 전역 의사 결정자(140)는 이후 이에 따라서 자원들을 배정할 수 있다. 자유 풀 단독으로 이를 지원하지 못하면 이 고객은 거부된다. 일단 전역 의사 결정자(140)가 배정 계획을 계산하면, 이는 자원 관리자(150)에 의해서 배치될 수 있으며, 머신들을 가지는 신규 서브팜의 배치도 포함한다.
컴퓨터 하드웨어 및 소프트웨어
도 9는 본원 명세서에서 설명된 기술들을 구현하는 프로세스 내에서의 단계들을 실행하는 데 사용될 수 있는 것인 컴퓨터 시스템(900)의 개요도이다. 컴퓨터 시스템(900)은 전술한 기술들을 수행하는 것을 지원하기 위해서 프로그래밍된 것인 컴퓨터 소프트웨어를 실행하는 목적으로 제공된다. 이 컴퓨터 소프트웨어는 컴퓨터 시스템(900) 상에 인스톨된 적절한 운영 시스템 하에서 실행된다.
이 컴퓨터 소프트웨어는 명령어들에 의해서 특정된 소정의 기능들을 실행하기 위해서 컴퓨터 시스템(900)을 명령하는 것인 컴퓨터 시스템(900)에 의해서 해석될 수 있는 프로그램된 논리적 명령어들의 세트에 관련된다. 이 컴퓨터 소프트웨어는 임의의 언어, 코드 또는 표기법으로 기록된 표현일 수 있고, 다른 언어, 코드 또는 표기법으로의 변환 후 또는 직접적으로 특정 기능들을 수행하기 위한 호환성있는 정보 처리 시스템을 의도한 명령어들의 세트를 포함한다.
이 컴퓨터 소프트웨어는 적절한 컴퓨터 언어로 된 문장들을 포함하는 컴퓨터 프로그램에 의해서 프로그램된다. 이 컴퓨터 프로그램은 컴파일러를 사용하여 운영시스템에 의한 실행에 적절한 이진 포맷을 가지는 컴퓨터 소프트웨어로 처리된다. 이 컴퓨터 소프트웨어는 전술한 기술들의 프로세스의 특정 단계를 실행하는 다양한 소프트웨어 컴포넌트들, 또는 코드 수단들에 관련된 방식으로서 프로그래밍된다.
컴퓨터 시스템(900)의 컴포넌트들은, 컴퓨터(920)와, 입력 장치들(910, 915)과, 비디오 디스플레이(970)를 포함한다. 컴퓨터(920)는 프로세서(940)와, 메모리 모듈(950)과, 입력/출력(I/O) 인터페이스들(960, 965)과, 비디오 인터페이스(945)와, 저장 장치(955)를 포함한다.
프로세서(940)는, 운영 시스템을 실행하고 컴퓨터 소프트웨어가 운영 시스템 하에서 실행되는 것인, 중앙 처리 유닛(CPU)이다. 메모리 모듈(950)은 RAM(random access memory) 및 ROM(read-only memory)를 포함하는 것이고, 프로세서(940)의 지시하에서 사용된다.
비디오 인터페이스(945)는 비디오 디스플레이(990)에 연결되고 비디오 디스플레이(970)상에 디스플레이를 위한 비디오 신호들을 제공한다. 컴퓨터(930)를 운영하기 위한 사용자 입력이 입력 장치들(910, 915)로부터 제공되고, 키보드(910) 및 마우스(915)를 포함한다. 저장 장치(955)는 디스크 드라이브 또는 다른 적절한 비휘발성 저장 매체를 포함한다.
컴퓨터(920)의 컴포넌트들 각각은 버스(930)에 연결되고, 버스는 데이터, 주소 및 제어 버스들을 포함하여서, 이러한 컴포넌트들이 버스(930)를 통하여 서로 통신하도록 허용한다.
컴퓨터 시스템(900)은, 통신 채널(985)을 사용하여 인터넷으로 표시된 네트워크(980)로, 하나 이상의 유사한 컴퓨터들과 입력/출력(I/O) 인터페이스(965)를 통하여 연결될 수 있다.
컴퓨터 소프트웨어 프로그램은 컴퓨터 프로그램 제품으로 제공될 수도 있고, 이동 저장 매체에 기록될 수도 있다. 이 경우, 컴퓨터 소프트웨어 프로그램은 저장 장치(962)로부터 컴퓨터 시스템(900)에 의해서 접속된다. 대안적으로, 컴퓨터 소프트웨어는 컴퓨터(920)에 의해서 네트워크로부터 직접적으로 접속될 수도 있다. 어떠한 경우든지, 프로그램된 컴퓨터 소프트웨어를 컴퓨터(920)상에서 실행하게 운영하도록, 사용자는 키보드(910)와 마우스(915)를 사용하여 컴퓨터 시스템(900)과 상호작용할 수 있다.
컴퓨터 시스템(900)은 도시를 위한 목적으로 설명되었다. 컴퓨터 시스템의 다른 구성들 또는 유형들이 전술한 기술을 구현하기 위해서 또한 동등하게 사용될 수 있다. 전술한 것은 단지 전술한 기술들을 구현하기에 적절한 컴퓨터 시스템의 특정 유형의 예일 뿐이다.
ASP 서버팜 내에서, 애플리케이션을 사용하기 위한 요청들은, 그 애플리케이션이나 그 컴포넌트의 사용가능한 그러한 인스턴스들의 최소 부하로서 식별되는 것인 애플리케이션의 특정 실행 인스턴스(또는 그의 적절한 컴포넌트)로 지향된다. 그러한 인스턴스들의 수는 그 애플리케이션이나 컴포넌트를 위한 요청들의 수에 응답하여 동적으로 증가되거나 감소된다. 요청들은 클라이언트-기초 당 지향되거나(첫번째 측면에 따라서) 또는 인스턴스가 조절되며(두번째 측면에 따라서), 애플리케이션의 인스턴스들 및/또는 그의 컴포넌트들이 사용자의 특정 그룹 또는 사용자의 사용을 위해서 유보된다. 이러한 방식의 운영은 개별적인 사용자들 또는 사용자들의 그룹들에 대한 서비스 약속의 준수를 용이하게 한다. 인스턴스 및 사용자의 각 조합에 대해서 현재 배정된 자원과 현재 소비되는 자원의 기록이 유지되며, 애플리케이션의 인스턴스들이나 그 컴포넌트들에 의해서 서비스되는 요청들에 의해 인스턴스들에 배치되는 부하 요인들에 따른다. 전술한 구성은 애플리케이션에 대한 요청들의 예측되는 범위에 따라 사용자에 대한 서비스 약속이 구성되도록 허용하며, 이러한 예측된 범위내에서 하나 이상의 서로 다른 대역을 가지는 서비스 요청 레이트들에 대해 과금이 된다. 요청이 서비스되지 못하는 경우 벌금 레이트가 과금된다(사용자를 위해서).
Claims (19)
- 복수의 네트워킹된(networked) 머신들 상에서 집합적으로(collectively) 실행되는 다수의 자원 클래스 컴포넌트(component)들을 포함하는 응용 프로그램에 대한 다수의 사용자들을 위한 접속을 제공하는 방법으로서,(i) 사용자들로부터의 애플리케이션을 사용하기 위한 요청들의 들어오는(incoming) 흐름을 수신하는 단계와,(ii) 상기 애플리케이션을 사용하기 위한 각각의 사용자들로부터의 상기 들어오는 요청들을 서비스하기 위해서, 상기 사용자들 각각에 대해서, 하나 이상의 머신들 상의 상기 애플리케이션을 위해서 각 자원 클래스 컴포넌트의 하나 이상의 인스턴스들의 개별적인 세트를 제공하는 단계와,(iii) 상기 들어오는 요청들 각각을 적절한 자원 클래스 컴포넌트의 특정 인스턴스로 지향(direct)하는 단계와,(iv) 상기 애플리케이션의 상기 자원 클래스 컴포넌트들의 상기 인스턴스들에 의해서 서비스되는 요청들의 수를 각 상기 사용자들을 위해서 모니터링하는 단계와,(v) 각 자원 클래스 컴포넌트들을 위한 요청들의 상기 모니터링된 수에 응답하여 하나 이상의 자원 클래스 컴포넌트들의 인스턴스들의 수를 증가시키거나 감소시키는 단계를 포함하는 다수의 사용자들을 위한 접속을 제공하는 방법.
- 제 1항에 있어서, 각 자원 클래스 컴포넌트의 하나 이상의 인스턴스들의 개별적인 세트로부터 적절한 자원 클래스 컴포넌트의 특정 인스턴스-상기 특정 인스턴스는 상기 개별적인 세트들로부터의 상기 적절한 자원 클래스 컴포넌트의 인스턴스들의 최소 부하로서 식별되는 것임-에 대해서 개별적인 사용자들로부터의 상기 들어오는 요청들 각각을 지향하는 단계를 더 포함하는 다수의 사용자들을 위한 접속을 제공하는 방법.
- 제 1항에 있어서,상기 각 자원 클래스 컴포넌트의 인스턴스들을 제공하는 단계는,상기 애플리케이션을 사용하기 위해서 들어오는 요청들을 서비스하도록 다수의 머신들 상에서 하나 이상의 자원 클래스의 하나 이상의 인스턴스를 초기화하는 단계와,상기 애플리케이션을 사용하기 위해서 들어오는 요청들을 서비스하도록 다수의 머신들 상에서 하나 이상의 자원 클래스의 하나 이상의 인스턴스들을 종료하는 단계를 더 포함하는 것인 다수의 사용자들을 위한 접속을 제공하는 방법.
- 제 1항에 있어서, 상기 애플리케이션을 사용하기 위한 사용자들로부터의 요청들은 FIFO(first-in-first-out) 기초로 상기 적절한 자원 클래스의 특정 인스턴스에 의해서 실행되도록 큐 안에 저장되는 것인 다수의 사용자들을 위한 접속을 제공하는 방법.
- 제 1항에 있어서, 개별적인 사용자들에 대해서 서비스 의무(obligations)의 기록(record)을 유지하는 단계를 더 포함하는 다수의 사용자들을 위한 접속을 제공하는 방법.
- 제 5항에 있어서,개별적인 사용자들에 대한 상기 서비스 의무가 최소한 만족되며, 각 자원 클래스 컴포넌트를 위한 요청들의 상기 모니터링되는 수에 응답하여 각 자원 클래스 컴포넌트의 인스턴스들의 수를, 상기 사용자들 각각을 위해서, 증가시키거나 감소시키는 단계를 더 포함하는 다수의 사용자들을 위한 접속을 제공하는 방법.
- 제 1항에 있어서,서비스되는 요청들의 상기 모니터링되는 수에 기초하여 개별적인 사용자들로부터 수신되는 요청들의 현재 레이트(rate)의 기록을 유지하는 단계를 더 포함하는 다수의 사용자들을 위한 접속을 제공하는 방법.
- 제 7항에 있어서,상기 하나 이상의 자원 클래스들의 인스턴스들의 상기 수를 증가시키거나 감소시키는 단계는,(i) 개별적인 사용자들로부터 수신되는 요청들의 상기 기록된 현재 레이트에 적어도 부분적으로 기초하고,(ii) 상기 요청 레이트들을 서비스하기 위해 요구되는 상기 하나 이상의 자원 클래스들의 인스턴스들의 대응되는 수에서의 변경들과 요청 레이트들에서의 변경들을 상호연관(correlate)하는 소정의 정보에 적어도 부분적으로 기초하는 것인 다수의 사용자들을 위한 접속을 제공하는 방법.
- 제 1항에 있어서,하나 이상의 상기 사용자는 조직체(organization)이고,상기 요청들은 상기 개별적인 조직체와 연관되는 개인(individual)들에 의해서 생성되는 것인 다수의 사용자들을 위한 접속을 제공하는 방법.
- 제 1항에 있어서,복수의 네트워킹된 머신들 상에서 집합적으로 실행되는 다수의 자원 클래스 컴포넌트들을 포함하는 애플리케이션에 대한 접속을 제공하기 위해서 사용자에게 요금을 부과하는 과금(charging) 구조를 정의하는 단계를 더 포함하며,상기 과금 구조를 정의하는 단계는,(i) 사용자로부터 요청들의 예상되는 최소 레이트로부터, (ii) 사용자로부터의 요청들의 예상되는 최대 레이트까지, 애플리케이션을 사용하기 위한 사용자의 요청들의 레이트의 예상되는 범위를 정의하는 단계와,상기 예상되는 범위 내의 하나 이상의 부범위(subrange)들을 위한 요청들의 서비스 레이트들과 관련된 서비스 요금을 정의하는 단계와,(i) 상기 사용자로부터의 하나 이상의 요청들이 서비스되지 않는 경우 그리고 (ii) 상기 사용자로부터의 요청들의 상기 레이트가 요청들의 상기 예상되는 최대 레이트를 초과하지 않을 때 상기 하나 이상의 서비스되지 않는 요청들이 주기 내에서 발생하는 경우에 사용자를 위해서 부과되는 벌금을 정의하는 단계를 포함하는 것인 다수의 사용자들을 위한 접속을 제공하는 방법.
- 제 10항에 있어서, 상기 서비스 요금은 상기 사용자로부터 상기 각 요청들을 위한 유닛 비용(cost)으로서 정의되는 것인 다수의 사용자들을 위한 접속을 제공하는 방법.
- 제 11항에 있어서,상기 유닛 비용은, (i) 상기 요청이 서비스되는 물리적 머신 및/또는 (ii) 상기 요청을 서비스하는데 관련되는 상기 자원 클래스(들) 및/또는 (iii) 상기 요청을 서비스하는데 관련되는 계산의 복잡도에 따라서 변화하는 것인 다수의 사용자들을 위한 접속을 제공하는 방법.
- 제 1항 또는 제 5항 내지 제 8항 중 어느 한 항에 있어서,현재 사용가능한 상기 자원들과 서비스되는 상기 요청들에 의해서 현재 소비되는 자원들은 상기 사용자들 각각에 대해서 모니터링되는 것이고,(i) 개별적인 사용자들에 대해 현재 사용가능한 자원들의 기록과, (ii) 개별적인 사용자들에 의해서 현재 소비되는 자원들의 기록과, 각 자원 클래스 컴포넌트들의 하나 이상의 인스턴스들 각각에 대해서 유지되는 것인 상기 자원들의 기록들 모두를 유지하는 단계를 더 포함하는 다수의 사용자들을 위한 접속을 제공하는 방법.
- 복수의 네트워킹된 머신들 상에서 집합적으로 실행되는 다수의 자원 클래스 컴포넌트들을 포함하는 응용 프로그램에 대한 다수의 사용자들을 위한 접속을 제공하는 시스템으로서,(i) 사용자들로부터의 애플리케이션을 사용하기 위한 요청들의 들어오는 흐름을 수신하기 위한 수단과,(ii) 상기 애플리케이션을 사용하기 위한 각각의 사용자들로부터의 상기 들어오는 요청들을 서비스하기 위해서, 상기 사용자들 각각에 대해서, 하나 이상의 머신들 상의 상기 애플리케이션을 위해서 각 자원 클래스 컴포넌트의 하나 이상의 인스턴스들의 개별적인 세트를 제공하기 위한 수단과,(iii) 상기 들어오는 요청들 각각을 적절한 자원 클래스 컴포넌트의 특정 인스턴스로 지향하기 위한 수단과,(iv) 상기 애플리케이션의 상기 자원 클래스 컴포넌트들의 상기 인스턴스들에 의해서 서비스되는 요청들의 수를 각 상기 사용자들을 위해서 모니터링하기 위한 수단과,(v) 각 자원 클래스 컴포넌트들을 위한 요청들의 상기 모니터링된 수에 응답하여 하나 이상의 자원 클래스 컴포넌트들의 인스턴스들의 수를 증가시키거나 감소시키기 위한 수단를 포함하는 다수의 사용자들을 위한 접속을 제공하는 시스템.
- 복수의 네트워킹된 머신들 상에서 집합적으로 실행되는 다수의 자원 클래스 컴포넌트들을 포함하는 응용 프로그램에 대한 다수의 사용자들을 위한 접속을 제공하기 위해서, 컴퓨터 소프트웨어 프로그램을 번역(interpret)하는 것이 가능한 계산 수단에 의해서 실행이 가능하며 매체에 기록된 컴퓨터 소프트웨어 프로그램으로서,(i) 사용자들로부터의 애플리케이션을 사용하기 위한 요청들의 들어오는 흐름을 수신하기 위한 코드 수단과,(ii) 상기 애플리케이션을 사용하기 위한 각각의 사용자들로부터의 상기 들어오는 요청들을 서비스하기 위해서, 상기 사용자들 각각에 대해서, 하나 이상의 머신들 상의 상기 애플리케이션을 위해서 각 자원 클래스 컴포넌트의 하나 이상의 인스턴스들의 개별적인 세트를 제공하기 위한 코드 수단과,(iii) 상기 들어오는 요청들 각각을 적절한 자원 클래스 컴포넌트의 특정 인스턴스로 지향하기 위한 코드 수단과,(iv) 상기 애플리케이션의 상기 자원 클래스 컴포넌트들의 상기 인스턴스들에 의해서 서비스되는 요청들의 수를 각 상기 사용자들을 위해서 모니터링하기 위한 코드 수단과,(v) 각 자원 클래스 컴포넌트들을 위한 요청들의 상기 모니터링된 수에 응답하여 하나 이상의 자원 클래스 컴포넌트들의 인스턴스들의 수를 증가시키거나 감소시키기 위한 코드 수단를 포함하는 컴퓨터 소프트웨어 프로그램.
- 제 14항에 있어서,복수의 네트워킹된 머신들 상에서 집합적으로 실행되는 다수의 자원 클래스 컴포넌트들을 포함하는 애플리케이션에 대한 접속을 제공하기 위해서 사용자에게 요금을 부과하는 과금 구조를 정의하는 수단을 더 포함하며,상기 과금 구조를 정의하는 수단은,(i) 사용자로부터 요청들의 예상되는 최소 레이트로부터, (ii) 사용자로부터의 요청들의 예상되는 최대 레이트까지, 애플리케이션을 사용하기 위한 사용자의 요청들의 레이트의 예상되는 범위를 정의하는 수단과,상기 예상되는 범위 내의 하나 이상의 부범위들을 위한 요청들의 서비스 레이트들과 관련된 서비스 요금을 정의하는 수단과,(i) 상기 사용자로부터의 하나 이상의 요청들이 서비스되지 않는 경우 그리고 (ii) 상기 사용자로부터의 요청들의 상기 레이트가 요청들의 상기 예상되는 최대 레이트를 초과하지 않을 때 상기 하나 이상의 서비스되지 않는 요청들이 주기 내에서 발생하는 경우에 사용자를 위해서 부과되는 벌금을 정의하는 수단을 포함하는 것인 다수의 사용자들을 위한 접속을 제공하는 시스템.
- 제 15항에 있어서,복수의 네트워킹된 머신들 상에서 집합적으로 실행되는 다수의 자원 클래스 컴포넌트들을 포함하는 애플리케이션에 대한 접속을 제공하기 위해서 사용자에게 요금을 부과하는 과금 구조를 정의하는 코드 수단을 더 포함하며,상기 과금 구조를 정의하는 코드 수단은,(i) 사용자로부터 요청들의 예상되는 최소 레이트로부터, (ii) 사용자로부터의 요청들의 예상되는 최대 레이트까지, 애플리케이션을 사용하기 위한 사용자의 요청들의 레이트의 예상되는 범위를 정의하는 코드 수단과,상기 예상되는 범위 내의 하나 이상의 부범위들을 위한 요청들의 서비스 레이트들과 관련된 서비스 요금을 정의하는 코드 수단과,(i) 상기 사용자로부터의 하나 이상의 요청들이 서비스되지 않는 경우 그리고 (ii) 상기 사용자로부터의 요청들의 상기 레이트가 요청들의 상기 예상되는 최대 레이트를 초과하지 않을 때 상기 하나 이상의 서비스되지 않는 요청들이 주기 내에서 발생하는 경우에 사용자를 위해서 부과되는 벌금을 정의하는 코드 수단을 포함하는 것인 컴퓨터 소프트웨어 프로그램.
- 제 14항에 있어서,상기 모니터링하기 위한 수단은, 현재 사용가능한 상기 자원들과 서비스되는 상기 요청들에 의해서 현재 소비되는 자원들은 상기 사용자들 각각에 대해서 모니터링하는 것이고,(i) 개별적인 사용자들에 대해 현재 사용가능한 자원들의 기록과, (ii) 개별적인 사용자들에 의해서 현재 소비되는 자원들의 기록과, 각 자원 클래스 컴포넌트들의 하나 이상의 인스턴스들 각각에 대해서 유지되는 것인 상기 자원들의 기록들 모두를 유지하는 수단을 더 포함하는 다수의 사용자들을 위한 접속을 제공하는 시스템.
- 제 15항에 있어서,상기 모니터링하기 위한 코드 수단은, 현재 사용가능한 상기 자원들과 서비스되는 상기 요청들에 의해서 현재 소비되는 자원들은 상기 사용자들 각각에 대해서 모니터링하는 것이고,(i) 개별적인 사용자들에 대해 현재 사용가능한 자원들의 기록과, (ii) 개별적인 사용자들에 의해서 현재 소비되는 자원들의 기록과, 각 자원 클래스 컴포넌트들의 하나 이상의 인스턴스들 각각에 대해서 유지되는 것인 상기 자원들의 기록들 모두를 유지하는 코드 수단을 더 포함하는 컴퓨터 소프트웨어 프로그램.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/921,868 US7174379B2 (en) | 2001-08-03 | 2001-08-03 | Managing server resources for hosted applications |
US09/921,868 | 2001-08-03 | ||
PCT/GB2002/001368 WO2003014928A2 (en) | 2001-08-03 | 2002-03-21 | Managing server resources for hosted applications |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20040019033A true KR20040019033A (ko) | 2004-03-04 |
KR100570141B1 KR100570141B1 (ko) | 2006-04-12 |
Family
ID=25446095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020037017243A KR100570141B1 (ko) | 2001-08-03 | 2002-03-21 | 복수의 애플리케이션 레벨 사용자를 위한 접속 제공 방법, 시스템, 및 기록 매체 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7174379B2 (ko) |
EP (1) | EP1412857B1 (ko) |
JP (1) | JP4527976B2 (ko) |
KR (1) | KR100570141B1 (ko) |
AT (1) | ATE366439T1 (ko) |
DE (1) | DE60221019T2 (ko) |
WO (1) | WO2003014928A2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8181219B2 (en) | 2004-10-01 | 2012-05-15 | Microsoft Corporation | Access authorization having embedded policies |
Families Citing this family (373)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9603582D0 (en) | 1996-02-20 | 1996-04-17 | Hewlett Packard Co | Method of accessing service resource items that are for use in a telecommunications system |
US9239763B2 (en) | 2012-09-28 | 2016-01-19 | Oracle International Corporation | Container database |
US7113900B1 (en) * | 2000-10-24 | 2006-09-26 | Microsoft Corporation | System and method for logical modeling of distributed computer systems |
US6907395B1 (en) * | 2000-10-24 | 2005-06-14 | Microsoft Corporation | System and method for designing a logical model of a distributed computer system and deploying physical resources according to the logical model |
US7606898B1 (en) * | 2000-10-24 | 2009-10-20 | Microsoft Corporation | System and method for distributed management of shared computers |
US7257815B2 (en) | 2001-09-05 | 2007-08-14 | Microsoft Corporation | Methods and system of managing concurrent access to multiple resources |
US20030061262A1 (en) * | 2001-09-25 | 2003-03-27 | Hahn Stephen C. | Method and apparatus for partitioning resources within a computer system |
US7039705B2 (en) * | 2001-10-26 | 2006-05-02 | Hewlett-Packard Development Company, L.P. | Representing capacities and demands in a layered computing environment using normalized values |
US7035930B2 (en) * | 2001-10-26 | 2006-04-25 | Hewlett-Packard Development Company, L.P. | Method and framework for generating an optimized deployment of software applications in a distributed computing environment using layered model descriptions of services and servers |
US7054934B2 (en) * | 2001-10-26 | 2006-05-30 | Hewlett-Packard Development Company, L.P. | Tailorable optimization using model descriptions of services and servers in a computing environment |
US7328261B2 (en) * | 2001-11-21 | 2008-02-05 | Clearcube Technology, Inc. | Distributed resource manager |
US20030110250A1 (en) * | 2001-11-26 | 2003-06-12 | Schnitzer Jason K. | Data Normalization |
US7310673B2 (en) * | 2001-12-21 | 2007-12-18 | Hewlett-Packard Development Company, L.P. | Network resource assignment system and method |
US20030126135A1 (en) * | 2001-12-28 | 2003-07-03 | David Gaxiola | Remote resource management of local devices |
IL147560A0 (en) * | 2002-01-10 | 2002-08-14 | Sphera Technologies Ltd | A method and system for hosting a plurality of dedicated servers |
US7962644B1 (en) * | 2002-03-18 | 2011-06-14 | Oracle International Corporation | Systems and methods for handling a plurality of communications |
US7660731B2 (en) * | 2002-04-06 | 2010-02-09 | International Business Machines Corporation | Method and apparatus for technology resource management |
US7107327B2 (en) * | 2002-04-26 | 2006-09-12 | Sun Microsystems, Inc. | Method and apparatus for determining a server configuration based on an execution profile of an application |
US7143413B2 (en) * | 2002-05-15 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | Method and system for allocating system resources among applications using weights |
US7072960B2 (en) * | 2002-06-10 | 2006-07-04 | Hewlett-Packard Development Company, L.P. | Generating automated mappings of service demands to server capacities in a distributed computer system |
US7290050B1 (en) * | 2002-09-20 | 2007-10-30 | Blue Coat Systems, Inc. | Transparent load balancer for network connections |
US7376732B2 (en) * | 2002-11-08 | 2008-05-20 | Federal Network Systems, Llc | Systems and methods for preventing intrusion at a web host |
US7353538B2 (en) * | 2002-11-08 | 2008-04-01 | Federal Network Systems Llc | Server resource management, analysis, and intrusion negation |
GB0302926D0 (en) * | 2003-02-08 | 2003-03-12 | Grex Games Ltd | System architecture and engine for massively multi-user operation |
US7689676B2 (en) | 2003-03-06 | 2010-03-30 | Microsoft Corporation | Model-based policy application |
US7072807B2 (en) * | 2003-03-06 | 2006-07-04 | Microsoft Corporation | Architecture for distributed computing system and automated design, deployment, and management of distributed applications |
US8122106B2 (en) * | 2003-03-06 | 2012-02-21 | Microsoft Corporation | Integrating design, deployment, and management phases for systems |
US7890543B2 (en) * | 2003-03-06 | 2011-02-15 | Microsoft Corporation | Architecture for distributed computing system and automated design, deployment, and management of distributed applications |
JP4045991B2 (ja) * | 2003-03-27 | 2008-02-13 | 株式会社日立製作所 | ポリシールールの生成方法およびそれを用いたジョブ運用管理方法 |
US7437728B2 (en) * | 2003-06-12 | 2008-10-14 | Microsoft Corporation | System and method for CPU bandwidth allocation |
US7349958B2 (en) * | 2003-06-25 | 2008-03-25 | International Business Machines Corporation | Method for improving performance in a computer storage system by regulating resource requests from clients |
US7636917B2 (en) * | 2003-06-30 | 2009-12-22 | Microsoft Corporation | Network load balancing with host status information |
US7590736B2 (en) * | 2003-06-30 | 2009-09-15 | Microsoft Corporation | Flexible network load balancing |
US7606929B2 (en) * | 2003-06-30 | 2009-10-20 | Microsoft Corporation | Network load balancing with connection manipulation |
US7613822B2 (en) * | 2003-06-30 | 2009-11-03 | Microsoft Corporation | Network load balancing with session information |
US7437460B2 (en) * | 2003-08-14 | 2008-10-14 | Oracle International Corporation | Service placement for enforcing performance and availability levels in a multi-node system |
US7552171B2 (en) * | 2003-08-14 | 2009-06-23 | Oracle International Corporation | Incremental run-time session balancing in a multi-node system |
US7937493B2 (en) * | 2003-08-14 | 2011-05-03 | Oracle International Corporation | Connection pool use of runtime load balancing service performance advisories |
US8365193B2 (en) * | 2003-08-14 | 2013-01-29 | Oracle International Corporation | Recoverable asynchronous message driven processing in a multi-node system |
US7441033B2 (en) * | 2003-08-14 | 2008-10-21 | Oracle International Corporation | On demand node and server instance allocation and de-allocation |
US7437459B2 (en) * | 2003-08-14 | 2008-10-14 | Oracle International Corporation | Calculation of service performance grades in a multi-node environment that hosts the services |
US20060064400A1 (en) * | 2004-09-21 | 2006-03-23 | Oracle International Corporation, A California Corporation | Methods, systems and software for identifying and managing database work |
US20050256971A1 (en) * | 2003-08-14 | 2005-11-17 | Oracle International Corporation | Runtime load balancing of work across a clustered computing system using current service performance levels |
US7953860B2 (en) * | 2003-08-14 | 2011-05-31 | Oracle International Corporation | Fast reorganization of connections in response to an event in a clustered computing system |
US7664847B2 (en) * | 2003-08-14 | 2010-02-16 | Oracle International Corporation | Managing workload by service |
CA2534807C (en) * | 2003-08-14 | 2010-12-14 | Lakshminarayanan Chidambaran | On demand node and server instance allocation and de-allocation |
US7516221B2 (en) * | 2003-08-14 | 2009-04-07 | Oracle International Corporation | Hierarchical management of the dynamic allocation of resources in a multi-node system |
US7747717B2 (en) * | 2003-08-14 | 2010-06-29 | Oracle International Corporation | Fast application notification in a clustered computing system |
US7873684B2 (en) | 2003-08-14 | 2011-01-18 | Oracle International Corporation | Automatic and dynamic provisioning of databases |
CN100547583C (zh) * | 2003-08-14 | 2009-10-07 | 甲骨文国际公司 | 数据库的自动和动态提供的方法 |
US8655755B2 (en) * | 2003-10-22 | 2014-02-18 | Scottrade, Inc. | System and method for the automated brokerage of financial instruments |
US7676560B2 (en) * | 2003-10-24 | 2010-03-09 | Microsoft Corporation | Using URI's to identify multiple instances with a common schema |
JP3993848B2 (ja) * | 2003-10-24 | 2007-10-17 | 株式会社日立製作所 | 計算機装置及び計算機装置の制御方法 |
US7886055B1 (en) * | 2005-04-28 | 2011-02-08 | Hewlett-Packard Development Company, L.P. | Allocating resources in a system having multiple tiers |
US9021094B1 (en) | 2005-04-28 | 2015-04-28 | Hewlett-Packard Development Company, L.P. | Allocation of resources for tiers of a multi-tiered system based on selecting items from respective sets |
US7296273B2 (en) * | 2003-12-04 | 2007-11-13 | International Business Machines Corporation | System, method and program tool to reset an application |
US7640546B2 (en) * | 2004-01-16 | 2009-12-29 | Barclays Capital Inc. | Method and system for identifying active devices on network |
JP4367141B2 (ja) * | 2004-01-23 | 2009-11-18 | 富士ゼロックス株式会社 | 指示記述内容変更装置及び指示記述内容変更プログラム |
CA2463006A1 (en) * | 2004-01-27 | 2005-07-27 | Wrapped Apps Corporation | On demand provisioning of web applications |
JP4568289B2 (ja) * | 2004-01-30 | 2010-10-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピューティング・ユーティリティ・システムにおけるアービトレーションのための装置 |
US20050172291A1 (en) * | 2004-01-30 | 2005-08-04 | Rajarshi Das | Method and apparatus for utility-based dynamic resource allocation in a distributed computing system |
US8046763B1 (en) * | 2004-02-20 | 2011-10-25 | Oracle America, Inc. | Regulation of resource requests to control rate of resource consumption |
US8584129B1 (en) * | 2004-02-20 | 2013-11-12 | Oracle America, Inc. | Dispenser determines responses to resource requests for a single respective one of consumable resource using resource management policy |
US8311974B2 (en) | 2004-02-20 | 2012-11-13 | Oracle International Corporation | Modularized extraction, transformation, and loading for a database |
US7778422B2 (en) * | 2004-02-27 | 2010-08-17 | Microsoft Corporation | Security associations for devices |
CA2558892A1 (en) | 2004-03-13 | 2005-09-29 | Cluster Resources, Inc. | System and method for a self-optimizing reservation in time of compute resources |
US8782654B2 (en) | 2004-03-13 | 2014-07-15 | Adaptive Computing Enterprises, Inc. | Co-allocating a reservation spanning different compute resources types |
US7865582B2 (en) * | 2004-03-24 | 2011-01-04 | Hewlett-Packard Development Company, L.P. | System and method for assigning an application component to a computing resource |
US7827557B2 (en) * | 2004-03-24 | 2010-11-02 | Hewlett-Packard Development Company, L.P. | Method and apparatus for allocating resources to applications using a linearized objective function |
US20050259683A1 (en) * | 2004-04-15 | 2005-11-24 | International Business Machines Corporation | Control service capacity |
US8458691B2 (en) | 2004-04-15 | 2013-06-04 | International Business Machines Corporation | System and method for dynamically building application environments in a computational grid |
US20050246529A1 (en) | 2004-04-30 | 2005-11-03 | Microsoft Corporation | Isolated persistent identity storage for authentication of computing devies |
US20050251786A1 (en) * | 2004-05-07 | 2005-11-10 | International Business Machines Corporation | System and method for dynamic software installation instructions |
US8554806B2 (en) | 2004-05-14 | 2013-10-08 | Oracle International Corporation | Cross platform transportable tablespaces |
US20060069774A1 (en) * | 2004-06-17 | 2006-03-30 | International Business Machine Corporation | Method and apparatus for managing data center using Web services |
US20050283531A1 (en) * | 2004-06-17 | 2005-12-22 | International Business Machines Corporation | Method and apparatus for combining resource properties and device operations using stateful Web services |
US20070266388A1 (en) * | 2004-06-18 | 2007-11-15 | Cluster Resources, Inc. | System and method for providing advanced reservations in a compute environment |
DE102004032518A1 (de) * | 2004-07-06 | 2006-01-26 | Braun Gmbh | Reinigungsvorrichtung für den Scherkopf eines Trockenrasierapparates |
US7502824B2 (en) * | 2004-08-12 | 2009-03-10 | Oracle International Corporation | Database shutdown with session migration |
US8176490B1 (en) | 2004-08-20 | 2012-05-08 | Adaptive Computing Enterprises, Inc. | System and method of interfacing a workload manager and scheduler with an identity manager |
JP2006079495A (ja) * | 2004-09-13 | 2006-03-23 | Hitachi Ltd | ストレージシステム及び論理区画の設定方法 |
US20060095435A1 (en) * | 2004-10-22 | 2006-05-04 | Bellsouth Intellectual Property Corporation | Configuring and deploying portable application containers for improved utilization of server capacity |
US7788671B2 (en) | 2004-11-01 | 2010-08-31 | International Business Machines Corporation | On-demand application resource allocation through dynamic reconfiguration of application cluster size and placement |
CA2827035A1 (en) | 2004-11-08 | 2006-05-18 | Adaptive Computing Enterprises, Inc. | System and method of providing system jobs within a compute environment |
US7562382B2 (en) * | 2004-12-16 | 2009-07-14 | International Business Machines Corporation | Specializing support for a federation relationship |
US9606821B2 (en) | 2004-12-17 | 2017-03-28 | Intel Corporation | Virtual environment manager for creating and managing virtual machine environments |
US9489424B2 (en) * | 2004-12-20 | 2016-11-08 | Oracle International Corporation | Cursor pre-fetching |
US8316130B2 (en) | 2004-12-22 | 2012-11-20 | International Business Machines Corporation | System, method and computer program product for provisioning of resources and service environments |
US20060143617A1 (en) * | 2004-12-29 | 2006-06-29 | Knauerhase Robert C | Method, apparatus and system for dynamic allocation of virtual platform resources |
US7779418B2 (en) | 2004-12-30 | 2010-08-17 | Oracle International Corporation | Publisher flow control and bounded guaranteed delivery for message queues |
US7925755B2 (en) * | 2004-12-30 | 2011-04-12 | International Business Machines Corporation | Peer to peer resource negotiation and coordination to satisfy a service level objective |
US7818386B2 (en) | 2004-12-30 | 2010-10-19 | Oracle International Corporation | Repeatable message streams for message queues in distributed systems |
US20060149650A1 (en) * | 2005-01-05 | 2006-07-06 | Dilley James K | Fundraiser system |
US7555484B2 (en) * | 2005-01-19 | 2009-06-30 | Microsoft Corporation | Load balancing based on cache content |
US8826287B1 (en) * | 2005-01-28 | 2014-09-02 | Hewlett-Packard Development Company, L.P. | System for adjusting computer resources allocated for executing an application using a control plug-in |
US9176772B2 (en) * | 2005-02-11 | 2015-11-03 | Oracle International Corporation | Suspending and resuming of sessions |
US7379953B2 (en) * | 2005-02-22 | 2008-05-27 | International Business Machines Corporation | Systems and methods for resource-adaptive workload management |
US7657536B2 (en) * | 2005-02-28 | 2010-02-02 | International Business Machines Corporation | Application of resource-dependent policies to managed resources in a distributed computing system |
US7739687B2 (en) * | 2005-02-28 | 2010-06-15 | International Business Machines Corporation | Application of attribute-set policies to managed resources in a distributed computing system |
US8782231B2 (en) * | 2005-03-16 | 2014-07-15 | Adaptive Computing Enterprises, Inc. | Simple integration of on-demand compute environment |
US8863143B2 (en) | 2006-03-16 | 2014-10-14 | Adaptive Computing Enterprises, Inc. | System and method for managing a hybrid compute environment |
US9231886B2 (en) | 2005-03-16 | 2016-01-05 | Adaptive Computing Enterprises, Inc. | Simple integration of an on-demand compute environment |
JP5076279B2 (ja) * | 2005-03-17 | 2012-11-21 | 富士通株式会社 | It資産管理システム、it資産管理方法およびit資産管理プログラム |
CA2603577A1 (en) | 2005-04-07 | 2006-10-12 | Cluster Resources, Inc. | On-demand access to compute resources |
US20060235664A1 (en) * | 2005-04-15 | 2006-10-19 | Microsoft Corporation | Model-based capacity planning |
US7797147B2 (en) * | 2005-04-15 | 2010-09-14 | Microsoft Corporation | Model-based system monitoring |
US8489728B2 (en) * | 2005-04-15 | 2013-07-16 | Microsoft Corporation | Model-based system monitoring |
US7802144B2 (en) * | 2005-04-15 | 2010-09-21 | Microsoft Corporation | Model-based system monitoring |
US7908606B2 (en) * | 2005-05-20 | 2011-03-15 | Unisys Corporation | Usage metering system |
US7743001B1 (en) * | 2005-06-21 | 2010-06-22 | Amazon Technologies, Inc. | Method and system for dynamic pricing of web services utilization |
JP2007004595A (ja) * | 2005-06-24 | 2007-01-11 | Hitachi Ltd | コンピュータ制御方法、コンピュータ、情報処理システム、及びプログラム |
JP4352028B2 (ja) * | 2005-06-29 | 2009-10-28 | 富士通株式会社 | 運用ポリシー評価システムおよび運用ポリシー評価プログラム |
US20070005320A1 (en) * | 2005-06-29 | 2007-01-04 | Microsoft Corporation | Model-based configuration management |
US20070016393A1 (en) * | 2005-06-29 | 2007-01-18 | Microsoft Corporation | Model-based propagation of attributes |
US8549513B2 (en) | 2005-06-29 | 2013-10-01 | Microsoft Corporation | Model-based virtual system provisioning |
US20070011214A1 (en) * | 2005-07-06 | 2007-01-11 | Venkateswararao Jujjuri | Oject level adaptive allocation technique |
US7461274B2 (en) * | 2005-08-23 | 2008-12-02 | International Business Machines Corporation | Method for maximizing server utilization in a resource constrained environment |
ATE458220T1 (de) * | 2005-09-12 | 2010-03-15 | Siemens Ag | Verfahren zur steuerung eines zugriffs auf ressourcen eines datenverarbeitungssystems und steuerungsprogramm |
US7526409B2 (en) | 2005-10-07 | 2009-04-28 | Oracle International Corporation | Automatic performance statistical comparison between two periods |
US8196150B2 (en) | 2005-10-07 | 2012-06-05 | Oracle International Corporation | Event locality using queue services |
JP5077617B2 (ja) * | 2005-10-27 | 2012-11-21 | 富士通株式会社 | 想定外需要検出システムおよび想定外需要検出プログラム |
US7941309B2 (en) * | 2005-11-02 | 2011-05-10 | Microsoft Corporation | Modeling IT operations/policies |
JP4129988B2 (ja) * | 2005-11-10 | 2008-08-06 | インターナショナル・ビジネス・マシーンズ・コーポレーション | リソースのプロビジョニング方法 |
US8355938B2 (en) | 2006-01-05 | 2013-01-15 | Wells Fargo Bank, N.A. | Capacity management index system and method |
US20070174460A1 (en) * | 2006-01-26 | 2007-07-26 | International Business Machines Corporation | Method and system for on demand weighted proportional distribution of enterprise allocations |
US7801128B2 (en) | 2006-03-31 | 2010-09-21 | Amazon Technologies, Inc. | Managing communications between computing nodes |
US7792944B2 (en) * | 2006-03-31 | 2010-09-07 | Amazon Technologies, Inc. | Executing programs based on user-specified constraints |
US8190682B2 (en) * | 2006-03-31 | 2012-05-29 | Amazon Technologies, Inc. | Managing execution of programs by multiple computing systems |
WO2007114643A1 (en) * | 2006-04-06 | 2007-10-11 | Samsung Electronics Co., Ltd | Apparatus and method for managing resource in multiple screens environment |
DE102006033863A1 (de) * | 2006-07-21 | 2008-01-24 | Siemens Ag | Verschaltungsschnittstelle für flexibles Online/Offline-Deployment einer n-schichtigen Softwareapplikation |
JP4751265B2 (ja) * | 2006-08-01 | 2011-08-17 | 株式会社日立製作所 | リソース管理システム及びその方法 |
US8116207B2 (en) * | 2006-08-21 | 2012-02-14 | Citrix Systems, Inc. | Systems and methods for weighted monitoring of network services |
US20080052397A1 (en) * | 2006-08-24 | 2008-02-28 | Ramanathan Venkataraman | Future locking of resources |
US7761538B2 (en) * | 2006-08-30 | 2010-07-20 | Microsoft Corporation | Dynamically configuring, allocating and deploying computing systems |
US7660884B2 (en) * | 2006-11-10 | 2010-02-09 | International Business Machines Corporation | Apparatus, system, and method for generating a resource utilization description for a parallel data processing system |
US8909599B2 (en) | 2006-11-16 | 2014-12-09 | Oracle International Corporation | Efficient migration of binary XML across databases |
US9106606B1 (en) | 2007-02-05 | 2015-08-11 | F5 Networks, Inc. | Method, intermediate device and computer program code for maintaining persistency |
US9027025B2 (en) * | 2007-04-17 | 2015-05-05 | Oracle International Corporation | Real-time database exception monitoring tool using instance eviction data |
US20080288622A1 (en) * | 2007-05-18 | 2008-11-20 | Microsoft Corporation | Managing Server Farms |
US7991910B2 (en) | 2008-11-17 | 2011-08-02 | Amazon Technologies, Inc. | Updating routing information based on client location |
US8028090B2 (en) | 2008-11-17 | 2011-09-27 | Amazon Technologies, Inc. | Request routing utilizing client location information |
US8239505B2 (en) * | 2007-06-29 | 2012-08-07 | Microsoft Corporation | Progressively implementing declarative models in distributed systems |
WO2009035263A1 (en) * | 2007-09-10 | 2009-03-19 | Electronics And Telecommunications Research Institute | Method for allocating resource and receiving data |
US8041773B2 (en) | 2007-09-24 | 2011-10-18 | The Research Foundation Of State University Of New York | Automatic clustering for self-organizing grids |
US8566439B2 (en) * | 2007-10-01 | 2013-10-22 | Ebay Inc | Method and system for intelligent request refusal in response to a network deficiency detection |
US20090125706A1 (en) * | 2007-11-08 | 2009-05-14 | Hoover Russell D | Software Pipelining on a Network on Chip |
US8281012B2 (en) * | 2008-01-30 | 2012-10-02 | International Business Machines Corporation | Managing parallel data processing jobs in grid environments |
US8539468B2 (en) * | 2008-02-18 | 2013-09-17 | International Business Machines Corporation | System and methods for replacing software application classes using transparent object adapters |
US8347307B2 (en) * | 2008-03-12 | 2013-01-01 | International Business Machines Corporation | Method and system for cost avoidance in virtualized computing environments |
US8533293B1 (en) | 2008-03-31 | 2013-09-10 | Amazon Technologies, Inc. | Client side cache management |
US8321568B2 (en) | 2008-03-31 | 2012-11-27 | Amazon Technologies, Inc. | Content management |
US8601090B1 (en) | 2008-03-31 | 2013-12-03 | Amazon Technologies, Inc. | Network resource identification |
US8606996B2 (en) * | 2008-03-31 | 2013-12-10 | Amazon Technologies, Inc. | Cache optimization |
US7962597B2 (en) | 2008-03-31 | 2011-06-14 | Amazon Technologies, Inc. | Request routing based on class |
US8156243B2 (en) | 2008-03-31 | 2012-04-10 | Amazon Technologies, Inc. | Request routing |
US7970820B1 (en) | 2008-03-31 | 2011-06-28 | Amazon Technologies, Inc. | Locality based content distribution |
US8447831B1 (en) | 2008-03-31 | 2013-05-21 | Amazon Technologies, Inc. | Incentive driven content delivery |
US7961610B1 (en) * | 2008-04-03 | 2011-06-14 | Clear Wireless Llc | Method and system for overload control |
US8332825B2 (en) * | 2008-06-26 | 2012-12-11 | Microsoft Corporation | Dynamically monitoring application behavior |
US9912740B2 (en) | 2008-06-30 | 2018-03-06 | Amazon Technologies, Inc. | Latency measurement in resource requests |
US9407681B1 (en) | 2010-09-28 | 2016-08-02 | Amazon Technologies, Inc. | Latency measurement in resource requests |
US7925782B2 (en) | 2008-06-30 | 2011-04-12 | Amazon Technologies, Inc. | Request routing using network computing components |
US8433680B2 (en) * | 2008-07-01 | 2013-04-30 | Oracle International Corporation | Capturing and restoring database session state |
US8019873B2 (en) * | 2008-09-30 | 2011-09-13 | Microsoft Corporation | Mesh platform utility computing portal |
US9875141B2 (en) * | 2008-10-01 | 2018-01-23 | Microsoft Technology Licensing, Llc | Managing pools of dynamic resources |
US7783752B2 (en) * | 2008-10-15 | 2010-08-24 | Microsoft Corporation | Automated role based usage determination for software system |
US9734466B2 (en) * | 2008-11-11 | 2017-08-15 | Sap Se | Multi-tenancy engine |
US8521880B1 (en) | 2008-11-17 | 2013-08-27 | Amazon Technologies, Inc. | Managing content delivery network service providers |
US8073940B1 (en) | 2008-11-17 | 2011-12-06 | Amazon Technologies, Inc. | Managing content delivery network service providers |
US8065417B1 (en) | 2008-11-17 | 2011-11-22 | Amazon Technologies, Inc. | Service provider registration by a content broker |
US8732309B1 (en) | 2008-11-17 | 2014-05-20 | Amazon Technologies, Inc. | Request routing utilizing cost information |
US8122098B1 (en) | 2008-11-17 | 2012-02-21 | Amazon Technologies, Inc. | Managing content delivery network service providers by a content broker |
US8060616B1 (en) | 2008-11-17 | 2011-11-15 | Amazon Technologies, Inc. | Managing CDN registration by a storage provider |
US8682842B2 (en) * | 2008-12-09 | 2014-03-25 | Yahoo! Inc. | System and method for logging operations |
US9128895B2 (en) * | 2009-02-19 | 2015-09-08 | Oracle International Corporation | Intelligent flood control management |
CN101820381B (zh) * | 2009-02-27 | 2013-06-12 | 华为技术有限公司 | 一种业务路由的方法,系统和装置 |
US8688837B1 (en) | 2009-03-27 | 2014-04-01 | Amazon Technologies, Inc. | Dynamically translating resource identifiers for request routing using popularity information |
US8521851B1 (en) | 2009-03-27 | 2013-08-27 | Amazon Technologies, Inc. | DNS query processing using resource identifiers specifying an application broker |
US8412823B1 (en) | 2009-03-27 | 2013-04-02 | Amazon Technologies, Inc. | Managing tracking information entries in resource cache components |
US8756341B1 (en) * | 2009-03-27 | 2014-06-17 | Amazon Technologies, Inc. | Request routing utilizing popularity information |
US8261266B2 (en) * | 2009-04-30 | 2012-09-04 | Microsoft Corporation | Deploying a virtual machine having a virtual hardware configuration matching an improved hardware profile with respect to execution of an application |
US8762680B2 (en) | 2009-05-19 | 2014-06-24 | International Business Machines Corporation | Scaling energy use in a virtualized environment |
US8356193B2 (en) * | 2009-05-19 | 2013-01-15 | International Business Machines Corporation | Scaling energy use in a virtualized environment |
US8238538B2 (en) | 2009-05-28 | 2012-08-07 | Comcast Cable Communications, Llc | Stateful home phone service |
TW201112006A (en) * | 2009-05-29 | 2011-04-01 | Ibm | Computer system, method and program product |
US8549038B2 (en) | 2009-06-15 | 2013-10-01 | Oracle International Corporation | Pluggable session context |
US20100318454A1 (en) * | 2009-06-16 | 2010-12-16 | Microsoft Corporation | Function and Constraint Based Service Agreements |
US8782236B1 (en) | 2009-06-16 | 2014-07-15 | Amazon Technologies, Inc. | Managing resources using resource expiration data |
WO2010146761A1 (ja) * | 2009-06-19 | 2010-12-23 | 日本電気株式会社 | ネットワークサービス制御システム、ネットワークサービス制御方法および記憶媒体 |
US8397073B1 (en) | 2009-09-04 | 2013-03-12 | Amazon Technologies, Inc. | Managing secure content in a content delivery network |
US8935702B2 (en) | 2009-09-04 | 2015-01-13 | International Business Machines Corporation | Resource optimization for parallel data integration |
US8775125B1 (en) * | 2009-09-10 | 2014-07-08 | Jpmorgan Chase Bank, N.A. | System and method for improved processing performance |
WO2011032039A1 (en) * | 2009-09-11 | 2011-03-17 | O'brien John W | System for dynamically allocating natural resources |
US8433771B1 (en) | 2009-10-02 | 2013-04-30 | Amazon Technologies, Inc. | Distribution network with forward resource propagation |
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 |
US11720290B2 (en) | 2009-10-30 | 2023-08-08 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
US10877695B2 (en) | 2009-10-30 | 2020-12-29 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
US8700752B2 (en) * | 2009-11-03 | 2014-04-15 | International Business Machines Corporation | Optimized efficient LPAR capacity consolidation |
US9165086B2 (en) | 2010-01-20 | 2015-10-20 | Oracle International Corporation | Hybrid binary XML storage model for efficient XML processing |
US9495338B1 (en) | 2010-01-28 | 2016-11-15 | Amazon Technologies, Inc. | Content distribution network |
US9027017B2 (en) | 2010-02-22 | 2015-05-05 | Virtustream, Inc. | Methods and apparatus for movement of virtual resources within a data center environment |
US9122538B2 (en) | 2010-02-22 | 2015-09-01 | Virtustream, Inc. | Methods and apparatus related to management of unit-based virtual resources within a data center environment |
US8473959B2 (en) * | 2010-02-22 | 2013-06-25 | Virtustream, Inc. | Methods and apparatus related to migration of customer resources to virtual resources within a data center environment |
US8819208B2 (en) | 2010-03-05 | 2014-08-26 | Solidfire, Inc. | Data deletion in a distributed data storage system |
US9342801B2 (en) | 2010-03-29 | 2016-05-17 | Amazon Technologies, Inc. | Managing committed processing rates for shared resources |
SG184162A1 (en) | 2010-03-29 | 2012-10-30 | Amazon Tech Inc | Managing committed request rates for shared resources |
US20110238857A1 (en) * | 2010-03-29 | 2011-09-29 | Amazon Technologies, Inc. | Committed processing rates for shared resources |
US11348148B2 (en) * | 2010-05-26 | 2022-05-31 | Userzoom Technologies, Inc. | Systems and methods for an intelligent sourcing engine for study participants |
US8756272B1 (en) | 2010-08-26 | 2014-06-17 | Amazon Technologies, Inc. | Processing encoded content |
DE102010036292A1 (de) * | 2010-08-27 | 2012-03-01 | Siemens Aktiengesellschaft | Verfahren und Vorrichtung zum automatischen Bewerten einer Zulieferanlage |
US8694400B1 (en) | 2010-09-14 | 2014-04-08 | Amazon Technologies, Inc. | Managing operational throughput for shared resources |
US8612330B1 (en) | 2010-09-14 | 2013-12-17 | Amazon Technologies, Inc. | Managing bandwidth for shared resources |
US8533103B1 (en) * | 2010-09-14 | 2013-09-10 | Amazon Technologies, Inc. | Maintaining latency guarantees for shared resources |
US8458530B2 (en) | 2010-09-21 | 2013-06-04 | Oracle International Corporation | Continuous system health indicator for managing computer system alerts |
US8468247B1 (en) | 2010-09-28 | 2013-06-18 | Amazon Technologies, Inc. | Point of presence management in request routing |
US9003035B1 (en) | 2010-09-28 | 2015-04-07 | Amazon Technologies, Inc. | Point of presence management in request routing |
US10097398B1 (en) | 2010-09-28 | 2018-10-09 | Amazon Technologies, Inc. | Point of presence management in request routing |
US8938526B1 (en) | 2010-09-28 | 2015-01-20 | Amazon Technologies, Inc. | Request routing management based on network components |
US10958501B1 (en) | 2010-09-28 | 2021-03-23 | Amazon Technologies, Inc. | Request routing information based on client IP groupings |
US9712484B1 (en) | 2010-09-28 | 2017-07-18 | Amazon Technologies, Inc. | Managing request routing information utilizing client identifiers |
US8930513B1 (en) | 2010-09-28 | 2015-01-06 | Amazon Technologies, Inc. | Latency measurement in resource requests |
US8924528B1 (en) | 2010-09-28 | 2014-12-30 | Amazon Technologies, Inc. | Latency measurement in resource requests |
US8819283B2 (en) | 2010-09-28 | 2014-08-26 | Amazon Technologies, Inc. | Request routing in a networked environment |
US8577992B1 (en) | 2010-09-28 | 2013-11-05 | Amazon Technologies, Inc. | Request routing management based on network components |
US8621477B2 (en) * | 2010-10-29 | 2013-12-31 | International Business Machines Corporation | Real-time monitoring of job resource consumption and prediction of resource deficiency based on future availability |
US8452874B2 (en) | 2010-11-22 | 2013-05-28 | Amazon Technologies, Inc. | Request routing processing |
US8626950B1 (en) | 2010-12-03 | 2014-01-07 | Amazon Technologies, Inc. | Request routing processing |
US9391949B1 (en) | 2010-12-03 | 2016-07-12 | Amazon Technologies, Inc. | Request routing processing |
US10467042B1 (en) | 2011-04-27 | 2019-11-05 | Amazon Technologies, Inc. | Optimized deployment based upon customer locality |
US8490092B2 (en) | 2011-07-06 | 2013-07-16 | Microsoft Corporation | Combined live migration and storage migration using file shares and mirroring |
EP2748705A4 (en) | 2011-08-25 | 2015-05-20 | Virtustream Inc | SYSTEMS AND METHODS FOR HOST-RELATED RESOURCE MANAGEMENT WITH CLUSTER-BASED RESOURCE POOLS |
US9619357B2 (en) * | 2011-09-28 | 2017-04-11 | International Business Machines Corporation | Hybrid storage devices |
US8644335B2 (en) * | 2011-09-29 | 2014-02-04 | Alcatel Lucent | Access node for a communications network |
US20130091065A1 (en) * | 2011-10-10 | 2013-04-11 | Sonicwall, Inc. | Automatic spike licensing |
US8880022B2 (en) * | 2011-11-10 | 2014-11-04 | Microsoft Corporation | Providing per-application resource usage information |
US9367354B1 (en) | 2011-12-05 | 2016-06-14 | Amazon Technologies, Inc. | Queued workload service in a multi tenant environment |
US9054992B2 (en) | 2011-12-27 | 2015-06-09 | Solidfire, Inc. | Quality of service policy sets |
US9003021B2 (en) | 2011-12-27 | 2015-04-07 | Solidfire, Inc. | Management of storage system access based on client performance and cluser health |
US9838269B2 (en) | 2011-12-27 | 2017-12-05 | Netapp, Inc. | Proportional quality of service based on client usage and system metrics |
US9223607B2 (en) * | 2012-01-17 | 2015-12-29 | Microsoft Technology Licensing, Llc | System for replicating or migrating virtual machine operations log by throttling guest write iOS based on destination throughput |
US8904009B1 (en) | 2012-02-10 | 2014-12-02 | Amazon Technologies, Inc. | Dynamic content delivery |
US10021179B1 (en) | 2012-02-21 | 2018-07-10 | Amazon Technologies, Inc. | Local resource delivery network |
US9172674B1 (en) | 2012-03-21 | 2015-10-27 | Amazon Technologies, Inc. | Managing request routing information utilizing performance information |
US9760928B1 (en) | 2012-03-26 | 2017-09-12 | Amazon Technologies, Inc. | Cloud resource marketplace for third-party capacity |
US9055067B1 (en) | 2012-03-26 | 2015-06-09 | Amazon Technologies, Inc. | Flexible-location reservations and pricing for network-accessible resource capacity |
US11206579B1 (en) | 2012-03-26 | 2021-12-21 | Amazon Technologies, Inc. | Dynamic scheduling for network data transfers |
US9479382B1 (en) | 2012-03-27 | 2016-10-25 | Amazon Technologies, Inc. | Execution plan generation and scheduling for network-accessible resources |
US9294236B1 (en) | 2012-03-27 | 2016-03-22 | Amazon Technologies, Inc. | Automated cloud resource trading system |
US9240025B1 (en) | 2012-03-27 | 2016-01-19 | Amazon Technologies, Inc. | Dynamic pricing of network-accessible resources for stateful applications |
US10223647B1 (en) | 2012-03-27 | 2019-03-05 | Amazon Technologies, Inc. | Dynamic modification of interruptibility settings for network-accessible resources |
US9985848B1 (en) | 2012-03-27 | 2018-05-29 | Amazon Technologies, Inc. | Notification based pricing of excess cloud capacity |
US10623408B1 (en) | 2012-04-02 | 2020-04-14 | Amazon Technologies, Inc. | Context sensitive object management |
US9118520B1 (en) * | 2012-04-20 | 2015-08-25 | Symantec Corporation | Systems and methods for monitoring application resource usage on mobile computing systems |
US8676622B1 (en) * | 2012-05-01 | 2014-03-18 | Amazon Technologies, Inc. | Job resource planner for cloud computing environments |
US10686677B1 (en) | 2012-05-18 | 2020-06-16 | Amazon Technologies, Inc. | Flexible capacity reservations for network-accessible resources |
US10152449B1 (en) | 2012-05-18 | 2018-12-11 | Amazon Technologies, Inc. | User-defined capacity reservation pools for network-accessible resources |
US9246986B1 (en) | 2012-05-21 | 2016-01-26 | Amazon Technologies, Inc. | Instance selection ordering policies for network-accessible resources |
US10555145B1 (en) * | 2012-06-05 | 2020-02-04 | Amazon Technologies, Inc. | Learned configuration of modification policies for program execution capacity |
US9154551B1 (en) | 2012-06-11 | 2015-10-06 | Amazon Technologies, Inc. | Processing DNS queries to identify pre-processing information |
US10846788B1 (en) | 2012-06-28 | 2020-11-24 | Amazon Technologies, Inc. | Resource group traffic rate service |
US9306870B1 (en) | 2012-06-28 | 2016-04-05 | Amazon Technologies, Inc. | Emulating circuit switching in cloud networking environments |
US9154589B1 (en) | 2012-06-28 | 2015-10-06 | Amazon Technologies, Inc. | Bandwidth-optimized cloud resource placement service |
US9600206B2 (en) | 2012-08-01 | 2017-03-21 | Microsoft Technology Licensing, Llc | Request ordering support when switching virtual disk replication logs |
US10754699B2 (en) * | 2012-08-05 | 2020-08-25 | International Business Machines Corporation | Remote provisioning of virtual appliances for access to virtualized storage |
US9525659B1 (en) | 2012-09-04 | 2016-12-20 | Amazon Technologies, Inc. | Request routing utilizing point of presence load information |
US9135048B2 (en) | 2012-09-20 | 2015-09-15 | Amazon Technologies, Inc. | Automated profiling of resource usage |
US9323577B2 (en) | 2012-09-20 | 2016-04-26 | Amazon Technologies, Inc. | Automated profiling of resource usage |
CN104885059B (zh) * | 2012-12-12 | 2017-09-08 | 株式会社东芝 | 云系统管理装置、云系统及重新配置方法 |
US10205698B1 (en) | 2012-12-19 | 2019-02-12 | Amazon Technologies, Inc. | Source-dependent address resolution |
US8984243B1 (en) | 2013-02-22 | 2015-03-17 | Amazon Technologies, Inc. | Managing operational parameters for electronic resources |
US9294391B1 (en) | 2013-06-04 | 2016-03-22 | Amazon Technologies, Inc. | Managing network computing components utilizing request routing |
ES2671627T3 (es) * | 2013-06-21 | 2018-06-07 | Alcatel Lucent | Sistema y procedimiento IMS en nube elástico y escalable |
US9372757B2 (en) | 2013-10-18 | 2016-06-21 | Netapp, Inc. | Incremental block level backup |
US20150244795A1 (en) | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
US9377953B2 (en) | 2014-04-23 | 2016-06-28 | Netapp, Inc. | Efficiency sets in a distributed system |
US9372789B2 (en) | 2014-05-30 | 2016-06-21 | Netapp, Inc. | Log-structured filed system with file branching |
US10241886B2 (en) * | 2014-06-04 | 2019-03-26 | Sugarcrm Inc. | Application performance perception meter |
US9798728B2 (en) | 2014-07-24 | 2017-10-24 | Netapp, Inc. | System performing data deduplication using a dense tree data structure |
US10133511B2 (en) | 2014-09-12 | 2018-11-20 | Netapp, Inc | Optimized segment cleaning technique |
US9671960B2 (en) | 2014-09-12 | 2017-06-06 | Netapp, Inc. | Rate matching technique for balancing segment cleaning and I/O workload |
US10896432B1 (en) * | 2014-09-22 | 2021-01-19 | Amazon Technologies, Inc. | Bandwidth cost assignment for multi-tenant networks |
US10530880B2 (en) | 2014-10-31 | 2020-01-07 | Netapp, Inc. | Scalable multiple VLAN multi-tenant networking |
US9836229B2 (en) | 2014-11-18 | 2017-12-05 | Netapp, Inc. | N-way merge technique for updating volume metadata in a storage I/O stack |
US10033627B1 (en) | 2014-12-18 | 2018-07-24 | Amazon Technologies, Inc. | Routing mode and point-of-presence selection service |
US10097448B1 (en) | 2014-12-18 | 2018-10-09 | Amazon Technologies, Inc. | Routing mode and point-of-presence selection service |
US10091096B1 (en) | 2014-12-18 | 2018-10-02 | Amazon Technologies, Inc. | Routing mode and point-of-presence selection service |
CN105791073B (zh) * | 2014-12-23 | 2019-07-19 | 华为技术有限公司 | 一种虚拟化网络中业务部署的方法和装置 |
US9720601B2 (en) | 2015-02-11 | 2017-08-01 | Netapp, Inc. | Load balancing technique for a storage array |
US10225326B1 (en) | 2015-03-23 | 2019-03-05 | Amazon Technologies, Inc. | Point of presence based data uploading |
US9762460B2 (en) | 2015-03-24 | 2017-09-12 | Netapp, Inc. | Providing continuous context for operational information of a storage system |
US9887932B1 (en) | 2015-03-30 | 2018-02-06 | Amazon Technologies, Inc. | Traffic surge management for points of presence |
US9710317B2 (en) | 2015-03-30 | 2017-07-18 | Netapp, Inc. | Methods to identify, handle and recover from suspect SSDS in a clustered flash array |
US9819567B1 (en) | 2015-03-30 | 2017-11-14 | Amazon Technologies, Inc. | Traffic surge management for points of presence |
US9887931B1 (en) | 2015-03-30 | 2018-02-06 | Amazon Technologies, Inc. | Traffic surge management for points of presence |
US9832141B1 (en) | 2015-05-13 | 2017-11-28 | Amazon Technologies, Inc. | Routing based request correlation |
US10616179B1 (en) | 2015-06-25 | 2020-04-07 | Amazon Technologies, Inc. | Selective routing of domain name system (DNS) requests |
US10097566B1 (en) | 2015-07-31 | 2018-10-09 | Amazon Technologies, Inc. | Identifying targets of network attacks |
US20170032300A1 (en) * | 2015-07-31 | 2017-02-02 | International Business Machines Corporation | Dynamic selection of resources on which an action is performed |
US9740566B2 (en) | 2015-07-31 | 2017-08-22 | Netapp, Inc. | Snapshot creation workflow |
CN106452818B (zh) * | 2015-08-13 | 2020-01-21 | 阿里巴巴集团控股有限公司 | 一种资源调度的方法和系统 |
US9742795B1 (en) | 2015-09-24 | 2017-08-22 | Amazon Technologies, Inc. | Mitigating network attacks |
US9794281B1 (en) | 2015-09-24 | 2017-10-17 | Amazon Technologies, Inc. | Identifying sources of network attacks |
US9774619B1 (en) | 2015-09-24 | 2017-09-26 | Amazon Technologies, Inc. | Mitigating network attacks |
US9400609B1 (en) | 2015-11-04 | 2016-07-26 | Netapp, Inc. | Data transformation during recycling |
US10270878B1 (en) | 2015-11-10 | 2019-04-23 | Amazon Technologies, Inc. | Routing for origin-facing points of presence |
US10158726B2 (en) * | 2015-12-02 | 2018-12-18 | International Business Machines Corporation | Supporting high availability for orchestrated services |
US10049051B1 (en) | 2015-12-11 | 2018-08-14 | Amazon Technologies, Inc. | Reserved cache space in content delivery networks |
US10257307B1 (en) | 2015-12-11 | 2019-04-09 | Amazon Technologies, Inc. | Reserved cache space in content delivery networks |
US9613046B1 (en) | 2015-12-14 | 2017-04-04 | Netapp, Inc. | Parallel optimized remote synchronization of active block storage |
US10289617B2 (en) | 2015-12-17 | 2019-05-14 | Oracle International Corporation | Accessing on-premise and off-premise datastores that are organized using different application schemas |
US10387387B2 (en) | 2015-12-17 | 2019-08-20 | Oracle International Corporation | Enabling multi-tenant access to respective isolated data sets organized using different application schemas |
US10348639B2 (en) | 2015-12-18 | 2019-07-09 | Amazon Technologies, Inc. | Use of virtual endpoints to improve data transmission rates |
US10339198B2 (en) * | 2015-12-18 | 2019-07-02 | Bitly, Inc. | Systems and methods for benchmarking online activity via encoded links |
US9537827B1 (en) | 2015-12-21 | 2017-01-03 | Netapp, Inc. | Secure mode VLANs systems and methods |
US10432491B2 (en) * | 2016-03-22 | 2019-10-01 | Intel Corporation | Control device for estimation of power consumption and energy efficiency of application containers |
US10929022B2 (en) | 2016-04-25 | 2021-02-23 | Netapp. Inc. | Space savings reporting for storage system supporting snapshot and clones |
US10075551B1 (en) | 2016-06-06 | 2018-09-11 | Amazon Technologies, Inc. | Request management for hierarchical cache |
US10460124B2 (en) * | 2016-06-20 | 2019-10-29 | Netapp, Inc. | Per-volume tenant encryption and external key manager |
US10110694B1 (en) | 2016-06-29 | 2018-10-23 | Amazon Technologies, Inc. | Adaptive transfer rate for retrieving content from a server |
US10334026B2 (en) * | 2016-08-08 | 2019-06-25 | Bank Of America Corporation | Resource assignment system |
US9992086B1 (en) | 2016-08-23 | 2018-06-05 | Amazon Technologies, Inc. | External health checking of virtual private cloud network environments |
US10033691B1 (en) | 2016-08-24 | 2018-07-24 | Amazon Technologies, Inc. | Adaptive resolution of domain name requests in virtual private cloud network environments |
US10303894B2 (en) | 2016-08-31 | 2019-05-28 | Oracle International Corporation | Fine-grained access control for data manipulation language (DML) operations on relational data |
US10540217B2 (en) | 2016-09-16 | 2020-01-21 | Oracle International Corporation | Message cache sizing |
US10642763B2 (en) | 2016-09-20 | 2020-05-05 | Netapp, Inc. | Quality of service policy sets |
US10474653B2 (en) | 2016-09-30 | 2019-11-12 | Oracle International Corporation | Flexible in-memory column store placement |
US10505961B2 (en) | 2016-10-05 | 2019-12-10 | Amazon Technologies, Inc. | Digitally signed network address |
US10831549B1 (en) | 2016-12-27 | 2020-11-10 | Amazon Technologies, Inc. | Multi-region request-driven code execution system |
US10372499B1 (en) | 2016-12-27 | 2019-08-06 | Amazon Technologies, Inc. | Efficient region selection system for executing request-driven code |
US10938884B1 (en) | 2017-01-30 | 2021-03-02 | Amazon Technologies, Inc. | Origin server cloaking using virtual private cloud network environments |
US10503613B1 (en) | 2017-04-21 | 2019-12-10 | Amazon Technologies, Inc. | Efficient serving of resources during server unavailability |
US10269456B2 (en) | 2017-05-05 | 2019-04-23 | Bank Of America Corporation | System for identification of treatment and resource deployment based on treatment interaction |
US10454941B2 (en) | 2017-05-05 | 2019-10-22 | Bank Of America Corporation | Person-to-person network architecture for secure authorization and approval |
US10872321B2 (en) | 2017-05-05 | 2020-12-22 | Bank Of America Corporation | Machine initiated user status update system |
US10437899B2 (en) | 2017-05-05 | 2019-10-08 | Bank Of America Corporation | System for distributed server data management with multi-user access |
US11075987B1 (en) | 2017-06-12 | 2021-07-27 | Amazon Technologies, Inc. | Load estimating content delivery network |
US10447648B2 (en) | 2017-06-19 | 2019-10-15 | Amazon Technologies, Inc. | Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP |
US10034608B1 (en) | 2017-08-14 | 2018-07-31 | Bank Of America Corporation | System for receiving transmissions from disparate node and triggering automatic portal action |
US10541939B2 (en) * | 2017-08-15 | 2020-01-21 | Google Llc | Systems and methods for provision of a guaranteed batch |
US10742593B1 (en) | 2017-09-25 | 2020-08-11 | Amazon Technologies, Inc. | Hybrid content request routing system |
US10437647B2 (en) * | 2017-09-26 | 2019-10-08 | Verizon Patent And Licensing Inc. | Cluster configuration with zero touch provisioning |
US11556500B2 (en) | 2017-09-29 | 2023-01-17 | Oracle International Corporation | Session templates |
US10477544B2 (en) * | 2017-12-19 | 2019-11-12 | Raytheon Company | System and method for sharing RF signal processing |
US10592578B1 (en) | 2018-03-07 | 2020-03-17 | Amazon Technologies, Inc. | Predictive content push-enabled content delivery network |
US11106551B1 (en) * | 2018-04-30 | 2021-08-31 | Amazon Technologies, Inc. | Compute capacity reservations for disaster recovery scenarios |
US10929190B2 (en) * | 2018-08-01 | 2021-02-23 | International Business Machines Corporation | Heterogeneous resource reservation |
US10579432B1 (en) * | 2018-08-13 | 2020-03-03 | Twitter, Inc. | Load balancing deterministically-subsetted processing resources using fractional loads |
US10862852B1 (en) | 2018-11-16 | 2020-12-08 | Amazon Technologies, Inc. | Resolution of domain name requests in heterogeneous network environments |
US11025747B1 (en) | 2018-12-12 | 2021-06-01 | Amazon Technologies, Inc. | Content request pattern-based routing system |
CN110502338B (zh) * | 2019-07-16 | 2023-04-11 | 蚂蚁金服(杭州)网络技术有限公司 | 一种性能扩容预测方法、装置、计算设备及存储介质 |
US11936739B2 (en) | 2019-09-12 | 2024-03-19 | Oracle International Corporation | Automated reset of session state |
JP2021197039A (ja) * | 2020-06-17 | 2021-12-27 | 株式会社日立製作所 | バースト可能インスタンス推奨装置、方法、及びプログラム。 |
US20220171667A1 (en) * | 2020-11-30 | 2022-06-02 | Amazon Technologies, Inc. | Application reliability service |
US11809912B2 (en) | 2020-12-09 | 2023-11-07 | Dell Products L.P. | System and method for allocating resources to perform workloads |
US11704159B2 (en) | 2020-12-09 | 2023-07-18 | Dell Products L.P. | System and method for unified infrastructure architecture |
US11698821B2 (en) | 2020-12-09 | 2023-07-11 | Dell Products L.P. | Composable information handling systems in an open network using access control managers |
US11853782B2 (en) | 2020-12-09 | 2023-12-26 | Dell Products L.P. | Method and system for composing systems using resource sets |
US11604595B2 (en) | 2020-12-09 | 2023-03-14 | Dell Products L.P. | Data mirroring and data migration between storage volumes using system control processors |
US11693703B2 (en) | 2020-12-09 | 2023-07-04 | Dell Products L.P. | Monitoring resource utilization via intercepting bare metal communications between resources |
US11934875B2 (en) | 2020-12-09 | 2024-03-19 | Dell Products L.P. | Method and system for maintaining composed systems |
US11928515B2 (en) | 2020-12-09 | 2024-03-12 | Dell Products L.P. | System and method for managing resource allocations in composed systems |
US11675625B2 (en) * | 2020-12-09 | 2023-06-13 | Dell Products L.P. | Thin provisioning of resources using SCPS and a bidding system |
US11675665B2 (en) | 2020-12-09 | 2023-06-13 | Dell Products L.P. | System and method for backup generation using composed systems |
US11809911B2 (en) | 2020-12-09 | 2023-11-07 | Dell Products L.P. | Resuming workload execution in composed information handling system |
US11797341B2 (en) | 2021-01-28 | 2023-10-24 | Dell Products L.P. | System and method for performing remediation action during operation analysis |
US11768612B2 (en) | 2021-01-28 | 2023-09-26 | Dell Products L.P. | System and method for distributed deduplication in a composed system |
US11675916B2 (en) | 2021-01-28 | 2023-06-13 | Dell Products L.P. | Method and system for limiting data accessibility in composed systems |
US11687280B2 (en) | 2021-01-28 | 2023-06-27 | Dell Products L.P. | Method and system for efficient servicing of storage access requests |
US11947697B2 (en) | 2021-07-22 | 2024-04-02 | Dell Products L.P. | Method and system to place resources in a known state to be used in a composed information handling system |
US11928506B2 (en) | 2021-07-28 | 2024-03-12 | Dell Products L.P. | Managing composition service entities with complex networks |
US11973824B2 (en) * | 2021-09-23 | 2024-04-30 | Shanghai Anviz Technology Co., Ltd. | Method for data transmission of audio and video in end-to-end system |
US11509598B1 (en) * | 2021-11-19 | 2022-11-22 | Microsoft Technology Licensing, Llc | Dynamically re-allocating computing resources while maintaining network connection(s) |
JP7418685B1 (ja) | 2023-06-02 | 2024-01-22 | 株式会社ユーズウェア | 飼料配合設計システム、飼料配合設計プログラム及び、飼料配合設計方法 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5574914A (en) * | 1993-01-04 | 1996-11-12 | Unisys Corporation | Method and apparatus for performing system resource partitioning |
JP3522820B2 (ja) * | 1994-03-15 | 2004-04-26 | 株式会社東芝 | 分散処理システム |
EP0694837A1 (en) | 1994-07-25 | 1996-01-31 | International Business Machines Corporation | Dynamic workload balancing |
US5790868A (en) * | 1995-06-07 | 1998-08-04 | Tandem Computers, Inc. | Customer information control system and method with transaction serialization control functions in a loosely coupled parallel processing environment |
JP3083476B2 (ja) * | 1996-03-06 | 2000-09-04 | 松下電器産業株式会社 | アプリケーションサーバシステム |
US6182109B1 (en) * | 1996-03-08 | 2001-01-30 | International Business Machines Corporation | Dynamic execution unit management for high performance user level network server system |
US6240454B1 (en) | 1996-09-09 | 2001-05-29 | Avaya Technology Corp. | Dynamic reconfiguration of network servers |
US5949977A (en) * | 1996-10-08 | 1999-09-07 | Aubeta Technology, Llc | Method and apparatus for requesting and processing services from a plurality of nodes connected via common communication links |
GB9705371D0 (en) * | 1997-03-14 | 1997-04-30 | British Telecomm | Control of data transfer and distributed data processing |
CA2246867A1 (en) | 1997-09-26 | 1999-03-26 | Robert Joseph Thornberry Jr. | Internet performance network |
US6631425B1 (en) * | 1997-10-28 | 2003-10-07 | Microsoft Corporation | Just-in-time activation and as-soon-as-possible deactivation or server application components |
US6086618A (en) * | 1998-01-26 | 2000-07-11 | Microsoft Corporation | Method and computer program product for estimating total resource usage requirements of a server application in a hypothetical user configuration |
US6327622B1 (en) * | 1998-09-03 | 2001-12-04 | Sun Microsystems, Inc. | Load balancing in a network environment |
US6763519B1 (en) * | 1999-05-05 | 2004-07-13 | Sychron Inc. | Multiprogrammed multiprocessor system with lobally controlled communication and signature controlled scheduling |
US6665701B1 (en) * | 1999-08-03 | 2003-12-16 | Worldcom, Inc. | Method and system for contention controlled data exchange in a distributed network-based resource allocation |
US6779016B1 (en) | 1999-08-23 | 2004-08-17 | Terraspring, Inc. | Extensible computing system |
US6578068B1 (en) * | 1999-08-31 | 2003-06-10 | Accenture Llp | Load balancer in environment services patterns |
JP2001117887A (ja) | 1999-10-14 | 2001-04-27 | Nec Corp | 分散型アプリケーションサーバシステム,サービス方法および記録媒体 |
US6976258B1 (en) | 1999-11-30 | 2005-12-13 | Ensim Corporation | Providing quality of service guarantees to virtual hosts |
ATE240548T1 (de) | 2000-01-12 | 2003-05-15 | Fileants Ag | Verfahren und system zum aufbauen einer online dienstleistungs-plattform und rechnerprogrammprodukt |
US6711607B1 (en) * | 2000-02-04 | 2004-03-23 | Ensim Corporation | Dynamic scheduling of task streams in a multiple-resource system to ensure task stream quality of service |
JP2001319153A (ja) | 2000-05-02 | 2001-11-16 | Fujitsu Ltd | 操作単位課金システム |
JP3666365B2 (ja) | 2000-06-15 | 2005-06-29 | 日本電気株式会社 | オンライン時間帯予約システムおよびオンライン時間帯予約方法 |
US6868539B1 (en) * | 2000-06-28 | 2005-03-15 | Microsoft Corp. | System and method providing single application image |
NL1015579C1 (nl) | 2000-06-30 | 2002-01-02 | Thales Nederland Bv | Werkwijze voor het automatisch verdelen van programmataken over een verzameling processors. |
JP4292693B2 (ja) * | 2000-07-07 | 2009-07-08 | 株式会社日立製作所 | 計算機資源分割装置および資源分割方法 |
US7596784B2 (en) * | 2000-09-12 | 2009-09-29 | Symantec Operating Corporation | Method system and apparatus for providing pay-per-use distributed computing resources |
WO2002089014A1 (en) * | 2001-04-26 | 2002-11-07 | Creekpath Systems, Inc. | A system for global and local data resource management for service guarantees |
-
2001
- 2001-08-03 US US09/921,868 patent/US7174379B2/en not_active Expired - Fee Related
-
2002
- 2002-03-21 EP EP02706985A patent/EP1412857B1/en not_active Expired - Lifetime
- 2002-03-21 DE DE60221019T patent/DE60221019T2/de not_active Expired - Lifetime
- 2002-03-21 WO PCT/GB2002/001368 patent/WO2003014928A2/en active IP Right Grant
- 2002-03-21 KR KR1020037017243A patent/KR100570141B1/ko not_active IP Right Cessation
- 2002-03-21 JP JP2003519792A patent/JP4527976B2/ja not_active Expired - Fee Related
- 2002-03-21 AT AT02706985T patent/ATE366439T1/de not_active IP Right Cessation
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8181219B2 (en) | 2004-10-01 | 2012-05-15 | Microsoft Corporation | Access authorization having embedded policies |
US8453200B2 (en) | 2004-10-01 | 2013-05-28 | Microsoft Corporation | Access authorization having embedded policies |
US8931035B2 (en) | 2004-10-01 | 2015-01-06 | Microsoft Corporation | Access authorization having embedded policies |
US9069941B2 (en) | 2004-10-01 | 2015-06-30 | Microsoft Technology Licensing, Llc | Access authorization having embedded policies |
Also Published As
Publication number | Publication date |
---|---|
WO2003014928A3 (en) | 2003-11-27 |
DE60221019D1 (de) | 2007-08-16 |
JP4527976B2 (ja) | 2010-08-18 |
EP1412857A2 (en) | 2004-04-28 |
US7174379B2 (en) | 2007-02-06 |
JP2004538573A (ja) | 2004-12-24 |
ATE366439T1 (de) | 2007-07-15 |
KR100570141B1 (ko) | 2006-04-12 |
DE60221019T2 (de) | 2008-03-06 |
US20030028642A1 (en) | 2003-02-06 |
EP1412857B1 (en) | 2007-07-04 |
WO2003014928A2 (en) | 2003-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100570141B1 (ko) | 복수의 애플리케이션 레벨 사용자를 위한 접속 제공 방법, 시스템, 및 기록 매체 | |
Almeida et al. | Resource management in the autonomic service-oriented architecture | |
US20230147352A1 (en) | On-Demand Access to Compute Resources | |
US7870256B2 (en) | Remote desktop performance model for assigning resources | |
US7584281B2 (en) | Method for allocating shared computing infrastructure for application server-based deployments | |
Appleby et al. | Oceano-SLA based management of a computing utility | |
US8346909B2 (en) | Method for supporting transaction and parallel application workloads across multiple domains based on service level agreements | |
US7774457B1 (en) | Resource evaluation for a batch job and an interactive session concurrently executed in a grid computing environment | |
US7870568B2 (en) | Adaptive shared computing infrastructure for application server-based deployments | |
EP1806002B1 (en) | Method for managing resources in a platform for telecommunication service and/or network management, corresponding platform and computer program product therefor | |
US11836535B1 (en) | System and method of providing cloud bursting capabilities in a compute environment | |
US20060294238A1 (en) | Policy-based hierarchical management of shared resources in a grid environment | |
US20060117317A1 (en) | On-demand utility services utilizing yield management | |
US20130346360A1 (en) | Tenant placement in multitenant databases for profit maximization | |
Sharma et al. | SLA-based agile VM management in cloud & datacenter | |
Llorente et al. | On the management of virtual machines for cloud infrastructures | |
JP5670290B2 (ja) | 通信サービスのためのプロセスの実行のためのリソースを管理する方法、システム及びコンピュータ・プログラム | |
US20220100573A1 (en) | Cloud bursting technologies | |
Pazel et al. | Neptune: A dynamic resource allocation and planning system for a cluster computing utility | |
Rolia et al. | Grids for enterprise applications | |
Mitrani | Management of server farms for performance and profit | |
Sfakianakis et al. | DyRAC: Cost-aware Resource Assignment and Provider Selection for Dynamic Cloud Workloads | |
Awasthi | Energy saving scheme for cloud computing using task scheduling scheme with vacation queuing model | |
Priyatharsini et al. | Load Balancing and Prudential Hypervisor in Cloud Computing | |
Ardagna et al. | A Cost-Oriented Tool to Support Server Consolidation. |
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: 20110302 Year of fee payment: 6 |
|
LAPS | Lapse due to unpaid annual fee |