KR20140064850A - 클러스터화된 클라이언트 페일오버 - Google Patents

클러스터화된 클라이언트 페일오버 Download PDF

Info

Publication number
KR20140064850A
KR20140064850A KR1020147006256A KR20147006256A KR20140064850A KR 20140064850 A KR20140064850 A KR 20140064850A KR 1020147006256 A KR1020147006256 A KR 1020147006256A KR 20147006256 A KR20147006256 A KR 20147006256A KR 20140064850 A KR20140064850 A KR 20140064850A
Authority
KR
South Korea
Prior art keywords
resource
client
request
application
application instance
Prior art date
Application number
KR1020147006256A
Other languages
English (en)
Other versions
KR101941728B1 (ko
Inventor
데이비드 엠 크루즈
디아 파살라
제임스 티 핑커톤
매튜 조지
프라샨스 프라할라드
토마스 이 졸리
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20140064850A publication Critical patent/KR20140064850A/ko
Application granted granted Critical
Publication of KR101941728B1 publication Critical patent/KR101941728B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Hardware Redundancy (AREA)
  • Computer And Data Communications (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

클라이언트 클러스터화된 환경에서 동작할 때 리소스로의 연속적인 액세스를 리퀘스터에게 제공하기 위한 다양한 시스템 및 방법에 애플리케이션 인스턴스 식별자가 채용된다. 제1 클라이언트에 상주하는 리퀘스터는 리소스를 액세스하는 것을 시도할 수 있다. 제1 클라이언트는 리소스에 액세스하고자 하는 요청을 송신한다. 요청은 리퀘스터를 식별하는 애플리케이션 인스턴스 식별자와 연관될 수 있다. 어떤 시점에서, 제1 클라이언트는 고장 나고 리퀘스터는 페일오버 메커니즘을 통해 제2 클라이언트와 연관된다. 제2 클라이언트는 리퀘스터를 대신하여 리소스를 액세스하고자 하는 제2 요청을 송신한다. 제2 요청은 리퀘스터의 애플리케이션 인스턴스 식별자와 연관된다. 애플리케이션 인스턴스 식별자는 제2 요청을 제1 요청과 동일한 리퀘스터에 속하는 것으로 식별하기 위해 사용되며, 이로써 충돌 상황을 피하면서 리소스를 액세스하고자 하는 제2 요청을 승인한다.

Description

클러스터화된 클라이언트 페일오버{CLUSTERED CLIENT FAILOVER}
클러스터화된 환경, 예를 들어, 작업량이 다수의 머신에 걸쳐 분배되는 환경은 클라이언트에게 정보의 높은 이용가능성 및 페일오버를 제공한다. 클러스터화된 환경은 클라이언트로 하여금 해당 환경의 일부인 하나 이상의 노드를 통하여 리소스를 액세스하는 것을 가능하게 한다. 클러스터화된 환경은 클라이언트, 서버 또는 이둘 모두로서 행동할 수 있다. 클라이언트 클러스터 서버에서, 애플리케이션은 클러스터를 이루는 노드 중 임의의 곳에 상주할 수 있다. 애플리케이션은 클라이언트 클러스터 내에 로컬로 저장되거나 원격으로 저장되는 리소스에 대한 요청을 발행할 수 있다. 노드에 에러가 발생하는 경우, 클라이언트는 클러스터 내 다른 노드로 페일오버(failover), 또는 이주(migrate)한다. 그러나, 클라이언트가 에러 시에 작업하고 있었던 리소스에 대한 액세스를 다시 요청할 때, 그 리소스는 애플리케이션이 상주했던 이전 클라이언트 노드에 대한 서버에 의하여 잠기거나(locked) 보호될(fenced) 수 있다.
이러한 사항들 그리고 다른 사항들을 고려하여 실시예들이 고안되었다. 또한, 상대적으로 특정한 문제가 논의되지만, 실시예들은 배경기술에서 식별된 특정한 문제만을 해결하는 것으로 제한되어서는 안 된다는 것을 이해하여야 한다.
본 요약은 아래 상세한 설명에 더 설명되어 있는 선택 가능 개념을 간략화된 형태로 소개하기 위함이다. 본 요약은 청구된 발명 사상의 필수적인 피처나 중요한 팩터를 식별하기 위한 것으로 의도된 것이 아니며, 청구된 발명 사상의 범위를 제한하기 위하여 사용되기 위한 것으로 의도된 것 역시 아니다.
클러스터화된 클라이언트 환경 내 새로운 노드로 애플리케이션이 이주한 후에 리소스에 대한 연속적인 액세스를 갖는 프로세스 또는 애플리케이션을 제공하는 시스템 및 방법이 개시된다. 클라이언트 클러스터 내 노드에 상주하는 프로세스 또는 애플리케이션은 리소스를 액세스하기 위한 요청을 서버로 송신한다. 일 실시예에서, 고유 애플리케이션 인스턴스 식별자는 리소스를 요청하는 애플리케이션을 식별하기 위해 사용된다. 고유 애플리케이션 인스턴스 식별자는 해당 요청과 함께 제공될 수 있다. 클라이언트가 리소스를 액세스할 때, 애플리케이션 인스턴스 식별자는 요청된 리소스와 연관된다.
애플리케이션 또는 프로세스가 리소스에 대한 자신의 동작을 완료하기 전에, 클라이언트가 클러스터화된 환경 내 상주하는 노드는, 애플리케이션이 리소스를 적절히 릴리즈하기 전에 해당 노드가 리소스에 대한 액세스를 잃는다거나 아니면 고장나는(fail) 에러를 겪을 수 있다. 그러한 상황에서, 리소스는 이전 클라이언트의 요청에 따라 서버 상에서 보호 또는 잠김 상태(a fenced or locked state)에 놓일 수 있다. 클라이언트 클러스터 내 다른 노드로 페일오버하면, 새로운 클라이언트 노드 상의 애플리케이션은 리소스를 관리하는 서버와의 접속을 재수립(reestablish)하고 이전에 애플리케이션이 에러 시에 액세스하였던 리소스에 대한 제2 요청을 행한다. 제2 요청은 제1 요청과 함께 송신되었던 애플리케이션 인스턴스 식별자를 포함할 수 있다. 리소스에 대한 제2 요청은 클러스터화된 환경 내 다른 노드로부터 수신될 수 있지만, 애플리케이션 인스턴스 식별자는, 요청을 관리하는 서버로 하여금, 제2 요청이 이전에 리소스에 잠금을 걸었던 동일한 애플리케이션 또는 프로세스에 속한다는 것을 판정하도록 허용할 수 있다. 이렇게 하는 것은 서버로 하여금 리소스를 실효화하는(invalidate) 것을 가능하게 하고, 충돌 상황이 일어나지 않는다는 것을 보증하면서 클라이언트의 제2 요청을 승인하는 것을 가능하게 한다.
실시예들은 컴퓨터 프로세스, 컴퓨팅 시스템으로 구현될 수 있거나, 또는 컴퓨터 프로그램 제품 또는 컴퓨터 판독가능 매체와 같은 제조품(article of manufacture)으로 구현될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 시스템에 의하여 판독가능하며 컴퓨터 프로세스를 실행하기 위한 인스트럭션으로 이루어진 컴퓨터 프로그램을 인코딩하는 컴퓨터 스토리지 매체일 수 있다. 컴퓨터 프로그램 제품은 또한 컴퓨터 시스템에 의하여 판독가능하며 컴퓨터 프로세스를 실행하기 위한 인스트럭션으로 이루어진 컴퓨터 프로그램을 인코딩하는 캐리어 상의 전파 신호일 수 있다.
비제한적이고 비전면적인 실시예들이 다음의 도면을 참조하여 설명된다.
도 1은 본원에서 설명된 실시예들을 구현하기 위하여 사용될 수 있는 시스템을 도시한다.
도 2는 본원에서 설명된 실시예들을 구현하기 위하여 사용될 수 있는 소프트웨어 환경을 도시하는 블록도이다.
도 3은 클러스터화된 환경에서 리소스로의 연속적 액세스를 얻기 위하여 클라이언트가 수행할 수 있는 방법의 일 실시예이다.
도 4는 리소스로의 연속적 액세스를 제공하기 위하여 클러스터화된 환경 내 노드에서 수행될 수 있는 방법의 일 실시예이다.
도 5는 실시예들을 구현하기에 적합한 컴퓨팅 환경의 블록도를 도시한다.
다양한 실시예들이 첨부된 도면을 참조하여 아래에서 더욱 자세히 설명되며, 도면은 본원의 일부를 형성하며 특정 예시적 실시예를 보여준다. 그러나, 실시예들은 많은 다양한 형태로 구현될 수 있으며 여기에 제시된 실시예들에 제한되는 것으로 해석되어서는 안 되고, 오히려 이러한 실시예들은 본 개시물이 철저하고 완전해지도록 제공되며 당업자에게 실시예들의 범주를 완전히 전달할 수 있을 것이다. 실시예들은 방법, 시스템 또는 디바이스로 실시될 수 있다. 따라서, 실시예들은 하드웨어 구현, 전적인 소프트웨어 구현 또는 소프트웨어 및 하드웨어 측면을 조합하는 구현의 형태를 취할 수 있다. 다음의 상세한 설명은, 따라서, 제한적 의미로 받아들여지는 것이 아니다.
본원의 실시예들은 페일오버 이벤트(a failover event) 후에 리퀘스터(a requestor)가 리소스로의 액세스를 재획득할 수 있도록 하는 클러스터화된 클라이언트 페일오버 메커니즘을 제공하는 것과 관련된다. 실시예에서, 리퀘스터는 프로세스, 애플리케이션, 또는 애플리케이션의 하나 이상의 자식 프로세스(child process)일 수 있다. 리소스는 파일, 오브젝트, 데이터, 또는 컴퓨팅 환경 내 임의의 다른 유형의 리소스 일 수 있다. 실시예에서, 리소스는 독립형 서버(a standalone server) 상에 상주(reside)할 수 있고 또는 클러스터화된 환경 내에 상주할 수 있다. 여기에 개시된 실시예에서, 클러스터화된 환경은 하나 이상의 노드(예를 들어, 클라이언트 및/또는 서버 디바이스들)를 포함할 수 있다.
일 예시적 실시예에서, 클러스터화된 환경 내 노드에 상주하는 애플리케이션은 특정 리소스에 대한 액세스를 요청할 수 있다. 실시예에서, 리소스는 로컬로 (예를 들어, 클라이언트 노드에), 원격 디바이스(예를 들어, 원격 서버 또는 클라이언트 클러스터화된 환경 내 다른 노드)에, 또는 클라이언트 클러스터화된 환경과는 다른 클러스터화된 환경(예를 들어, 다수의 노드를 포함하는 환경)에 저장될 수 있다. 예를 들어, 실시예에서 클러스터화된 환경은 클라이언트 또는 서버 클러스터일 수 있으나, 본원에 개시된 시스템 또는 방법은 가상 네트워크와 같은 그러나 이제 제한되지 않는 임의의 다른 유형의 환경에 채용될 수 있다는 것을 당업자는 이해할 것이다.
이러한 환경에서, 리소스는 클라이언트들 및 애플리케이션들 사이에 공유될 수 있다. 애플리케이션이 리소스를 액세스할 때, 리소스는 잠기거나 보호되어서, 액세스중인 애플리케이션이 리소스를 릴리즈할 때 까지 다른 애플리케이션이 해당 리소스를 액세스하지 못하도록 방지할 수 있다. 리소스를 잠그거나 보호하는 것은 충돌(a conflict)에 대해 보호하기 위하여, 즉, 액세스 중인 애플리케이션이 리소스에 대한 자신의 동작을 수행 완료하기 전에 다른 애플리케이션에 의한 해당 리소스의 수정에 대해 보호하기 위하여 채용될 수 있다. 그러나, 클러스터화된 클라이언트 환경 내 노드가 고장나는(fail) 경우, 리소스를 액세스하는 애플리케이션은 해당 리소스를 보호 또는 잠금 상태로부터 적절히 릴리즈할 수 없다. 예를 들어, 애플리케이션을 대신하여 리소스를 액세스하는 클라이언트 노드는 애플리케이션이 자신의 동작을 완료하고 리소스를 적절히 릴리즈하기 전에 네트워크 접속을 잃거나, 손상되거나(crash), 해당 리소스로의 액세스를 다른 방법으로 잃을 수 있다. 따라서, 리소스는 다른 클라이언트 또는 애플리케이션에게 이용 불가능한 상태로 남게 될 수 있다. 보호 또는 잠금 상태로부터 리소스를 자동적으로 릴리즈하는 메커니즘에 채용될 수 있고, 이로써 리소스가 영구적으로 잠겨버리는 것을 막을 수 있다. 그러나, 이러한 메커니즘은 종종 보호되거나 잠긴 리소스를 릴리즈하기 전에 일정 기간 동안 대기한다.
일부의 경우에서, 애플리케이션이 고장난 클라이언트 노드(failed client node)로부터 클라이언트 클러스터 내 다른 클라이언트 노드로 이주하도록 페일오버(a failover)를 수행할 때, 애플리케이션은 자신의 서버와의 이전 접속을 재수립하고 리소스에 대한 자신의 동작(들)을 다른 클라이언트 노드를 통하여 재개(resume)하도록 시도할 수 있다. 그러나, 애플리케이션을 대신하여 리소스에 이전에 액세스했던 고장난 클라이언트 노드에 의하여 리소스가 적절히 릴리즈되지 않았기 때문에, 리소스에 대해 이전에 액세스를 가졌던 애플리케이션은 서버가 리소스를 보호 또는 잠금 상태로부터 릴리즈하기 전까지는 자신의 리소스로의 액세스를 재개하는 것이 가능하지 않을 수 있다. 그러나, 다른 노드가 애플리케이션을 대신하여 리소스를 액세스하는 것을 시도하고 있기 때문에, 서버는 애플리케이션을 리소스 상에 이전에 잠금을 행한 동일한 애플리케이션으로 식별하는 것이 가능하지 않을 수 있다. 그러나, 동일한 애플리케이션이 리소스를 액세스하는 것을 시도하고 있기 때문에, 충돌 상황은 존재하지 않는다. 이러한 상황에서, 리소스 상의 이전 잠금을 서버가 릴리즈하도록 대기하는 것은 애플리케이션에 대해 수용할 수 없는 지연을 초래할 수 있다.
설명된 바와 같이, 애플리케이션은 클러스터화된 클라이언트 환경에서 동작하고 있기 때문에, 애플리케이션이 두 번째로 리소스를 액세스하고자 하는 요청을 할 때, 리소스에 액세스하고자 하는 요청은 다른 위치, 예를 들면, 클라이언트 클러스터화된 환경 내 다른 노드로부터 행해질 수 있다. 따라서, 두 번째 요청은 다른 IP 어드레스 또는 위치로부터 올 수 있다. 요청이 다른 위치로부터 올 수 있으므로, 서버는 리소스를 다시 액세스하고자 시도하는 클라이언트 또는 애플리케이션이 이전에 리소스를 액세스했던 동일한 클라이언트인지를 보장하는 데에 어려움이 있을 수 있다. 본원에 개시된 시스템 또는 방법은 동일 애플리케이션이 리소스를 액세스하고자 시도하고 있는 상황을 식별하여, 그러한 지연을 피하고 애플리케이션에 리소스에 대한 연속적인 액세스를 제공하는, 메커니즘을 제공한다.
도 1은 본원에 개시된 일부 실시예들을 구현하는데 사용될 수 있는 시스템(100)을 도시한다. 시스템(100)은 클라이언트 클러스터(102)와 서버 클러스터(106)를 포함한다. 클라이언트 클러스터는 클라이언트들(102A 및 102B)과 같은 다수의 노드를 포함한다. 클라이언트(102A 및 102B)는 클라이언트 클러스터(102)에 상주하는 애플리케이션 또는 디바이스일 수 있다. 클라이언트 클러스터(102)는 네트워크(108)를 통하여 서버 클러스터(106)와 통신한다. 실시예에서, 네트워크(108)는 인터넷, WAN, LAN 또는 당업계에 알려진 임의의 다른 유형의 네트워크일 수 있다. 서버 클러스터(106)는 클라이언트 클러스터(102) 상의 애플리케이션(예를 들어, 클라이언트 102A 또는 클라이언트 102B에 상주하는 애플리케이션)에 의하여 액세스되는 리소스를 저장한다. 실시예에서, 클라이언트(예를 들어, 클라이언트 102A)는 클라이언트에 상주하는 애플리케이션을 대신하여 클러스터(106) 상의 리소스에 액세스하기 위해 클러스터(106)와의 세션(a session)을 수립할 수 있다. 도 1에서 클라이언트 클러스터(102)가 두개의 클라이언트(예를 들어, 클라이언트 102A 또는 클라이언트 102B)만을 포함하지만, 당업자는 임의의 수의 클라이언트가 클라이언트 클러스터(102)에 포함될 수 있음을 이해할 것이다.
도 1에 도시된 바와 같이, 서버 클러스터(106)는 서버들(106A, 106B 및 106C)을 포함하고, 이들은 클러스터(106)에 저장된 정보에 대한 리던던시(redundancy) 및 높은 이용가능성(high availability) 양자를 제공한다. 실시예에서, 클러스터(106)는 파일 시스템, 데이터베이스 또는 클라이언트 (102 및 104)에 의하여 액세스되는 다른 정보를 가질 수 있다. 세 서버가 도 1에 도시되었지만, 다른 실시예에서 클러스터(106)는 셋 보다 많거나 셋보다 적은 서버를 포함할 수 있다. 또한, 본원에 설명된 실시예들은 서버 클러스터의 부분인 서버와 통신하는 클라이언트에 관한 것이지만, 본원에 개시된 실시예들은 독립형 서버(a standalone server)를 이용하여 또한 수행될 수 있음을 이해할 것이다.
실시예에서, 클라이언트 클러스터(102)는 제1 클라이언트 노드에 에러 또는 고장이 발생한 경우 클라이언트가 제1 클라이언트 노드로부터 제2 클라이언트 노드로 이주하는 것을 가능하게 하는 페일오버 메커니즘을 제공한다. 임의의 유형의 페일오버 메커니즘이 본원에 개시된 시스템 및 방법과 함께 채용될 수 있음을 당업자는 이해할 것이다. 페일오버의 경우에 한 클라이언트로부터 다른 클라이언트로(예를 들어, 클라이언트 102A에서 클라이언트 102B로) 이주하는 애플리케이션이 리소스에 대한 액세스를 재획득(regain)하고자 시도할 때 과도한 지연을 피할 수 있도록 본원에 개시된 방법 및 시스템이 채용될 수 있다. 실시예에서, 리소스를 액세스하는 애플리케이션을 식별하는 애플리케이션 인스턴스 식별자가 리소스와 연관될 수 있다. 애플리케이션 인스턴스 식별자는 애플리케이션, 애플리케이션에 의하여 수행되는 액션 또는 애플리케이션의 자식 프로세스(a child process)와 연관되는 전역 고유 식별자(globally unique identifier; GUID)일 수 있다. 예를 들면, 일 실시예에서 애플리케이션은 GUID인 애플리케이션 인스턴스 식별자와 연관될 수 있다. 다른 실시예에서, 애플리케이션 인스턴스 식별자는 애플리케이션에 의하여 수행되는 특정 동작 또는 액션과 연관될 수 있다. 예를 들어, 애플리케이션이 두 개의 다른 파일에 대하여 두개의 다른 오픈 요청을 발행한 경우, 각 오픈 요청은 자신만의 애플리케이션 인스턴스 식별자를 가질 수 있다. 또 다른 실시예에서, 애플리케이션 인스턴스 식별자는 애플리케이션의 하나 이상의 자식 프로세스와 연관될 수 있다. 본원에 설명될 실시예들로부터 당업자에게 명백해지는 바와 같이, 애플리케이션의 애플리케이션 인스턴스 식별자를 이의 하나 이상의 자식 프로세스와 연관시키는 것은, 리소스가 애플리케이션에 속하는 잠금 또는 보호 상태에 있는 경우 자식 프로세스로 하여금 리소스를 액세스하는 것을 가능하게 한다. 실시예에서, 애플리케이션 인스턴스 식별자는 리소스에 대한 요청을 송신할 때 또는 그 후에 클라이언트에 의하여 송신 될 수 있다.
다른 실시예에 따르면, 클라이언트 클러스터(102)의 부분인 클라이언트에 의하여 액세스되는 정보를 저장하는 것에 더하여, 서버 클러스터(106)는 서버 노드 고장의 경우에 리소스의 연속적인 액세스를 가능하게 하는 페일오버 메커니즘을 또한 제공할 수 있다. 다시 한 번, 임의의 유형의 페일오버 메커니즘이 본원에 개시된 시스템 및 방법과 함께 채용될 수 있음을 당업자는 이해할 것이다.
실시예에서, 클라이언트가 애플리케이션을 대신하여 리소스로의 액세스를 요청할 때, 애플리케이션의 애플리케이션 인스턴스 식별자는 요청과 함께 송신된다. 요청을 수신하는 서버는 애플리케이션 인스턴스 식별자를 리소스와 연관시킬 수 있다. 예를 들어, 서버 클러스터는 서버 클러스터(106) 내 위치하는 하나 이상의 노드 (예를 들어, 서버 106A, 106B 및/또는 106C와 같은 서버) 상에 위치하는 테이블 또는 캐시에, 애플리케이션 인스턴스 식별자가 리소스와 연관되는 방식으로, 애플리케이션 인스턴스 식별자를 저장할 수 있다. 클라이언트가 리소스 이용을 완료하기 전에, 클라이언트는 리소스와의 접속을 잃게 하는 에러를 겪을 수 있다. 예를 들어, 애플리케이션을 호스팅하거나 애플리케이션을 대신하여 요청 또는 동작을 수행하는 클라이언트는 서버 클러스터와의 네트워크 접속을 잃을 수 있거나, 클라이언트가 손상(crash)될 수 있거나, 또는 애플리케이션의 리소스 사용을 방해하는 임의의 다른 유형의 에러가 발생할 수 있다. 에러를 겪을 시, 애플리케이션은 클라이언트 클러스터(102) 내 새로운 클라이언트 노드로 페일오버할 수 있다. 새로운 클라이언트 노드는 서버 클러스터로 재접속하고 애플리케이션을 대신하여 리소스를 액세스하고자 하는 제2 요청을 송신 할 수 있다. 실시예에서, 클라이언트는 서버 클러스터(106) 내 동일한 노드 또는 다른 노드에 접속 할 수 있다. 리소스에 액세스하고자 하는 제2 요청은 애플리케이션의 애플리케이션 인스턴스 식별자를 포함할 수 있다. 제2 요청 수신시, 서버(예를 들어, 서버 클러스터 106의 서버 106A)는 제2 요청의 애플리케이션의 애플리케이션 인스턴스 식별자를 리소스와 연관된 애플리케이션 인스턴스 식별자와 비교한다. 두 애플리케이션의 애플리케이션 인스턴스 식별자가 매칭되는 경우, 서버 클러스터는 리소스를 실효화(invalidate)한다. 실시예에서, 리소스를 실효화하는 것은 파일을 닫는 것, 리소스에 잠금을 제거하는 것, 또는 달리 리소스 사용을 자유롭게 하는 임의의 행동을 취하는 것을 포함할 수 있다. 서버 노드는 이후 리소스를 액세스하고자 하는 애플리케이션의 제2 요청을 승인할 수 있다. 제2 요청의 애플리케이션 인스턴스 식별자가 리소스와 연관된 애플리케이션 인스턴스 식별자와 매칭되지 않는 경우, 서버는 리소스가 자유로워질 때 까지 리소스로의 액세스를 허용하지 않을 것이다.
일 실시예를 도시하면, 클라이언트 클러스터(106) 내 클라이언트(102A) 상의 리퀘스터(예를 들면, 프로세스, 애플리케이션, 등)는 클라이언트(102A)가 서버 클러스터(106)의 서버와 세션을 수립할 것을 요청할 수 있다. 예를 들어, 클라이언트(102A)는 서버(106A)에 저장되거나 서버 클러스터(106)의 부분인 데이터베이스에 액세스하기 위해 서버(106A)와 세션을 수립할 수 있다. 클라이언트(102A)는 이후 리퀘스터를 대신하여 리소스에 대한 요청을 송신 할 수 있다. 리퀘스터를 식별하는 애플리케이션 인스턴스 식별자는 요청과 연관될 수 있다. 실시예에서, 요청은 애플리케이션 인스턴스 식별자를 포함하거나, 또는 서버(106A)가 애플리케이션 인스턴스 식별자가 요청과 연관됨을 판정할 수 있는 방식으로 개별적으로 송신될 수 있다. 또 다른 실시예에서, 서버(106A) 또는 서버 클러스터(106)는 요청과 함께 애플리케이션 인스턴스 식별자를 수신하지 않고도 애플리케이션 인스턴스 식별자를 요청과 연관시키기 위해 필요한 정보를 이미 가지고 있을 수 있다. 서버(106A)는 이후 리소스에 대한 리퀘스터의 요청을 승인하여 리퀘스터가 리소스에 관한 동작을 수행하거나 액세스를 달리 액세스할 수 있게 한다. 리소스로의 리퀘스터의 액세스가 승인될 때, 서버(106A)는 리퀘스터가 현재 리소스를 액세스하고 있음을 나타내는 방식으로 애플리케이션 인스턴스 식별자를 리소스와 연관 시킨다. 리소스는 이후 보호되거나 잠금 되어서 클라이언트(102)가 자신의 동작을 완료하기까지 다른 클라이언트 또는 다른 애플리케이션은 리소스를 액세스하거나 수정할 수 없다.
리퀘스터가 리소스에 관한 자신의 동작을 완료하기 전에, 클라이언트(102A)가 고장 나거나 리소스로의 접속을 달리 잃게 하는 에러가 발생한다. 클라이언트 리퀘스터는 자신의 동작을 완료하였기 때문에, 리소스의 컨트롤을 릴리즈하지 않았다. 따라서, 리소스는 보호 또는 잠금 상태로 남아 있을 수 있다. 리퀘스터 또는 클라이언트 클러스터(102)는 리퀘스터를 클라이언트(102A)로부터 클라이언트(102B)로 이주시키기 위한 페일오버 메커니즘을 채용할 수 있다. 페일오버 동작이 완료되고 나면, 클라이언트(102B)는 리퀘스터를 대신하여 서버 클러스터(106)로 재접속할 수 있다. 클라이언트(102B)는 서버(106A)로 재접속 하거나 서버 클러스터(106)내 임의의 다른 서버(예를 들어, 서버 106B 또는 106C)와 새로운 접속을 수립할 수 있다. 예시적 상황에서, 클라이언트(102B)는 서버(106A)에 재접속한다. 재접속 시, 클라이언트(102B)는 리퀘스터를 대신하여 리소스를 액세스하고자 하는 제2 요청을 송신한다. 이전에 주목한 바와 같이, 리퀘스터는 리소스 컨트롤을 릴리즈하지 않았기 때문에, 리소스는 여전히 잠금 또는 보호 상태에 있을 수 있다. 리소스를 액세스하기 위하여, 리소스의 상태를 서버가 예를 들면 타임아웃 동작을 통해 자동적으로 변경하기까지 대기하지 않고, 리퀘스터는 자신의 애플리케이션 인스턴스 식별자를 제2 요청과 함께 다시 제공할 수 있다. 서버(106A)는 제2 요청과 함께 제공된 애플리케이션 인스턴스 식별자를 리소스와 연관된 애플리케이션 인스턴스 식별자와 비교한다. 예를 들면, 제2 요청과 함께 수신되거나 또는 달리 이와 연관되는 애플리케이션 인스턴스 식별자를 서버(106A)가 리소스와 연관시켰던 애플리케이션 인스턴스 식별자와 비교할 수 있다. 연관된 애플리케이션 인스턴스 식별자는 서버(106A)의 테이블 또는 로컬 캐시에 저장될 수 있거나 서버 클러스터(106) 내 다른 어딘가에 저장될 수 있다. 캐시에 저장된 애플리케이션 인스턴스 식별자가 리소스와 연관된 애플리케이션 인스턴스 식별자와 매칭되는 경우, 서버(106A)는 리소스를 실효화하거나 달리 자유롭게 하고 클라이언트(102B)로 하여금 리소스가 일부 다른 메커니즘(예를 들어, 보호 또는 잠금 상태 타임아웃)에 의하여 릴리즈되기까지 대기하지 않고 리퀘스터를 대신하여 리소스를 다시 액세스할 수 있게 한다. 애플리케이션 인스턴스 식별자들이 매칭되지 않는 경우, 클라이언트(102B)는 리소스에 액세스하기 전에 리소스가 자유롭게 되기까지 대기하여야 할 것이다.
위의 예시에서 클라이언트(102B)가 동일한 서버(106A)에 재접속하였으나, 다른 실시예에서 클라이언트가 서버 클러스터(106)내 다른 노드에 접속하는 것이 또한 가능하다. 예를 들어 클라이언트(102B)는 서버(106B)에 재접속할 수 있고 리퀘스터를 대신하여 리소스에 대한 액세스를 재획득하고자 하는 제2 요청을 제출할 수 있다. 제2 요청은, 예를 들어, 제2 요청에 포함되거나 또는 달리 제2 요청과 연관됨으로써, 리퀘스터의 애플리케이션 인스턴스 식별자와 다시 연관될 수 있다. 이 예시에서, 리소스의 오리지널 액세스는 서버(106A) 상에 있었으므로 서버(106B)는 자신의 로컬 캐시에 저장된 리소스와 연관된 애플리케이션 인스턴스 식별자를 가지지 않을 수 있다. 이러한 상황에서, 서버(106B)는 리소스와 연관된 애플리케이션 인스턴스 식별자를 가지고 있는지를 판정하기 위해 서버 클러스터(106) 내 다른 서버를 컨택할 수 있다. 리소스와 연관된 애플리케이션 인스턴스 식별자가 서버 클러스터 내 다른 노드(예를 들어, 서버 106A)에 저장되어 있는 경우, 서버 클러스터 내 다른 노드 상의 애플리케이션 인스턴스 식별자은 제2 요청과 함께 제공된 애플리케이션 인스턴스 식별자와 비교된다. 이들이 매칭되는 경우, 서버(106B)는 리소스를 실효화하기 위해 서버(106A)로 요청을 송신할 수 있고, 이후 서버(106B)는 리퀘스터(지금은 클라이언트 102B 상에 있음)가 리소스에 액세스하는 것을 수락할 수 있다. 애플리케이션 인스턴스 식별자들이 매칭되지 않는 경우, 클라이언트(102B)는 리소스가 자유로워지기를 대기해야 할 것이다.
위의 예시들에 기초하여, 클라이언트 클러스터(102) 내 임의의 클라이언트 노드는 클라이언트 클러스터(102)내 리퀘스터를 위한 액세스를 요청할 수 있고 이후 이에 대한 액세스를 제공할 수 있음을 당업자는 이해할 것이다. 또한, 서버 클러스터 내 임의의 서버 노드(예를 들어, 서버 클러스터 106 내 임의의 서버)는, 서버 클러스터 내 다른 서버 노드에서 액세스가 발생한 경우라 하더라도 리퀘스터가 이전에 리소스로의 액세스를 가졌었는지를 판정할 수 있다. 다음의 설명은 단지 도 1의 실시예가 동작할 수 있는 방법의 하나의 예시일 뿐이며 다른 실시예들이 존재함을 당업자는 이해할 수 있을 것이다. 예를 들어, 원격 서버 또는 서버 클러스터 상의 리소스를 액세스하는 대신, 클라이언트 노드는, 클러스터화된 환경에(예를 들어, 클라이언트 클러스터를 이루는 동일한 또는 다른 클라이언트 클러스터 노드들 상에) 상주하는 리소스로의 연속적인 액세스를 리퀘스터(예를 들어, 애플리케이션 또는 프로세스)에게 제공하기 위한 본원에 설명된 실시예를 수행할 수 있다. 아래에서 더욱 자세히 설명되는 바와 같이, 본원에서 설명된 실시예는 다양한 다른 단계 또는 동작을 수반할 수 있다. 또한, 본원에 설명된 실시예는 임의의 적절한 소프트웨어 또는 하드웨어 컴포넌트 또는 모듈을 이용하여 구현될 수 있다.
이제 도 2를 참조하면, 도 2는 소프트웨어 환경(200)의 블록도를 도시하고 있으며 다수의 클라이언트 노드(예를 들어, 클라이언트 202 및 204)를 가지는 클라이언트 노드 클러스터(201)와 다수의 서버 노드(예를 들어, 노드 1(208) 및 노드 2(216))를 가지는 서버 노드 클러스터(206)를 보여준다. 실시예에서, 클라이언트(202)는 리퀘스터를 대신하여 서버 클러스터 환경(206)에서 리소스(226)와 같은 리소스를 액세스하고자 하는 요청을 한다. 클라이언트 노드 클러스터(201)는 클라이언트 클러스터(도 1의 102)와 같은 클라이언트 클러스터 일 수 있다. 도시되지는 않았지만, 클라이언트 클러스터는 둘 보다 많은 클라이언트를 포함할 수 있다. 서버 노드 클러스터(206)는 서버 클러스터(도 1의 106)와 같은 서버 클러스터 일 수 있고, 예를 들어 가상 네트워크(이에 제한되지는 않음)와 같은 임의의 다른 유형의 클러스터화된 환경일 수 있다. 리소스(226)는 클러스터화된 환경의 부분인 데이터스토어(228)에 저장될 수 있다. 도시되지는 않았지만, 대안적 실시예에서 데이터스토어(228)는 클러스터화된 환경의 부분이 아니라 네트워크를 통하여 클러스터화된 환경에 접속될 수 있다. 그러한 네트워크의 예는, 인터넷, WAN, LAN 또는 당업계에 알려진 임의의 다른 유형의 네트워크를 포함하나 이에 한정되지는 않는다. 또한 실시예에서, 데이터스토어는 클러스터(206)의 부분인 노드(예를 들어, 디바이스)의 부분일 수 있다.
서버 노드 클러스터(206)는, 노드 1(208) 및 노드 2(216)와 같이, 하나 이상의 노드를 포함할 수 있다. 도 2에는 두 개의 노드 클러스터만이 도시되었지만, 임의의 수의 노드 클러스터가 클러스터화된 환경(206)에 포함될 수 있다. 실시예에서, 노드 클러스터(208 및 216)는 리소스(226)로의 액세스에 대한 요청을 수신하는 것, 리소스(226)로의 액세스에 대한 동작을 수행하는 것 및/또는 리소스(226)로의 액세스를 승인하는 것을 행할 수 있다. 실시예에서, 리소스(226)는 파일, 오브젝트, 애플리케이션, 데이터, 또는 노드 클러스터(206) 내 노드 또는 독립형 서버에 의하여 액세스 가능하거나 이에 저장되어 있는 임의의 다른 유형의 리소스일 수 있다.
실시예에서, 클라이언트는 초기 요청(222)을 클러스터화된 환경으로 송신한다. 도 2에 도시된 바와 같이, 초기 요청(222)은 클라이언트(202)에 의하여 송신될 수 있고 노드 1(208)에 의하여 수신될 수 있다. 그러나, 대안적 실시예에서, 초기 요청(222)은 클라이언트 또는 클라이언트 클러스터(201) 내 다른 클라이언트에 의하여 송신될 수 있고, 노드 2(216) 또는 서버 클러스터(206) 내 임의의 다른 노드에 의하여 수신될 수 있다. 예시의 요청은 파일을 생성, 오픈, 또는 달리 액세스하고자 하는 요청을 포함하되 이에 제한되지는 않는다. 요청(222)은 예를 들어, 인터넷, WAN, LAN 또는 당업계에 알려진 임의의 다른 유형의 네트워크를 포함하나, 이에 제한되지 않는 네트워크를 통하여 클라이언트로부터 노드 클러스터로 전송된다. 초기 요청(222)은 리소스(226)와 같은 리소스를 액세스하고자 하는 요청을 포함할 수 있다. 실시예에서, 요청(222)은, 클라이언트(202)가 대신하여 요청을 행하고 있는, 리퀘스터를 식별하는 애플리케이션 인스턴스 식별자를 포함할 수 있다. 실시예에서, 초기 요청(222)은 하나 이상의 메시지로 구성될 수 있다. 예를 들어, 요청(222)은 요청과 애플리케이션 인스턴스 식별자 양자를 포함하는 단일 메시지(a single message)일 수 있다. 다른 실시예에서, 요청(222)은 하나 이상의 애플리케이션 인스턴스 식별자 뿐 아니라 하나 이상의 요청을 포함하는 다수의 메시지일 수 있다. 실시예에서, 클라이언트(202)는 요청(222)과 함께 전송될 수 있는 하나 이상의 애플리케이션 인스턴스 식별자를 생성 및/또는 저장하는데 이용되는 앱 인스턴스 캐시(214)를 포함할 수 있다.
도 2에 도시된 바와 같이, 노드 1(208)은 클라이언트(202)로부터 요청(222)과 애플리케이션 인스턴스 식별자를 수신할 수 있다. 요청된 리소스(226)가 사용가능한 경우, 예를 들어, 다른 클라이언트 또는 애플리케이션에 의하여 보호되거나 잠금 되지 않은 경우, 노드 1은 클라이언트에서 실행되고 있는 리퀘스터를 대신하여 리소스(226)를 액세스하고자 하는 클라이언트(예를 들어, 클라이언트 202)의 요청을 승인할 수 있다. 리소스(226)로의 액세스 승인 시, 필터 드라이버(210)는, 클라이언트(202)로부터 수신한 애플리케이션 인스턴스 식별자를 저장함으로써 클라이언트(202)와 리소스(206) 사이의 연관관계(an association)를 할당하거나 달리 생성할 수 있다. 실시예에서, 연관관계는 노드 1의 부분인 앱 인스턴스 캐시(212)에 오브젝트로서 저장될 수 있다. 도시된 실시예가 앱 인스턴스 캐시(212)를 노드 1(208)의 부분으로서 나타내고 있지만, 실시예에서 앱 인스턴스 캐시(212)는 노드 클러스터(206)의 부분으로서 어딘가에 저장될 수 있다. 예를 들어, 노드 2(216) 상의 앱 인스턴스 캐시(220)와 같이, 노드 클러스터(206)는 하나 이상의 앱 인스턴스 캐시를 포함할 수 있음을 당업자는 이해할 것이다. 실시예에서, 하나 이상의 앱 인스턴스 캐시가 존재할 경우, 다수의 앱 인스턴스 캐시에 저장된 데이터는 모든 앱 인스턴스 캐시에 걸쳐 복사(replicate)될 수 있거나 각 앱 인스턴스 캐시는 개별적 데이터를 저장할 수 있다.
일 실시예에서, 클라이언트로부터 수신된 애플리케이션 인스턴스 식별자와 리퀘스터(예를 들어, 애플리케이션 또는 프로세스)를 식별하는 애플리케이션 인스턴스 식별자는 _NETWORK_APP_INSTANCE_ECP_CONTEXT 구조에 저장될 수 있다. _NETWORK_APP_INSTANCE_ECP_CONTEXT 구조는 다음과 같이 정의될 수 있다:
Figure pct00001
이러한 실시예에서, 변수 Size는 구조의 사이즈에 관련된 정보를 저장할 수 있고, 변수 AppInstanceID는, 예를 들어, 클라이언트(202)에서 실행되는 리퀘스터와 같은, 페일오버 클러스터 클라이언트 애플리케이션에 대한 고유 애플리케이션 인스턴스 식별자일 수 있다. 실시예에서, _NETWORK_APP_INSTANCE_ECP_CONTEXT 구조, 또는 리퀘스터의 애플리케이션 인스턴스 식별자를 포함하는 다른 오브젝트 또는 변수는 전역 고유 식별자(GUID) 캐시(214)에 저장될 수 있다. 실시예에서, _NETWORK_APP_INSTANCE_ECP_CONTEXT 구조는 리소스를 액세스하고자 하는 요청(예를 들어, 생성 또는 오픈 요청)에 관련하여 클라이언트로부터 서버로 송신될 수 있다. 일 실시예에서, 리퀘스터의 애플리케이션 인스턴스 식별자는 리퀘스터가 실행되고 있는 클러스터화된 클라이언트 환경(201) 내 클라이언트 노드의 GUID 캐시에 저장될 수 있다. 다른 실시예에서, 도 2에 도시되지는 않았지만, 클라이언트 노드(201)는 애플리케이션 인스턴스 식별자를 저장하는 중앙 보관소(a central repository)를 가질 수 있다. 이러한 실시예에서, 클라이언트 노드 클러스터(201) 내 다수의 클라이언트 노드는 중앙 보관소를 액세스할 수 있다. 또 다른 실시예에서, 애플리케이션 인스턴스 식별자는 다수의 GUID 캐시(예를 들어, GUID 캐시 214 및 GUID 캐시 216)에 걸쳐서 저장될 수 있다. 이러한 실시예에서, 클라이언트 노드 클러스터(201)는 다수의 GUID 캐시가 동일한 애플리케이션 인스턴스 식별자를 지니고 있음을 보장하도록 복사 알고리즘(a replication algorithm)을 채용할 수 있다.
앞서 설명된 바와 같이, 클라이언트(202)가 리퀘스터를 대신하여 리소스(226)를 액세스하는 동안 애플리케이션 인스턴스 식별자는 리소스(226)와 연관될 수 있다. 서버 노드(206)는 그러한 연관관계를 서버 노드 클러스터(206)의 부분인 하나 이상의 앱 인스턴스 캐시, 예를 들어, 앱 인스턴스 캐시(212 및 220)에 저장할 수 있다. 일 실시예에서, 애플리케이션 인스턴스 식별자는 리소스(226)에 대한 ECP(extra create parameter) 리스트에 추가함으로써 리소스와 연관될 수 있다. ECP 리스트는 서버 노드 클러스터(206)의 부분인 앱 인스턴스 캐시, 예를 들어, 앱 인스턴스 캐시(212 및 220)에 저장될 수 있다. 실시예에서, ECP가 서버에 의하여 수신될 때, 서버는 ECP로부터 애플리케이션 인스턴스 식별자를 추출하고 이를 리소스, 리소스 핸들(resource handle) 등과 연관되도록 캐시에 추가한다. 클라이언트 클러스터(201)에 애플리케이션 인스턴스 식별자를 저장하는 것과 관련하여 설명된 바와 같이, 노드와 연관된 애플리케이션 인스턴스 식별자는 서버 노드 클러스터(206) 내 노드 상의 개별 앱 인스턴스 캐시 또는 서버 노드 클러스터(206) 내 중앙 보관소에 저장되거나 서버 노드 클러스터(206) 내 다수의 노드 상의 다수의 앱 인스턴스 캐시에 걸쳐서 복사될 수 있다.
실시예에서, 클라이언트(202) 상에서 실행되는 리퀘스터가 리소스(226)로의 액세스를 가지는 동안 리소스(226)는 잠금 또는 보호되며, 이로써, 다른 클라이언트 또는 애플리케이션이 리소스(226)를 액세스하는 것을 방지하고 임의의 잠재적 충돌을 피할 수 있다. 실시예에서, 리퀘스터가 리소스(226)에 관한 자신의 동작을 완료하기 전에, 클라이언트(202)는 리소스와의 접속을 잃게 하는 에러를 겪는다. 예를 들어, 클라이언트는 손상되거나, 오프라인이 되거나, 서버 노드(208)로의 네트워크 접속을 잃을 수 있다. 이러한 예시에서, 리퀘스터는 리소스에 관한 잠금을 릴리즈하지 않았으므로 리소스(206)는 여전히 보소 또는 잠금 상태에 있게 되고, 이로써 다른 클라이언트가 리소스(226)를 액세스하는 것을 방지할 수 있다.
클라이언트(202)에 에러가 발생하면, 리퀘스터는 클라이언트 클러스터(201)내 새로운 클라이언트 노드(예를 들어, 클라이언트 204)로 이주하기 위해 클라이언트 페일오버 메커니즘(232)을 활용할 수 있다. 임의의 유형의 페일오버 메커니즘이 클라이언트 페일오버(232)에 채용될 수 있음을 당업자는 이해할 것이다. 실시예에서, 페일오버 메커니즘(232)은, 현재 고장난 클라이언트(202) 상의 GUID 캐시(214)에 저장되어 있었던, 리퀘스터의 애플리케이션 인스턴스 식별자의 이주를 또한 포함할 수 있다. 이주의 완료 시, 리퀘스터는 리소스(226)로의 액세스를 재획득하도록 시도할 수 있다. 실시예에서, 클라이언트(216)는 리퀘스터를 대신하여 리소스(226)로의 액세스를 요청하기 위하여 노드 1로 제2 요청(224)을 송신할 수 있다. 그러나, 본원에 개시된 연속적인 액세스 실시예 없이는, 노드 1(208)이 클라이언트(204)(제2 요청 224의 송신자)로부터 리소스(226)를 액세스하고자 하는 요청을 수신할 때, 리소스(226)는 리소스에 관하여 클라이언트(202)가 행한 이전 액세스로부터의 보호 또는 잠금 상태에 여전히 있기 때문에 노드 1은 요청을 거부할 수 있다. 본원에 개시된 연속적인 액세스 실시예 없이는, 노드 1(208)은 리소스(226)를 액세스하고자 하는 제2 요청이 다른 위치(예를 들어, 클라이언트 204)로부터 온 것임을 이해할 것이다. 노드 1(208)은 요청이 리소스(226)에 관한 잠금을 유지하는 동일한 리퀘스터에 대한 것임을 판별할 수 없을 것이고, 따라서 요청을 승인하는 것은 충돌을 야기할 것이라고 판정할 것이다. 그러나 동일한 리퀘스터가 리소스(226)를 액세스하는 경우, 충돌의 문제는 없으며 클라이언트로 하여금 리소스가 시스템에 의하여 자유롭게 되기를 기다리게 하는 것은 과도한 지연을 초래할 수 있다.
애플리케이션 인스턴스 식별자가 이 문제를 해결하기 위해 사용될 수 있다. 실시예에서, 제2 요청(224)은, 도면 부호 232에 도시된 페일오버 동안 클라이언트(204)로 이주했던 리퀘스터를 식별하는 애플리케이션 인스턴스 식별자를 또한 포함할 수 있다. 실시예에서, 리퀘스터의 애플리케이션 인스턴스 식별자는 클라이언트 페일오버(232)동안 리퀘스터의 이주(migration) 이전에 클라이언트(204)의 GUID 캐시(228)에 존재할 수 있다. 예를 들어, 클라이언트 클러스터(201) 내 노드에 걸쳐 리퀘스터의 애플리케이션 인스턴스 식별자를 복사하기 위해 복사 메커니즘이 채용되었을 수 있다. 다른 실시예에서, 리퀘스터(203)는 자신의 애플리케이션 인스턴스 식별자를 저장할 수 있다. 또 다른 실시예에서, 리퀘스터(203)의 애플리케이션 인스턴스 식별자는 클라이언트 페일오버(232) 동안 이주될 수 있다.
요청(222)에 대하여 설명된 바와 같이, 애플리케이션 인스턴스 식별자은 제2 요청(224)과 동일한 메시지에서 전송될 수 있거나 제2 요청(224)은 많은 수의 다른 메시지로 구성될 수 있다. 제2 요청이 노드 클러스터(206) 또는 노드 1(208)과 같은 클러스터 내 개별 노드에서 수신되고 수신 서버가 리소스가 잠금 또는 보호되어 있는지를 판정할 때, 제2 요청(224) 내 애플리케이션 인스턴스 식별자가 리소스(226)와 연관된 애플리케이션 인스턴스 식별자와 동일한지 여부에 관한 판정이 이루어진다. 실시예에서, 노드 2(216)는 제2 요청(224)과 함께 수신된 애플리케이션 인스턴스 식별자를 리소스(226)와 연관된 애플리케이션 인스턴스 식별자와 비교할 것이다. 리소스(226)와 연관된 애플리케이션 인스턴스 식별자는 노드 1(208)의 앱 인스턴스 캐시(212)에 저장될 수 있다. 실시예에서, 다수의 앱 인스턴스 캐시가 노드 클러스터(206)에 존재할 수 있고, 노드 클러스터(206) 내 하나 이상의 애플리케이션 인스턴스 캐시가 판정을 위해 체크될 수 있다. 이러한 실시예에서, 매칭되는 애플리케이션 인스턴스 식별자가 앱 인스턴스 캐시(212)에 위치하지 않는 경우, 노드 1(208)은 노드 2(216)로 매칭되는 애플리케이션 인스턴스 식별자가 앱 인스턴스 캐시(220)에 위치하는 지를 판별하도록 요청을 송신할 수 있다.
일 실시예에서, 제2 요청(224)에서 수신된 애플리케이션 인스턴스 식별자가 리소스(226)와 연관되는 애플리케이션 인스턴스 식별자(이는 애플리케이션 인스턴스 캐시 212 및/또는 220에 저장될 수 있음)와 매칭되지 않는 경우, 제2 요청(224)은 리소스(226)가 자유로워질 때까지 승인될 수 없다. 그러나, 매칭이 발견되는 경우, 수신 서버(예를 들어, 노드 1(208)) 및/또는 서버 노드 클러스터(206)는 클라이언트(204) 및 리퀘스터(203)에 과도한 지연을 유발하지 않고 리소스(226)로의 액세스를 승인하기 위한 액션을 수행한다. 이러한 예시에서, 노드 클러스터(206)는 리소스(226)를 실효화할 수 있고, 이로써 리소스(226)를 보호 또는 잠금 상태로부터 제거한다. 실시예에서, 이전 액세스를 실효화하는 것은 리소스를 보호 또는 잠금 상태로부터 가져오는 임의의 액션을 포함할 수 있다. 하나의 비제한적 예시는 오픈된 파일(예를 들어, 리소스 226이 파일인 경우)을 닫는 것일 수 있다. 이전의 액세스가 실효화될 시, 리소스(226)를 액세스하고자 하는 제2 요청(224)은 승인될 수 있고, 이로써 리퀘스터(203)에 연속적인 액세스를 제공한다.
일 실시예에서, 제2 요청(224)을 수신하는 노드, 예를 들어, 도 2의 노드 1(208)은, 다른 노드(예를 들어, 노드 2(216))가 이전 액세스를 실효화하기 위한 허가(permission) 및/또는 액세스를 갖는 경우, 리소스(226)의 이전 액세스를 실효화하기 위해 필요한 액션을 수행할 수 있다. 그러나, 일부 경우에서, 요청을 수신하는 노드는 이전 액세스를 실효화하기 위한 허가 또는 액세스를 가지지 않을 수 있다. 예를 들면, 오리지널 요청(222)이 노드 2(216)에 대하여 이루어진 경우 이러한 경우가 발생할 수 있으며, 이 경우 노드 2(216)는 리소스에 대한 컨트롤을 가질 수 있다. 이러한 경우에서, 제2 요청(224)을 수신하는 노드는 이전 액세스를 실효화하도록 컨트롤 노드(controlling node)로 요청을 송신할 수 있다. 컨트롤 노드가 이전 액세스를 실효화한 경우, 제2 요청(224)을 수신하는 노드는 제2 요청(224)을 승인받을 수 있다. 다른 실시예에서, 제2 요청(224)을 수신하는 노드는 클라이언트(204) 및/또는 (현재 클라이언트 204에 상주하는) 리퀘스터(203)가 리소스(226)로 액세스할 수 있도록 승인해달라는 요청을 다른 노드에 송신할 수 있다.
설명된 프로세스는, 리소스(226)를 이전에 액세스하였고 이에 대하 여전히 잠금을 유지하고 있는 리퀘스터(203)로부터의 리소스(226)를 액세스하고자 하는 제2 요청(224)을 승인하는데 있어서, 애플리케이션 인스턴스 식별자의 사용을 통하여 과도한 지연을 피할 수 있다. 또한, 애플리케이션 인스턴스 식별자는 승인된 임의의 요청은 리소스(226)에 관해 충돌을 일으키지 않음을 보장하는 이점을 제공한다. 예를 들어, 요청이 다른 애플리케이션으로부터 수신된 경우, 요청은 리소스와 연관된 애플리케이션 인스턴스 식별자와는 다른 애플리케이션 인스턴스 식별자를 포함할 것이고 이는 요청이 거부되는 결과를 초래할 것이다. 애플리케이션 인스턴스 식별자는 전역 고유 식별자이기 때문에, 다른 애플리케이션에 대한 애플리케이션 인스턴스 식별자는 동일하지 않을 것이다.
도 3은 리퀘스터가 클라이언트 클러스터화된 환경 내 리소스로의 연속적인 액세스를 획득하기 위하여 채용될 수 있는 방법(300)의 실시예이다. 예를 들어, 리퀘스터는, 리소스(예를 들어, 리소스 226)를 액세스하기 위하여 방법(300)을 채용하는 도 2의 클라이언트(202)와 같은 클라이언트일 수 있다. 실시예에서, 리소스는 원격 머신, 예를 들어 서버에 상주할 수 있다. 서버는 독립형 서버 또는 도 2의 서버 클러스터(206)와 같은 클러스터화된 환경의 부분일 수 있다. 흐름도는 동작(302)에서 시작하며, 여기서 리소스에 대한 요청이 서버로 송신된다. 실시예에서, 요청은 리소스를 액세스하기 위한 것이다. 실시예에서, 리소스를 액세스하는 것은 파일을 오픈, 파일을 생성, 또는 클라이언트에게 멀리 떨어져 있을 수 있는 리소스에 관한 동작을 달리 수행 또는 액세스하는 것을 포함한다. 실시예에서, 리퀘스터는 클라이언트 클러스터화된 환경에서 동작할 수 있다. 이러한 실시예에서, 동작(302)에서 송신된 요청은 클라이언트 클러스터화된 환경 내 제1 클라이언트로부터 송신될 수 있다.
흐름도는 동작(304)로 진행되는데, 여기서 애플리케이션 인스턴스 식별자가, 예를 들어 서버(예를 들면, 독립형 서버 또는 클러스터화된 환경 내 노드)로 송신된다. 일 실시예에서, 요청을 송신한 제1 클라이언트는 리퀘스터를 대신하여 애플리케이션 인스턴스 식별자 또한 송신할 수 있다. 앞서 일찍이 설명한 바와 같이, 애플리케이션 인스턴스 식별자는 리퀘스터(예를 들어, 애플리케이션, 클라이언트, 또는 리소스로의 액세스를 요청하는 애플리케이션의 자식 프로세스)를 식별하는 GUID이다. 일 실시예에서, 애플리케이션 인스턴스 식별자는 네트워크를 통하여 전송되는 메시지에서 송신될 수 있다. 애플리케이션 인스턴스 식별자은 동작(302)에서의 요청을 지니는 동일한 메시지에서 전송되거나 다른 메시지에서 전송 될 수 있다. 이러한 실시예에서, 애플리케이션 인스턴스 식별자를 포함하는 오브젝트, 예를 들어 그러나 이에 제한되지는 않는, 도 2와 관련하여 설명된 _NETWORK_APP_INSTANCE_ECP_CONTEXT가 동작(302)에서 송신 될 수 있다.
일 실시예에서, 동작(304)에서 애플리케이션 인스턴스 식별자를 송신하기 위하여 인터페이스가 사용될 수 있다. 인터페이스는 클라이언트 클러스터화된 환경에서 동작하는 클라이언트에게 사용가능하거나 클라이언트에 위치한 커널 레벨 인터페이스(a kernel level interface)일 수 있다. 실시예에서, 커널 레벨 인터페이스는 애플리케이션 인스턴스 식별자를 서버로 송신하기 위해 리퀘스터 및/또는 클라이언트에 의하여 이용될 수 있다. 다음은 애플리케이션 인스턴스 식별자를 송신하기 위해 동작(304)에서 채용될 수 있는 커널 레벨 인터페이스의 비제한적 예시이다:
Figure pct00002
Figure pct00003
특정 커널 레벨 인터페이스가 제시되었지만, 다른 커널 레벨 인터페이스가 애플리케이션 인스턴스 식별자를 송신하기 위해 동작(304)에서 채용될 수 있음을 당업자는 이해할 것이다.
다른 실시예에서, 애플리케이션 사용자 인터페이스(API)가 애플리케이션 인스턴스 식별자를 송신하기 위해 동작(304)에서 채용될 수 있다. 이러한 실시예에서, 리퀘스터 및/또는 클라이언트는 API로 호출을 행함으로써 애플리케이션 인스턴스 식별자를 송신할 수 있다. API는 동작(305)을 수행하는 클라이언트(예를 들어, 서버 클러스터 내 제1 클라이언트) 상에 호스팅될 수 있거나, API는 다른 디바이스 상에 호스팅 되고 리퀘스터 또는 다른 애플리케이션 또는 다른 프로세스에 의하여 액세스될 수 있다. 다음은 애플리케이션 인스턴스 식별자를 송신하기 위해 동작(304)에서 채용될 수 있는 API의 비제한적 예시이다.
Figure pct00004
특정 API가 제시되었지만, 다른 API가 동작(304)에서 채용될 수 있음을 당업자는 이해할 것이다. 또한, 동작(304)은 별개의 동작으로 도시되었으나, 애플리케이션 인스턴스 식별자를 송신하는 것은 동작(302)에서 요청을 송신하는 것과 동시에 수행될 수 있음을 당업자는 이해할 것이다.
요청된 리소스가 잠금 되었을 때, 동작(302)에서 송신된 요청은 승인되고 흐름도는 리소스가 액세스되는 동작(306)으로 계속된다. 이전에 설명된 바와 같이, 리소스를 컨트롤하는 디바이스 또는 서버는 리퀘스터가 동작(306)에서 리소스를 액세스하는 동안 리소스를 보호 또는 잠금 상태에 둘 수 있다. 리소스를 액세스하고 있는 어떤 시점에, 클라이언트가 고장 나거나 리소스로의 접속을 달리 잃게 하는 도 2를 참조하여 설명된 에러들과 같은 에러가 발행한다. 에러는, 리퀘스터가 리소스에 대한 자신의 사용을 완료하기 전에 클라이언트(예를 들어, 서버 클러스터 내 제1 클라이언트)가 리소스로의 액세스를 잃게 할 수 있다. 이러한 정황상, 리소스는 보호 또는 잠금 상태로부터 릴리즈될 수 없을 수 있다.
흐름도는 동작(308)로 계속되며, 여기서 페일오버 동작이 수행된다. 실시예에서, 페일오버 동작은 리퀘스터 및 이의 상태를 클라이언트 노드 클러스터 내 다른 클라이언트로 복제(cloning)하는 것을 포함할 수 있다. 실시예에서, 리퀘스터의 상태는 제2 클라이언트에 복제될 수 있고, 리퀘스터는 제1 클라이언트가 고장난 지점에서부터 실행을 재개할 수 있도록 하는 방식으로 제2 클라이언트에서 실행될 수 있다. 다른 실시예에서, 리퀘스터는 제1 클라이언트의 페일오버의 시점에 제1 클라이언트(여기에서 실행되는 대신에)와 통신할 수 있다. 이러한 실시예에서, 페일오버 동작은 리퀘스터가 클라이언트 클러스터 내 제2 클라이언트와 통신을 수립하는 것을 포함한다.
실시예에서, 리퀘스터의 애플리케이션 인스턴스 식별자를 포함하나 이에 제한되지 않는 상태 정보(state information)는 제1 클라이언트로부터 제2 클라이언트로 전송될 수 있다. 일 실시예에서, 제1 클라이언트는 리퀘스터의 애플리케이션 인스턴스 식별자 및/또는 리퀘스터의 상태 정보를 포함하는 메시지를 송신할 수 있다. 애플리케이션 인스턴스 식별자 및/또는 상태는 페일오버 프로세스 동안 송신될 수 있고, 또는 실시예에서 제1 클라이언트가 고장 나기 전에, 예를 들어, 클라이언트 클러스터화된 환경 내 클라이언트에 걸쳐 정보를 복제하는 복사 메커니즘 동안에 송신될 수 있다. 다른 실시예에서, 리퀘스터의 애플리케이션 인스턴스 식별자 및/또는 상태 정보는 클라이언트 클러스터화된 네트워크 내 중앙 위치 또는 보관소에 저장될 수 있다. 이러한 실시예에서, 페일오버 프로세스는 리퀘스터의 애플리케이션 인스턴스 식별자 및/또는 상태 정보의 위치를 제2 클라이언트에 제공할 수 있다. 또 다른 실시예에서, 리퀘스터는 자신의 애플리케이션 인스턴스 식별자를 유지할 수 있다. 이러한 실시예에서, 클라이언트 페일오버 동작은 리퀘스터와 제2 클라이언트 사이의 접속을 이전 시키거나 달리 수립하는 것을 포함할 수 있다.
실시예에서, 클라이언트 페일오버 동작 이후, 흐름도는 동작(310)으로 계속된다. 동작(301)에서 동일한 리소스에 대한 제2 요청이 클러스터화된 환경으로 송신된다. 실시예에서, 제2 요청은 클라이언트 클러스터 내 제2 클라이언트에 의하여 리퀘스터를 대신하여 송신된다. 제2 요청은 동작(302)에서 제1 리소스에 대하여 설명된 것과 동일한 방식을 사용하여 송신될 수 있다. 리소스에 대한 연속적인 액세스를 유지하고 과도한 지연을 피하기 위하여, 흐름도는 동작(312)로 계속되며, 여기서 애플리케이션 인스턴스 식별자가 클러스터화된 환경으로 다시 송신된다. 애플리케이션 인스턴스 식별자는 동작(304)에 관련하여 설명되었던 실시예 중 하나에 따라 동작(208)에서 송신 될 수 있다. 실시예에서, 다른 클라이언트(예를 들어, 제2 클라이언트)가 제2 요청을 송신하고 있으므로, (예컨대, 요청이 다른 머신, 다른 어드레스 등으로부터 이루어지므로) 요청을 수신하는 서버는 제2 요청이 리소스에 관하여 잠금을 유지하는 동일한 리퀘스터에 속하는지를 식별할 수 없을 수 있다. 그러나, 동작(304 및 308)에서 애플리케이션 인스턴스 식별자를 송신함으로써, 서버는 동일한 리퀘스터에 속하는 요청을 식별할 수 있을 것이며, 도 1 및 도 2에 관련하여 이전에 설명된 바와 같은 리소스로의 연속적인 액세스를 승인할 수 있을 것이다. 흐름도는 동작(314)로 계속되고 리퀘스터는 리소스로의 액세스를 재개한다. 실시예에서, 제2 클라이언트는 서버로 부터 서버가 제2 요청을 승인하였음을 표시하는 제2 요청에 대한 응신을 수신할 수 있다. 실시예에서, 표시 수신시에, 제2 클라이언트는 리퀘스터를 대신하여 리소스에 액세스할 수 있다.
도 4는 리소스로의 연속적인 액세스를 제공하는 서버 클러스터화된 환경 내 노드의 의하여 수행되는 방법(400)의 실시예이다. 방법(400)의 실시예는, 예를 들어, 노드 클러스터(도 2의 206)와 같은 클러스터화된 환경 내 노드 1(도 2의 208)과 같은 노트에 의하여 수행될 수 있다. 실시예에서, 방법(400)은 리소스로의 액세스를 갖는 노드에 의하여 수행될 수 있다. 흐름도는 동작(402)에서 시작하고, 여기서 노드는 리소스에 대한 요청을 수신한다. 실시예에서, 리소스는 파일, 오브젝트, 방법, 데이터, 또는 동작(400)을 수행하는 노드에 의하여 액세스 되거나 및/또는 이의 제어 하에 있는 임의의 유형의 리소스일 수 있다. 애플리케이션 인스턴스 식별자는 동작(402)에서 요청과 함께 수신될 수 있다.
흐름도는 결정 동작(404)으로 계속되며, 여기서 리소스가 보호 또는 잠금 상태에 있는지 여부에 대한 판별이 이루어진다. 리소스가 보호 또는 잠금 상태에 있는지를 판별하는 임의의 방법이 동작(404)에서 채용될 수 있음을 당업자는 이해할 것이다. 리소스가 보호 또는 잠금 상태에 있지 않는 경우, 흐름도는 동작(412)으로‘아니오’로 갈라지며, 여기서 리소스에 대한 요청이 승인된다. 실시예에서, 요청을 승인하는 것은, 리퀘스터로 하여금 리소스로 액세스할 수 있게 하는 것, 리퀘스터를 대신하여 리소스에 관한 동작을 수행하는 것, 또는 리소스에 대한 임의의 종류의 액세스 또는 수정을 허용하는 것을 포함할 수 있다. 예를 들어, 동작(412)에서 요청을 승인하는 것은 파일을 오픈하는 것 또는 파일을 생성하는 것을 포함할 수 있다.
리소스가 보호 또는 잠금 상태인 경우, 흐름도는 동작(404)으로부터 결정 동작(406)으로 ‘예’로 갈라진다. 결정 동작(406)에서, 동작(402)에서 요청과 함께 수신된 애플리케이션 인스턴스 식별자는 리소스와 연관된 애플리케이션 인스턴스 식별자와 비교된다. 예를 들어, 도 2에 관련하여 설명된 바와 같이, 클라이언트 또는 애플리케이션이 리소스에 액세스하는 경우 노드는 애플리케이션 인스턴스 식별자를 리소스와 연관시킬 수 있다. 먼저 설명된 바와 같이, 리소스를 액세스하는 리퀘스터의 애플리케이션 인스턴스 식별자의 연관관계(association)는 노드에, 예를 들어, 도 2에서 논의된 다양한 실시예에서 설명된 바와 같은 앱 인스턴스 캐시에, 저장 될 수 있다. 실시예에서, 리소스에 대한 요청과 함께 수신된 ECP, 예를 들어, _NETWORK_APP_INSTANCE_ECP_CONTEXT 구조에 제공되는 애플리케이션 인스턴스 식별자는 리소스와 연관되는 ECP 리스트에 추가될 수 있다.
일 실시예에서, 애플리케이션 인스턴스와 리소스의 연관관계는 방법(400)을 수행하는 노드에 로컬로 상주할 수 있다. 이러한 실시예에서, 비교가 서머에 상주하는 로컬 앱 인스턴스 캐시에서 이루어질 수 있다. 그러나, 도 2와 관련하여 논의된 바와 같이, 클러스터화된 환경은 다른 노드에 걸쳐 분산된 많은 수의 앱 인스턴스 캐시를 포함할 수 있다. 또한, 다른 애플리케이션 인스턴스 캐시는 개별 및/또는 다른 데이터를 각각 저장할 수 있다. 잠금 또는 보호된 리소스와 연관된 애플리케이션 식별자는 클러스터화된 환경 내 다른 노드에 저장 될 수 있다. 이러한 실시예에서, 동작(406)은 동작(406)에서 비교를 수행하기 위해 다른 노드로 요청을 송신하는 것을 포함할 수 있다. 요청은 동작(402)에서 수신된 애플리케이션 인스턴스 식별자를 포함할 수 있다.
수신된 애플리케이션 인스턴스 식별자가 리소스와 연관된 애플리케이션 인스턴스 식별자와 동일하지 않는 경우, 흐름도는 동작(410)으로 ‘아니오’로 갈라진다. 동작(410)에서는, 동작(402)에서 수신된 리소스를 액세스하고자 하는 요청이 거부된다. 실시예에서, 요청은 리소스 충돌을 피하기 위해 거부된다. 수신된 애플리케이션 인스턴스 식별자가 연관된 애플리케이션 인스턴스 식별자와 동일하지 않기 때문에, 동작(402)에서 수신된 리소스를 액세스하고자 하는 요청은 다른 리퀘스터 또는 애플리케이션으로부터 온 것이다. 다른 클라이언트 또는 애플리케이션에 요청을 승인하는 것은, 이 경우인 것과 같이, 현재 리소스를 액세스하는 애플리케이션과 간섭하는 충돌 상황을 초래할 것이다. 예를 들어, 리소스에 관하여 잠금을 현재 유지하고 있는 리퀘스터에 의하여 리소스에 수행되는 동작과 간섭을 달리 일으키거나 수정하는 방식으로, 다른 애플리케이션이 리소스를 수정할 수 있다.
그러나, 잠금 또는 보호된 리소스와 연관된 애플리케이션 인스턴스 식별자와 동일한 애플리케이션 인스턴스 식별자를 요청과 함께 수신하는 것(402)은, 리소스에 액세스하던 리퀘스터로 하여금 리소스를 적절히 릴리즈함이 없이 리소스에 대한 자신의 액세스를 잃게 하는 에러가 일어났을 수 있음을 나타낸다. 예를 들어, 리퀘스터는 클라이언트 노트 클러스터에서 동작할 수 있다. 리퀘스터가 동작하고 있는 특정 클라이언트는, 리퀘스터가 리소스에 관한 자신의 동작을 완료하기 전에 서버에 대한 접속을 잃어버렸을 수 있고 달리 고장 났을 수 있다. 리소스에 대한 연속적인 액세스를 제공하기 위해, 즉 과도한 또는 수용할 수 없는 지연을 겪지 않고 리퀘스터가 리소스에 대한 액세스를 재획득 가능하게 하도록, 흐름도는 동작(408)으로 ‘예’로 갈라진다.
동작(408)에서 리소스는 실효화된다. 앞서 설명된 바와 같이, 리소스를 실효화하는 것은 리소스의 보호 상태를 변경하는 것 또는 달리 리소스 상의 잠금을 제거하는 것을 포함한다. 예를 들어, 리소스가 파일인 경우, 리소스를 실효화하는 것은 파일을 닫는 것을 포함한다. 잠금 또는 보호된 리소스를 릴리즈하는 임의의 방법이 동작(408)에 채용될 수 있음을 당업자는 이해할 것이다.
도 2를 다시 참조하면, 실시예에서, 리소스에 대한 액세스는 동작(402)에서 수신된 리소스를 액세스하고자 하는 요청을 수신하는 노드와는 다른 클러스터화된 환경 내 노드의 제어 하에 있을 수 있다. 예를 들어, 리소스에 대한 핸들은 클러스터화된 환경 내 다른 노드에 상주할 수 있다. 이러한 실시예에서, 리소스를 실효화하는 것은, 리소스를 실효화하도록 리소스로의 액세스를 제어하는 노드에 요청을 송신하는 것을 포함할 수 있다. 요청을 송신하는 것에 응답하여, 원격 노드는 리소스를 실효화할 수 있다.
리소스가 실효화된 후, 흐름도는 동작(412)로 계속되고, 여기서 리소스를 액세스하고자 하는 요청이 승인된다. 요청을 승인하는 것은, 리퀘스터로 하여금 리소스로 액세스할 수 있게 하는 것, 리퀘스터를 대신하여 리소스에 관한 동작을 수행하는 것, 또는 리소스에 대한 임의의 종류의 액세스 또는 수정을 허용하는 것을 포함할 수 있다. 예를 들어, 동작(412)에서 요청을 승인하는 것은 파일을 오픈하는 것 또는 파일을 생성하는 것을 포함할 수 있다. 이러한 액세스를 승인하는 것은 동작(402)에서 요청을 수신하는 노드, 또는 클러스터화된 환경 내 다른 노드에 의하여 수행될 수 있다.
방법(300 및 400)은 실시예에 따라 수행될 수 있는 동작 흐름의 일부 예시에 불과하다. 실시예는 도 3 내지 6과 관련하여 위에 제시된 특정 설명으로 제한되는 것이 아니고 추가의 동작을 포함할 수 있다. 또한, 묘사된 동작 단계는 다른 단계에 결합되거나 및/또는 재배치 될 수 있다. 또한, 더 적은 또는 추가적인 단계가 도 3 및 4에 설명된 방법에 채용되거나 사용될 수 있다.
도 5는 본원에 설명된 실시예를 구현하는데 사용될 수 있는 범용 컴퓨터 시스템(500)을 도시한다. 컴퓨터 시스템(500)은 컴퓨팅 환경의 일 예시에 불과하며, 컴퓨터 및 네트워크 아키텍처의 기능 또는 사용의 범주에 임의의 제한을 가하려는 의도가 아니다. 컴퓨터 시스템(500)은 예시적 컴퓨터 시스템(500)에 도시된 컴포넌트 중 임의의 하나 또는 조합에 관련되는 임의의 의존성 또는 요구사항을 가지는 것으로 또한 해석되어서도 안 된다. 실시예에서, 시스템(500)은 도 1 및 2와 관련하여 위에서 설명된 클라이언트 및/또는 서버로서 사용될 수 있다.
가장 기본적인 구성에 있어서, 시스템(500)은 전형적으로 적어도 하나의 프로세싱 유닛(502)과 메모리(504)를 포함한다. 컴퓨팅 디바이스의 정확한 구성 및 유형에 의존하여, 메모리(504)는 휘발성(예를 들어, RAM), 비휘발성(예를 들어, ROM, 플래시 메모리, 등) 또는 어떤 조합일 수 있다. 이러한 가장 기본적인 구성은 도 5에서 점선(506)으로 도시되어 있다. 시스템 메모리(504)는, 본원에 개시된 연속적인 사용가능 방법을 수행하는 인스트럭션과 같은 인스트럭션(520), 및 스토리지(508)와 같은 스토리지를 갖는 파일 스토리지 시스템에 저장될 수 있는 애플리케이션 인스턴스 식별자와 같은 데이터(522)를 저장한다.
본원에 사용된 컴퓨터 판독가능 매체라는 용어는 컴퓨터 스토리지 매체를 포함할 수 있다. 컴퓨터 스토리지 매체는 정보, 예를 들어, 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈 또는 다른 데이터의 저장에 대한 임의의 방법 또는 기술로 구현된 휘발성의 그리고 비휘발성의, 탈착가능 그리고 비탈착가능 매체를 포함할 수 있다. 시스템 메모리(504), 탈착가능 스토리지, 비탈착가능 스토리지(508)는 모두 컴퓨터 스토리지 매체의 예들(예를 들어, 메모리 스토리지)이다. 컴퓨터 스토리지 매체는 RAM, ROM, 전기적 소거가능 리드 온리 메모리(EEPROM), 플래시 메모리 또는 다를 메모리 기술, CD-ROM, DVD(digital versatile disks) 또는 다른 광학 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스, 또는 정보를 저장하는데 사용될 수 있고 컴퓨팅 디바이스(500)에 의하여 액세스될 수 있는 임의의 다른 매체를 포함할 수 있으나 이에 한정되지 않는다. 임의의 이러한 컴퓨터 스토리지 매체는 디바이스(500)의 부분이다. 컴퓨팅 디바이스(500)는 또한 입력 디바이스(들)(514), 예를 들어, 키보드, 마우스, 펜, 사운드 입력 디바이스, 터치 입력 디바이스, 등을 포함할 수 있다. 출력 디바이스(들)(516), 예를 들어, 디스플레이, 스피커, 프린터 등 또한 포함될 수 있다. 앞서 언급된 디바이스들은 예시들이며 다른 것들이 사용될 수 있다.
본원에서 사용된 컴퓨터 판독가능 매체라는 용어는 통신 매체를 또한 포함할 수 있다. 통신 매체는 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈, 또는 변조된 데이터 신호, 예를 들어, 반송파(a carrier wave) 또는 다른 전송 메커니즘 내 다른 데이터에 의하여 구체화될 수 있고, 임의의 정보 전달 매체를 포함할 수 있다. “변조된 데이터 신호(modulated data signal)”라는 용어는 신호에 정보를 인코딩하기 위한 방식으로 설정 또는 변경된 하나 이상의 특성을 갖는 신호를 나타낸다. 제한이 아닌, 예로써, 통신 매체는 유선 네트워크 또는 다이렉트 유선 접속(direct-wired connection)과 같은 유선 매체, 음향, 무선(RF), 적외선 또는 다른 무선 매체와 샅은 무선 매체를 포함할 수 있다.
본 발명의 실시예는 시스템 온 칩(a system-on-chip; SOC)을 통하여 실시될 수 있고, 여기서 도 5에 도시된 컴포넌트 중 많은 수 또는 각각은 단일 집적 회로 상에 집적될 수 있다. 이러한 SOC 디바이스는, 단일 집적 회로로서 칩 기판 상으로 모두가 집적(또는 “버닝(burned)”)되는, 하나 이상의 프로세싱 유닛, 그래픽 유닛, 통신 유닛, 시스템 가상화 유닛 및 다양한 애플리케이션 기능을 포함할 수 있다. SOC를 통하여 동작시킬 때, 리소스에 대한 연속적인 액세스를 제공하는 것에 관련하여, 본원에 설명된, 기능은 단일 집적 회로(칩) 상에 컴퓨팅 디바이스/시스템(500)의 다른 컴포넌트와 함께 집적된 애플리케이션 특정 로직을 통하여 동작할 수 있다.
본 명세서 전반에 걸쳐 “일 실시예”또는 “실시예”로 참조하는 것은 특별히 설명된 피처, 구조, 또는 특성이 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 이러한 문구의 사용은 하나의 실시예 그 이상을 참조할 수 있다. 또한 설명된 피처, 구조, 또는 특성은 하나 이상의 실시예들에 임의의 적합한 방식으로 조합될 수 있다.
그러나, 하나 이상의 특정 세부사항, 또는 다른 방법, 리소스, 재료, 등이 없이도 실시예들이 실시될 수 있음을, 관련 업계의 당업자는 이해할 것이다. 다른 경우로, 잘 알려진 구조, 리소스, 또는 동작은, 실시예들의 양태를 모호하게 하는 것을 피하기 위하여 본원에 자세히 설명 또는 보이지 않았다.
예시적 실시예들 및 애플리케이션들이 도시되고 설명되었지만, 실시예들은 위에서 설명한 자세한 구성 및 리소스에 제한되지 않는다는 것이 이해되어야 한다. 당업자에게 분명한 다양한 수정, 변경 및 변형이 청구된 실시예의 번부에서 벗어남이 없이 본원에 개시된 방법 및 시스템의 배치, 동작, 및 상세사항에 가해질 수 있을 것이다.

Claims (10)

  1. 리소스로의 연속적 액세스(continuous access)를 제공하는 방법으로서,
    리소스를 액세스하고자 하는 리퀘스터(a requester)의 제1 요청을 제1 클라이언트로부터 수신하는 단계와,
    상기 리소스와 제1 애플리케이션 인스턴스 식별자를 연관시키는 단계와,
    상기 리소스로의 액세스에 대한 상기 제1 요청을 수락하는 단계와,
    고장으로부터 복구되고 난 후 상기 리소스에 대한 상기 리퀘스터의 제2 요청을 상기 제1 클라이언트와는 다른 제2 클라이언트로부터 수신하는 단계와,
    상기 제2 요청과 연관된 제2 애플리케이션 인스턴스 식별자를 수신하는 단계와,
    상기 제1 애플리케이션 인스턴스 식별자와 상기 제2 애플리케이션 인스턴스 식별자가 동일한지를 판정하는 단계와,
    상기 제1 애플리케이션 인스턴스 식별자와 상기 제2 애플리케이션 인스턴스 식별자가 동일한 경우, 상기 제1 요청을 실효화(invalidating)시키는 것과 상기 리소스를 액세스하고자 하는 상기 제2 요청을 승인하는 것을 수행하는 단계를 포함하는
    방법.

  2. 제1항에 있어서,
    상기 제1 애플리케이션 인스턴스 식별자는 오픈 요청의 애플리케이션 인스턴스와 연관되는
    방법.
  3. 제1항에 있어서,
    상기 제1 애플리케이션 인스턴스 식별자는 프로세스와 연관되는
    방법.
  4. 제1항에 있어서,
    상기 제1 애플리케이션 인스턴스 식별자는 애플리케이션의 적어도 하나의 자식 프로세스(child process)와 연관되는
    방법.
  5. 제1항에 있어서,
    상기 제1 애플리케이션 인스턴스 식별자를 연관시키는 단계는 NETWORK_APP_INSTANCE_ECP_CONTEXT 구조 내에 상기 제1 애플리케이션 인스턴스 식별자를 수신하는 것을 포함하는
    방법.
  6. 클러스터화된 클라이언트 페일오버(clustered client failover)를 제공하기 위한 방법으로서,
    이전에 제1 클라이언트를 사용하여 리소스에 액세스하였던 리퀘스터에 대한 애플리케이션 인스턴스 식별자를 제 2 클라이언트에서 수신하는 단계와,
    상기 리퀘스터를 대신하여 상기 리소스를 액세스하고자 하는 제2 요청을 상기 제2 클라이언트로부터 송신하는 단계와,
    상기 리퀘스터에 대한 애플리케이션 인스턴스 식별자를 상기 제2 클라이언트로부터 송신하는 단계와,
    상기 제2 요청을 서버가 승인하였다는 표시를 수신하는 단계와,
    상기 리퀘스터를 대신하여 상기 제2 클라이언트에 의하여 리소스를 액세스하는 단계를 포함하는
    방법.
  7. 제6항에 있어서,
    상기 제2 요청을 승인하는 서버는, 상기 리퀘스터를 대신하여 상기 리소스를 액세스하고자 하는 상기 제1 클라이언트로부터의 제1 요청을 이전에 승인하였던
    방법.
  8. 제6항에 있어서,
    상기 제2 클라이언트는 클라이언트 페일오버에 응답하여 상기 제2 요청을 송신하는
    방법.
  9. 클러스터화된 환경(a clustered environment)에서 클라이언트 페일오버를 가능하게 하기 위한 시스템으로서,
    컴퓨터 실행가능 인스트럭션을 실행하도록 구성된 적어도 하나의 프로세서 및 상기 컴퓨터 실행가능 인스트럭션을 저장하는 적어도 하나의 컴퓨터 판독가능 저장 매체를 포함하는 적어도 하나의 서버를 포함하되,
    상기 컴퓨터 실행가능 인스트럭션은 상기 적어도 하나의 프로세서에 의하여 실행될 때,
    리퀘스터를 대신하여 리소스를 액세스하고자 하는 제1 요청을 제1 클라이언트로부터 수신하는 것과,
    제1 애플리케이션 식별자를 상기 리소스와 연관시키는 것과,
    상기 리소스로의 액세스에 대한 요청을 수락하는 것과,
    상기 리소스에 대한 제2 요청을 상기 제1 클라이언트와 다른 제2 클라이언트로부터 수신하는 것과,
    상기 제2 요청과 연관된 제2 애플리케이션 식별자를 수신하는 것과,
    상기 제1 애플리케이션 식별자와 상기 제2 애플리케이션 식별자가 동일한지를 판정하는 것과,
    상기 제1 애플리케이션 식별자와 상기 제2 애플리케이션 식별자가 동일한 경우, 상기 제1 요청을 실효화시키고 상기 리소스에 대한 상기 제2 요청을 승인하는 것을 제공하는
    시스템.
  10. 제9항에 있어서,
    상기 시스템은 상기 제1 클라이언트를 더 포함하고,
    상기 제1 클라이언트는,
    컴퓨터 실행가능 인스트럭션을 실행하도록 구성된 적어도 하나의 프로세서 및 상기 컴퓨터 실행가능 인스트럭션을 저장하는 적어도 하나의 컴퓨터 판독가능 저장 매체를 포함하고,
    상기 컴퓨터 실행가능 인스트럭션은 상기 적어도 하나의 프로세서에 의하여 실행될 때,
    상기 제1 요청을 송신하는 것과,
    애플리케이션 식별자를 제2 클라이언트로 송신하는 것을 제공하는
    시스템.
KR1020147006256A 2011-09-09 2012-09-07 클러스터화된 클라이언트 장애 해결 기법 KR101941728B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/228,732 US8788579B2 (en) 2011-09-09 2011-09-09 Clustered client failover
US13/228,732 2011-09-09
PCT/US2012/054038 WO2013036697A2 (en) 2011-09-09 2012-09-07 Clustered client failover

Publications (2)

Publication Number Publication Date
KR20140064850A true KR20140064850A (ko) 2014-05-28
KR101941728B1 KR101941728B1 (ko) 2019-04-12

Family

ID=47646871

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147006256A KR101941728B1 (ko) 2011-09-09 2012-09-07 클러스터화된 클라이언트 장애 해결 기법

Country Status (18)

Country Link
US (1) US8788579B2 (ko)
EP (1) EP2754059B1 (ko)
JP (1) JP6210987B2 (ko)
KR (1) KR101941728B1 (ko)
CN (1) CN102932164B (ko)
AU (1) AU2012304549B2 (ko)
BR (1) BR112014005191A2 (ko)
CA (1) CA2847597A1 (ko)
CL (1) CL2014000539A1 (ko)
CO (1) CO6900122A2 (ko)
ES (1) ES2626655T3 (ko)
IL (1) IL231373A (ko)
IN (1) IN2014CN01748A (ko)
MX (1) MX336341B (ko)
RU (1) RU2595755C2 (ko)
SG (1) SG11201400442SA (ko)
WO (1) WO2013036697A2 (ko)
ZA (1) ZA201401381B (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316129B2 (en) 2005-05-25 2012-11-20 Microsoft Corporation Data communication coordination with sequence numbers
US8631277B2 (en) 2010-12-10 2014-01-14 Microsoft Corporation Providing transparent failover in a file system
US9331955B2 (en) 2011-06-29 2016-05-03 Microsoft Technology Licensing, Llc Transporting operations of arbitrary size over remote direct memory access
US8856582B2 (en) 2011-06-30 2014-10-07 Microsoft Corporation Transparent failover
US20130067095A1 (en) 2011-09-09 2013-03-14 Microsoft Corporation Smb2 scaleout
US9274834B2 (en) * 2012-08-25 2016-03-01 Vmware, Inc. Remote service for executing resource allocation analyses for computer network facilities
JP6151365B2 (ja) * 2013-09-03 2017-06-21 株式会社東芝 情報処理システム、情報処理方法及びプログラム
US20150100826A1 (en) * 2013-10-03 2015-04-09 Microsoft Corporation Fault domains on modern hardware
US9801002B2 (en) 2013-11-26 2017-10-24 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for identifying application instances within a machine-to-machine network domain
US9665432B2 (en) * 2014-08-07 2017-05-30 Microsoft Technology Licensing, Llc Safe data access following storage failure
US9847918B2 (en) * 2014-08-12 2017-12-19 Microsoft Technology Licensing, Llc Distributed workload reassignment following communication failure
US9936048B2 (en) * 2014-09-10 2018-04-03 International Business Machines Corporation Client system communication with a member of a cluster of server systems
GB2531341B (en) 2014-10-17 2016-10-12 Ibm Reconnection of a client to a server in a transaction processing server cluster
US10146873B2 (en) 2015-06-29 2018-12-04 Microsoft Technology Licensing, Llc Cloud-native documents integrated with legacy tools
CN107229455B (zh) 2016-03-24 2019-09-17 阿里巴巴集团控股有限公司 一种业务处理方法、装置及系统
US10884863B2 (en) * 2018-07-20 2021-01-05 Red Hat, Inc. Client session reclaim for a distributed storage system
CN110457114B (zh) * 2019-07-24 2020-11-27 杭州数梦工场科技有限公司 应用集群部署方法及装置
CN111405015B (zh) * 2020-03-09 2022-09-30 中国建设银行股份有限公司 一种数据处理方法、装置、设备及存储介质
US11507512B2 (en) * 2020-12-08 2022-11-22 EMC IP Holding Company LLC Fault tolerant cluster data handling
CN116248748A (zh) * 2023-02-27 2023-06-09 西安奕斯伟材料科技股份有限公司 一种通讯连接方法、装置、设备、介质及产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050091212A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Method and system for accessing a file
US20050223014A1 (en) * 2002-12-06 2005-10-06 Cisco Technology, Inc. CIFS for scalable NAS architecture
EP1643406A2 (en) * 2004-09-30 2006-04-05 Microsoft Corporation Registration identifier reuse
US7664991B1 (en) * 2002-12-17 2010-02-16 Symantec Operating Corporation System and method for distributed file system I/O recovery

Family Cites Families (191)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4399504A (en) 1980-10-06 1983-08-16 International Business Machines Corporation Method and means for the sharing of data resources in a multiprocessing, multiprogramming environment
US4825354A (en) 1985-11-12 1989-04-25 American Telephone And Telegraph Company, At&T Bell Laboratories Method of file access in a distributed processing computer network
US4780821A (en) 1986-07-29 1988-10-25 International Business Machines Corp. Method for multiple programs management within a network having a server computer and a plurality of remote computers
US4914570A (en) 1986-09-15 1990-04-03 Counterpoint Computers, Inc. Process distribution and sharing system for multiple processor computer system
US4887204A (en) 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
US5202971A (en) 1987-02-13 1993-04-13 International Business Machines Corporation System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock
US4791566A (en) 1987-03-27 1988-12-13 Digital Equipment Corporation Terminal device session management protocol
US5008853A (en) 1987-12-02 1991-04-16 Xerox Corporation Representation of collaborative multi-user activities relative to shared structured data objects in a networked workstation environment
US4891785A (en) 1988-07-08 1990-01-02 Donohoo Theodore J Method for transferring data files between computers in a network response to generalized application program instructions
US5124909A (en) 1988-10-31 1992-06-23 Hewlett-Packard Company Software program for providing cooperative processing between personal computers and a host computer
CA1323448C (en) 1989-02-24 1993-10-19 Terrence C. Miller Method and apparatus for translucent file system
US5109519A (en) 1989-03-28 1992-04-28 Wang Laboratories, Inc. Local computer participating in mail delivery system abstracts from directory of all eligible mail recipients only served by local computer
US5560008A (en) 1989-05-15 1996-09-24 International Business Machines Corporation Remote authentication and authorization in a distributed data processing system
US5113519A (en) 1989-05-15 1992-05-12 International Business Machines Corporation Maintenance of file attributes in a distributed data processing system
US5218696A (en) 1989-07-24 1993-06-08 International Business Machines Corporation Method for dynamically expanding and rapidly accessing file directories
US5265261A (en) 1989-08-14 1993-11-23 Microsoft Corporation Method and system for network communications using raw mode protocols
US5261051A (en) 1989-08-14 1993-11-09 Microsoft Corporation Method and system for open file caching in a networked computer system
JP2575543B2 (ja) 1990-04-04 1997-01-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 同時アクセス管理方法
JPH0619771A (ja) 1992-04-20 1994-01-28 Internatl Business Mach Corp <Ibm> 異種のクライアントによる共用ファイルのファイル管理機構
US5349642A (en) 1992-11-03 1994-09-20 Novell, Inc. Method and apparatus for authentication of client server communication
US5452447A (en) 1992-12-21 1995-09-19 Sun Microsystems, Inc. Method and apparatus for a caching file server
US5493728A (en) 1993-02-19 1996-02-20 Borland International, Inc. System and methods for optimized access in a multi-user environment
US5491752A (en) 1993-03-18 1996-02-13 Digital Equipment Corporation, Patent Law Group System for increasing the difficulty of password guessing attacks in a distributed authentication scheme employing authentication tokens
US5522042A (en) 1994-01-28 1996-05-28 Cabletron Systems, Inc. Distributed chassis agent for distributed network management
US5588117A (en) 1994-05-23 1996-12-24 Hewlett-Packard Company Sender-selective send/receive order processing on a per message basis
US5513314A (en) 1995-01-27 1996-04-30 Auspex Systems, Inc. Fault tolerant NFS server system and mirroring protocol
US5628005A (en) 1995-06-07 1997-05-06 Microsoft Corporation System and method for providing opportunistic file access in a network environment
US5826027A (en) 1995-10-11 1998-10-20 Citrix Systems, Inc. Method for supporting an extensible and dynamically bindable protocol stack in a distrubited process system
US5764887A (en) 1995-12-11 1998-06-09 International Business Machines Corporation System and method for supporting distributed computing mechanisms in a local area network server environment
US6343313B1 (en) 1996-03-26 2002-01-29 Pixion, Inc. Computer conferencing system with real-time multipoint, multi-speed, multi-stream scalability
WO1997037461A1 (en) 1996-04-01 1997-10-09 Hewlett-Packard Company Transmitting messages over a network
RU2118051C1 (ru) * 1996-04-30 1998-08-20 Лихачев Александр Геннадьевич Способ доступа к ресурсам "всемирной паутины" через шлюзы-представители
US6434120B1 (en) 1998-08-25 2002-08-13 Cisco Technology, Inc. Autosensing LMI protocols in frame relay networks
US5933602A (en) 1996-07-31 1999-08-03 Novell, Inc. System for selecting command packet and corresponding response packet from communication stream of packets by monitoring packets sent between nodes on network
US6208952B1 (en) 1996-10-24 2001-03-27 Microsoft Corporation Method and system for delayed registration of protocols
US6125122A (en) 1997-01-21 2000-09-26 At&T Wireless Svcs. Inc. Dynamic protocol negotiation system
US5931913A (en) 1997-05-07 1999-08-03 International Business Machines Corporation Methods, system and computer program products for establishing a session between a host and a terminal using a reduced protocol
US6219799B1 (en) 1997-07-01 2001-04-17 Unisys Corporation Technique to support pseudo-names
US6092199A (en) 1997-07-07 2000-07-18 International Business Machines Corporation Dynamic creation of a user account in a client following authentication from a non-native server domain
US6275953B1 (en) 1997-09-26 2001-08-14 Emc Corporation Recovery from failure of a data processor in a network server
US6247139B1 (en) * 1997-11-11 2001-06-12 Compaq Computer Corp. Filesystem failover in a single system image environment
US6131125A (en) 1997-11-14 2000-10-10 Kawasaki Lsi U.S.A., Inc. Plug-and-play data cable with protocol translation
US6085247A (en) 1998-06-08 2000-07-04 Microsoft Corporation Server operating system for supporting multiple client-server sessions and dynamic reconnection of users to previous sessions using different computers
US6516351B2 (en) 1997-12-05 2003-02-04 Network Appliance, Inc. Enforcing uniform file-locking for diverse file-locking protocols
US7010532B1 (en) 1997-12-31 2006-03-07 International Business Machines Corporation Low overhead methods and apparatus for shared access storage devices
US6243862B1 (en) 1998-01-23 2001-06-05 Unisys Corporation Methods and apparatus for testing components of a distributed transaction processing system
US6317844B1 (en) * 1998-03-10 2001-11-13 Network Appliance, Inc. File server storage arrangement
US6401123B1 (en) 1998-11-24 2002-06-04 International Busines Machines Corporation Systems, methods and computer program products for employing presumptive negotiation in a data communications protocol
US6883000B1 (en) 1999-02-12 2005-04-19 Robert L. Gropper Business card and contact management system
US6324581B1 (en) 1999-03-03 2001-11-27 Emc Corporation File server system using file system storage, data movers, and an exchange of meta data among data movers for file locking and direct access to shared file systems
US6453354B1 (en) 1999-03-03 2002-09-17 Emc Corporation File server system using connection-oriented protocol and sharing data sets among data movers
US20040139004A1 (en) 1999-04-08 2004-07-15 Aceinc Pty Ltd. Secure online commerce transactions
US6938096B1 (en) 1999-04-12 2005-08-30 Softricity, Inc. Method and system for remote networking using port proxying by detecting if the designated port on a client computer is blocked, then encapsulating the communications in a different format and redirecting to an open port
US7562129B1 (en) 1999-04-15 2009-07-14 Alcatel-Lucent Canada Inc. Subscription management system for data communication network
US6349350B1 (en) 1999-05-04 2002-02-19 International Business Machines Corporation System, method, and program for handling failed connections in an input/output (I/O) system
WO2000068856A2 (en) 1999-05-11 2000-11-16 Webvan Group, Inc. Electronic commerce enabled delivery system and method
US7318102B1 (en) 1999-05-24 2008-01-08 Hewlett-Packard Development Company, L.P. Reliable datagram
US6430691B1 (en) 1999-06-21 2002-08-06 Copytele, Inc. Stand-alone telecommunications security device
US6490666B1 (en) 1999-08-20 2002-12-03 Microsoft Corporation Buffering data in a hierarchical data storage environment
US6636242B2 (en) 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
JP2001094613A (ja) 1999-09-21 2001-04-06 Canon Inc 通信制御装置、方法および記録媒体
US6775707B1 (en) 1999-10-15 2004-08-10 Fisher-Rosemount Systems, Inc. Deferred acknowledgment communications and alarm management
US6910082B1 (en) 1999-11-18 2005-06-21 International Business Machines Corporation Method, system and program products for reducing data movement within a computing environment by bypassing copying data between file system and non-file system buffers in a server
US6658476B1 (en) 1999-11-29 2003-12-02 Microsoft Corporation Client-server protocol support list for standard request-response protocols
US7111060B2 (en) 2000-03-14 2006-09-19 Aep Networks, Inc. Apparatus and accompanying methods for providing, through a centralized server site, a secure, cost-effective, web-enabled, integrated virtual office environment remotely accessible through a network-connected web browser
US6883015B1 (en) 2000-03-30 2005-04-19 Cisco Technology, Inc. Apparatus and method for providing server state and attribute management for multiple-threaded voice enabled web applications
US6993587B1 (en) 2000-04-07 2006-01-31 Network Appliance Inc. Method and apparatus for election of group leaders in a distributed network
WO2001077844A1 (fr) * 2000-04-10 2001-10-18 Fujitsu Limited Systeme de traitement d'informations et serveur associe
US7225244B2 (en) 2000-05-20 2007-05-29 Ciena Corporation Common command interface
US6452903B1 (en) 2000-05-31 2002-09-17 Fujitsu Network Communications, Inc. Network switch supporting rate-based and credit-based flow control mechanisms on a link-by-link basis
US6961858B2 (en) 2000-06-16 2005-11-01 Entriq, Inc. Method and system to secure content for distribution via a network
US7693976B2 (en) 2000-07-11 2010-04-06 Ciena Corporation Granular management of network resources
US6349250B1 (en) 2000-10-26 2002-02-19 Detroit Diesel Corporation Clear historic data from a vehicle data recorder
JP2002183000A (ja) 2000-12-11 2002-06-28 Hitachi Ltd ネットワークを介するデータ参照方法及びそのシステム
US20020073211A1 (en) 2000-12-12 2002-06-13 Raymond Lin System and method for securely communicating between application servers and webservers
KR100750735B1 (ko) 2001-02-03 2007-08-22 삼성전자주식회사 홈네트워크내의 기기 제어장치 및 방법 및 이를 적용한홈네트워크 시스템
US7055036B2 (en) 2001-04-06 2006-05-30 Mcafee, Inc. System and method to verify trusted status of peer in a peer-to-peer network environment
US8051212B2 (en) 2001-04-11 2011-11-01 Mellanox Technologies Ltd. Network interface adapter with shared data send resources
US20030093678A1 (en) 2001-04-23 2003-05-15 Bowe John J. Server-side digital signature system
JP2002328828A (ja) 2001-04-27 2002-11-15 Fujitsu Ltd ストレージサービス方法、ストレージサービスユーザ及びストレージサービスプロバイダ
JP3797236B2 (ja) 2001-04-27 2006-07-12 日本ビクター株式会社 記録再生装置および記録再生方法
US6640226B1 (en) 2001-06-19 2003-10-28 Informatica Corporation Ranking query optimization in analytic applications
US7409420B2 (en) 2001-07-16 2008-08-05 Bea Systems, Inc. Method and apparatus for session replication and failover
US6944785B2 (en) 2001-07-23 2005-09-13 Network Appliance, Inc. High-availability cluster virtual server system
JP2003069610A (ja) 2001-08-22 2003-03-07 Canon Inc 通信装置、その制御方法、通信システム、及び制御プログラム
JP3663627B2 (ja) 2001-10-18 2005-06-22 ソニー株式会社 通信処理装置、および通信処理方法、並びにコンピュータ・プログラム
US7136982B2 (en) 2001-11-09 2006-11-14 Danger, Inc. Apparatus and method for allocating memory blocks
WO2003049384A1 (en) 2001-12-07 2003-06-12 Research In Motion Limited System and method of managing information distribution to mobile stations
US7394764B2 (en) 2001-12-14 2008-07-01 Sasken Communication Technologies Limited Technique for improving transmission control protocol performance in lossy networks
US7313816B2 (en) 2001-12-17 2007-12-25 One Touch Systems, Inc. Method and system for authenticating a user in a web-based environment
US7111035B2 (en) 2001-12-26 2006-09-19 Hewlett-Packard Development Company, L.P. Fault tolerance associations for IP transport protocols
US20030140129A1 (en) 2002-01-24 2003-07-24 Noam Livnat Installing communication protocol in a handheld device
US20030154398A1 (en) * 2002-02-08 2003-08-14 Eaton Eric Thomas System for providing continuity between session clients and method therefor
US6829606B2 (en) 2002-02-14 2004-12-07 Infoglide Software Corporation Similarity search engine for use with relational databases
US7178050B2 (en) 2002-02-22 2007-02-13 Bea Systems, Inc. System for highly available transaction recovery for transaction processing systems
US7984157B2 (en) 2002-02-26 2011-07-19 Citrix Systems, Inc. Persistent and reliable session securely traversing network components using an encapsulating protocol
US7388866B2 (en) 2002-03-07 2008-06-17 Broadcom Corporation System and method for expediting upper layer protocol (ULP) connection negotiations
US7668306B2 (en) 2002-03-08 2010-02-23 Intel Corporation Method and apparatus for connecting packet telephony calls between secure and non-secure networks
JP2003281091A (ja) 2002-03-25 2003-10-03 Fujitsu Ltd 同時受付制御システム
JP4315696B2 (ja) 2002-03-29 2009-08-19 富士通株式会社 ホスト端末エミュレーションプログラム、中継用プログラムおよびホスト端末エミュレーション方法
JP4000905B2 (ja) 2002-05-22 2007-10-31 ソニー株式会社 情報処理システムおよび方法、情報処理装置および方法、記録媒体、並びにプログラム
EP1512261A1 (en) 2002-06-10 2005-03-09 Caplin Systems Limited Resource management
US20040003210A1 (en) 2002-06-27 2004-01-01 International Business Machines Corporation Method, system, and computer program product to generate test instruction streams while guaranteeing loop termination
US7290141B2 (en) 2002-06-27 2007-10-30 Nokia, Inc. Authentication of remotely originating network messages
CN1666188A (zh) * 2002-07-01 2005-09-07 株式会社东芝 无缝系统和记录介质以及计算机系统的处理继续方法
CA2393502A1 (en) 2002-07-15 2004-01-15 Mark J. Frazer System and method for reliable transport in a computer network
US20040019660A1 (en) * 2002-07-24 2004-01-29 Sandhya E. Lock holding multi-threaded processes for distibuted data systems
US6829473B2 (en) 2002-07-25 2004-12-07 Utstarcom, Inc. Roaming and hand-off support for prepaid billing for wireless data networks
US6928577B2 (en) 2002-07-29 2005-08-09 Eternal Systems, Inc. Consistent message ordering for semi-active and passive replication
US7386855B2 (en) * 2002-08-12 2008-06-10 Ntt Docomo, Inc. Application mobility service
US20040032876A1 (en) 2002-08-19 2004-02-19 Ajay Garg Selection of transmission channels
JP3846384B2 (ja) 2002-08-28 2006-11-15 ブラザー工業株式会社 端末装置、接続制御方法、接続制御用プログラム及び記録媒体
US6957367B2 (en) 2002-08-30 2005-10-18 Hewlett-Packard Development Company L.P. System and method for controlling activity of temporary files in a computer system
US7109430B2 (en) 2002-11-05 2006-09-19 Emrise Corporation Low profile rotary switch with detent in the bushing
US7386889B2 (en) 2002-11-18 2008-06-10 Trusted Network Technologies, Inc. System and method for intrusion prevention in a communications network
US7421502B2 (en) 2002-12-06 2008-09-02 International Business Machines Corporation Method and system for storage-aware flow resource management
US20040153700A1 (en) * 2003-01-02 2004-08-05 Nixon Mark J. Redundant application stations for process control systems
US7290051B2 (en) 2003-01-09 2007-10-30 Sun Microsystems, Inc. Method and apparatus for hardware implementation independent verification of network layers
JP3999135B2 (ja) 2003-01-24 2007-10-31 株式会社エヌ・ティ・ティ・ドコモ 通信システム、データ送信方法、通信装置、プログラムおよび記録媒体
US7519834B1 (en) * 2003-01-24 2009-04-14 Nortel Networks Limited Scalable method and apparatus for transforming packets to enable secure communication between two stations
US7151939B2 (en) 2003-02-18 2006-12-19 Qualcomm Incorporated Method, apparatus, and machine-readable medium for providing indication of location service availability and the quality of available location services
US7072807B2 (en) 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7490152B2 (en) 2003-04-11 2009-02-10 Alcatel-Lucent Usa Inc. Version caching mechanism
US7339885B2 (en) 2003-06-05 2008-03-04 International Business Machines Corporation Method and apparatus for customizable surveillance of network interfaces
US7363629B2 (en) 2003-06-19 2008-04-22 International Business Machines Corporation Method, system, and program for remote resource management
US7526640B2 (en) 2003-06-30 2009-04-28 Microsoft Corporation System and method for automatic negotiation of a security protocol
US7698115B2 (en) 2003-06-30 2010-04-13 Microsoft Corporation System and method for dynamically allocating resources in a client/server environment
US20050015511A1 (en) 2003-07-02 2005-01-20 Nec Laboratories America, Inc. Accelerated large data distribution in overlay networks
JP4229774B2 (ja) * 2003-07-11 2009-02-25 日本電信電話株式会社 セッション制御プログラムと通信端末装置
US7296264B2 (en) 2003-07-18 2007-11-13 Bea Systems, Inc. System and method for performing code completion in an integrated development environment
TW200511029A (en) 2003-07-24 2005-03-16 Matsushita Electric Ind Co Ltd File management method and data processing device
US8028078B2 (en) 2003-08-07 2011-09-27 Teamon Systems, Inc. Communications system including protocol interface device providing enhanced operating protocol selection features and related methods
CN100547583C (zh) 2003-08-14 2009-10-07 甲骨文国际公司 数据库的自动和动态提供的方法
US7870268B2 (en) 2003-09-15 2011-01-11 Intel Corporation Method, system, and program for managing data transmission through a network
US20050091226A1 (en) 2003-10-23 2005-04-28 Yun Lin Persistent caching directory level support
US7673066B2 (en) 2003-11-07 2010-03-02 Sony Corporation File transfer protocol for mobile computer
JP4836432B2 (ja) 2003-11-17 2011-12-14 株式会社リコー 文書管理システム、文書管理装置、文書管理方法、文書管理プログラム及び記録媒体
US7188273B2 (en) * 2003-11-24 2007-03-06 Tsx Inc. System and method for failover
US20050111030A1 (en) 2003-11-25 2005-05-26 Berkema Alan C. Hard copy imaging systems, print server systems, and print server connectivity methods
FI20031779A0 (fi) 2003-12-05 2003-12-05 Nokia Corp Menetelmä, järjestelmä ja lähetettävän puolen yhteyskäytäntöyksikkö datapakettien lähettämiseksi kuittaamattoman toimintamuodon palveluissa
US7383483B2 (en) 2003-12-11 2008-06-03 International Business Machines Corporation Data transfer error checking
US7243284B2 (en) 2003-12-11 2007-07-10 International Business Machines Corporation Limiting number of retransmission attempts for data transfer via network interface controller
US7177941B2 (en) 2003-12-11 2007-02-13 International Business Machines Corporation Increasing TCP re-transmission process speed
US20050177635A1 (en) 2003-12-18 2005-08-11 Roland Schmidt System and method for allocating server resources
US7698361B2 (en) 2003-12-31 2010-04-13 Microsoft Corporation Lightweight input/output protocol
US7383463B2 (en) 2004-02-04 2008-06-03 Emc Corporation Internet protocol based disaster recovery of a server
CN1934639A (zh) 2004-03-17 2007-03-21 皇家飞利浦电子股份有限公司 用于扫描盘形信息存储介质的方法和装置
US7444536B1 (en) 2004-04-16 2008-10-28 Sun Microsystems, Inc. RMI-IIOP request failover mechanism
US20050246803A1 (en) 2004-04-30 2005-11-03 Spencer Andrew M Peripheral device for processing data from a computing device
US7627627B2 (en) 2004-04-30 2009-12-01 Hewlett-Packard Development Company, L.P. Controlling command message flow in a network
JP2005321953A (ja) 2004-05-07 2005-11-17 Hitachi Ltd ストレージ制御装置、その動作プログラム、及びアクセス制御方法
JP2005322016A (ja) 2004-05-10 2005-11-17 Yokogawa Electric Corp サーバ装置および情報配信方法
US7380080B2 (en) 2004-05-17 2008-05-27 Hewlett-Packard Development Company, L.P. Calculating unneeded data storage credits for a data transmission to a pair of storage devices
US7330910B2 (en) 2004-05-20 2008-02-12 International Business Machines Corporation Fencing of resources allocated to non-cooperative client computers
US7434087B1 (en) 2004-05-21 2008-10-07 Sun Microsystems, Inc. Graceful failover using augmented stubs
US7080173B2 (en) 2004-05-27 2006-07-18 Microsoft Corporation Reducing information reception delays
US20060059118A1 (en) * 2004-08-10 2006-03-16 Byrd Stephen A Apparatus, system, and method for associating resources using a behavior based algorithm
US8023417B2 (en) 2004-08-30 2011-09-20 International Business Machines Corporation Failover mechanisms in RDMA operations
US7418709B2 (en) 2004-08-31 2008-08-26 Microsoft Corporation URL namespace to support multiple-protocol processing within worker processes
US7418712B2 (en) 2004-08-31 2008-08-26 Microsoft Corporation Method and system to support multiple-protocol processing within worker processes
US7451347B2 (en) 2004-10-08 2008-11-11 Microsoft Corporation Failover scopes for nodes of a computer cluster
US8156049B2 (en) 2004-11-04 2012-04-10 International Business Machines Corporation Universal DRM support for devices
US7457722B1 (en) 2004-11-17 2008-11-25 Symantec Operating Corporation Correlation of application instance life cycle events in performance monitoring
US8522293B2 (en) 2004-12-15 2013-08-27 Time Warner Cable Enterprises Llc Method and apparatus for high bandwidth data transmission in content-based networks
US8515490B2 (en) * 2004-12-30 2013-08-20 Alcatel Lucent Method and apparatus for providing same session switchover between end-user terminals
CN101116306A (zh) 2005-02-08 2008-01-30 艾利森电话股份有限公司 在分组交换网络上的按需多频道流会话
US7743245B2 (en) 2005-03-10 2010-06-22 Intel Corporation Security protocols on incompatible transports
US7453879B1 (en) 2005-04-04 2008-11-18 Sun Microsystems, Inc. Method and apparatus for determining the landing zone of a TCP packet
US20060281525A1 (en) 2005-05-17 2006-12-14 Milo Borissov Slot type game with player input opportunity
EP1727055B1 (en) 2005-05-25 2016-09-07 Microsoft Technology Licensing, LLC Data communication coordination with sequence numbers
EP1727056B1 (en) 2005-05-25 2008-11-05 Microsoft Corporation Data communication protocol
US8316129B2 (en) 2005-05-25 2012-11-20 Microsoft Corporation Data communication coordination with sequence numbers
RU2313824C2 (ru) * 2005-09-26 2007-12-27 Михаил Васильевич Беляев Информационная система клиент - сервер и способ предоставления графического пользовательского интерфейса
US8108548B2 (en) 2005-12-22 2012-01-31 Microsoft Corporation Methodology and system for file replication based on a peergroup
US8051179B2 (en) 2006-02-01 2011-11-01 Oracle America, Inc. Distributed session failover
US8024439B2 (en) 2006-03-17 2011-09-20 Microsoft Corporation Server session management application program interface and schema
US7526668B2 (en) 2006-06-08 2009-04-28 Hitachi, Ltd. Failover method of remotely-mirrored clustered file servers
US20090077097A1 (en) 2007-04-16 2009-03-19 Attune Systems, Inc. File Aggregation in a Switched File System
WO2009043037A2 (en) 2007-09-28 2009-04-02 Xcerion Aktiebolag Network operating system
EP2066101B1 (en) 2007-11-28 2012-10-17 Alcatel Lucent System and method for an improved high availability component implementation
US8458298B2 (en) 2008-03-03 2013-06-04 Microsoft Corporation Failover in an internet location coordinate enhanced domain name system
JP4549408B2 (ja) 2008-06-24 2010-09-22 富士通株式会社 ファイルサーバのクラスタノード制御プログラム,クラスタノード制御方法及びクラスタノード制御装置
US7840730B2 (en) 2008-06-27 2010-11-23 Microsoft Corporation Cluster shared volumes
US8700760B2 (en) 2008-08-18 2014-04-15 Ge Fanuc Intelligent Platforms, Inc. Method and systems for redundant server automatic failover
US8275815B2 (en) 2008-08-25 2012-09-25 International Business Machines Corporation Transactional processing for clustered file systems
US8185566B2 (en) 2009-01-15 2012-05-22 Microsoft Corporation Client-based caching of remote files
US9749387B2 (en) 2009-08-13 2017-08-29 Sap Se Transparently stateful execution of stateless applications
US8631277B2 (en) 2010-12-10 2014-01-14 Microsoft Corporation Providing transparent failover in a file system
US9331955B2 (en) 2011-06-29 2016-05-03 Microsoft Technology Licensing, Llc Transporting operations of arbitrary size over remote direct memory access
US8856582B2 (en) 2011-06-30 2014-10-07 Microsoft Corporation Transparent failover
US20130067095A1 (en) 2011-09-09 2013-03-14 Microsoft Corporation Smb2 scaleout

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050223014A1 (en) * 2002-12-06 2005-10-06 Cisco Technology, Inc. CIFS for scalable NAS architecture
US7664991B1 (en) * 2002-12-17 2010-02-16 Symantec Operating Corporation System and method for distributed file system I/O recovery
US20050091212A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Method and system for accessing a file
EP1643406A2 (en) * 2004-09-30 2006-04-05 Microsoft Corporation Registration identifier reuse

Also Published As

Publication number Publication date
MX336341B (es) 2016-01-14
AU2012304549B2 (en) 2017-04-06
CN102932164A (zh) 2013-02-13
CL2014000539A1 (es) 2014-10-03
WO2013036697A2 (en) 2013-03-14
ES2626655T3 (es) 2017-07-25
RU2595755C2 (ru) 2016-08-27
WO2013036697A3 (en) 2013-05-02
EP2754059B1 (en) 2017-03-15
NZ622122A (en) 2015-01-30
CN102932164B (zh) 2016-12-21
EP2754059A4 (en) 2015-03-18
MX2014002783A (es) 2014-06-05
IN2014CN01748A (ko) 2015-05-29
US8788579B2 (en) 2014-07-22
ZA201401381B (en) 2015-07-29
JP2014529141A (ja) 2014-10-30
CA2847597A1 (en) 2013-03-14
IL231373A (en) 2017-03-30
SG11201400442SA (en) 2014-04-28
AU2012304549A1 (en) 2014-03-20
IL231373A0 (en) 2014-04-30
RU2014108995A (ru) 2015-09-20
KR101941728B1 (ko) 2019-04-12
BR112014005191A2 (pt) 2017-03-21
CO6900122A2 (es) 2014-03-20
JP6210987B2 (ja) 2017-10-11
US20130066941A1 (en) 2013-03-14
EP2754059A2 (en) 2014-07-16

Similar Documents

Publication Publication Date Title
KR101941728B1 (ko) 클러스터화된 클라이언트 장애 해결 기법
US9218299B2 (en) Recovering data segment contents in a distributed shared memory
US9313274B2 (en) Isolating clients of distributed storage systems
US8352658B2 (en) Fabric based lock manager service
US11882011B2 (en) Distributed workload reassignment following communication failure
WO2015074512A1 (zh) 一种访问物理资源的方法和装置
US8930894B2 (en) Method and system for executing an executable file
US10270759B1 (en) Fine grained container security
US7849055B2 (en) Method and system for limiting instances of a client-server program within a restricted distributed network
NZ622122B2 (en) Clustered client failover

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant