KR101120844B1 - 동적 피어-투-피어 환경에서의 상호 배제 기술 - Google Patents
동적 피어-투-피어 환경에서의 상호 배제 기술 Download PDFInfo
- Publication number
- KR101120844B1 KR101120844B1 KR1020050016148A KR20050016148A KR101120844B1 KR 101120844 B1 KR101120844 B1 KR 101120844B1 KR 1020050016148 A KR1020050016148 A KR 1020050016148A KR 20050016148 A KR20050016148 A KR 20050016148A KR 101120844 B1 KR101120844 B1 KR 101120844B1
- Authority
- KR
- South Korea
- Prior art keywords
- logical
- client
- clients
- replicator
- request
- Prior art date
Links
Images
Classifications
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F24—HEATING; RANGES; VENTILATING
- F24F—AIR-CONDITIONING; AIR-HUMIDIFICATION; VENTILATION; USE OF AIR CURRENTS FOR SCREENING
- F24F13/00—Details common to, or for air-conditioning, air-humidification, ventilation or use of air currents for screening
- F24F13/02—Ducting arrangements
- F24F13/029—Duct comprising an opening for inspection, e.g. manhole
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1061—Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
- H04L67/1065—Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT]
-
- 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Combustion & Propulsion (AREA)
- Mechanical Engineering (AREA)
- Chemical & Material Sciences (AREA)
- Computer And Data Communications (AREA)
- Hardware Redundancy (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
동적 피어-투-피어 환경에 사용하기 위한 상호 배제 기술들을 설명한다. 일 구현의 방법은, 복수개 논리 레플리커들 각각에서, 클라이언트로부터의 요청을 수신하는 단계를 포함한다. 논리 레플리커들 각각은 큐를 포함하며 클라이언트들 중 하나와의 배타적 관련을 위한 것이다. 요청은 복수개 리소스들 중 하나에 액세스하기 위한 것이다. 논리 레플리커들 중 하나가 클라이언트들 중 다른 하나와 배타적으로 관련될 때, 요청은 소정 논리 레플리커의 큐에 저장된다.
동적 피어-투-피어 환경, 레플리커, 클라이언트, 큐, 상호 배제, 배타적 관련
Description
도 1은 피어-투-피어 네트워크를 제공하도록 구성된 환경을 나타내는 예시적 구현의 도면.
도 2는 도 1의 클라이언트 및 레플리커에 대한 아키텍처를 보다 상세히 나타내는 시스템의 예시적 구현에 대한 도면.
도 3은 도 1의 클라이언트가 피어-투-피어 네트워크의 복수개 피어들 중 하나 이상에 의해 제공되는 리소스로의 액세스를 요청하는 예시적 구현에서의 절차를 도시하는 흐름도.
도 4는, 클라이언트가, 복수개 리소스들 중 특정한 하나에 대한 이용이 허용되는지의 여부를 판정하는 예시적 구현에서의 절차를 도시하는 흐름도.
도 5는 도 4의 항복 연산의 실행을 나타내는 예시적 구현에서의 절차를 도시하는 흐름도.
도 6은 도 2의 클라이언트 및 레플리커에 의해 도 4 및 도 5에 관해 설명한 바를 실행하기 위한 상호 배제 프로토콜의 구현 아키텍처를 도시하는 블록도.
도 7은 예시적 컴퓨팅 장치의 도면.
<도면의 주요 부분에 대한 부호의 설명>
100 : 동적 피어-투-피어 환경
102 : 클라이언트
104 : 컴퓨팅 장치
106 : 네트워크
108 : DHT
110 : 버킷
112 : 논리 레플리커
관련 출원들
본 출원은 2004년 2월 25일에 출원된 미국 가출원 제 60/547,457호에 대해 35 U.S.C. §119(e)에 따른 우선권을 주장한다.
기술 분야
본 발명은 일반적으로 피어-투-피어 네트워크에 관한 것으로서, 보다 구체적으로는, 동적 피어-투-피어 환경에서의 상호 배제 기술들에 관한 것이다.
배경
근래에는, 피어-투-피어 네트워크에 학계 및 업계의 관심이 집중되어 왔다. 피어-투-피어 네트워크는, 적응성, 자기-조직화, 부하-균형, 장애-허용성, 저비용, 고가용성, 확장성(scalability)과 같은, 바람직한 많은 특징들을 제공하며, 리소스 들의 거대한 풀(a large pool of resources)을 제공하도록 구성될 수 있다. 피어-투-피어 네트워크는, 피어-투-피어 웹사이트를 통한 다운로드에 이용될 수 있는 노래들을 다운로드하는 피어들에 의한 것과 같이, 대량의 데이터를 공유하기 위한 대중적인 방법으로서 출현하였다.
다수 클라이언트들에 의한 사용을 위해 리소스들을 제공할 경우, "충돌(collision)"이라고 할 수 있는, 2 이상의 클라이언트들이 특정 리소스에 액세스하고자 하는 상항에 직면할 수 있다. 상호 배제 기술들은, 특정 리소스에 액세스하고자 하는 상이한 클라이언트들이 충돌하지 않게 하여 원치 않는 상호작용들을 발생시키지 않도록 리소스들을 공유하게 하는데 사용될 수 있는 기술들을 의미한다. 상호 배제 기술들을 사용함으로써, 클라이언트들은, 채용된 소정의 상호 배제 기술에 의해 특정되는 바와 같은, 리소스에 액세스하기 위한 "권리들"을 획득할 수 있다.
상호 배제 기술의 일례는 세마포어(semaphores)의 사용과 관련이 있다. 세마포어는, 각각의 클라이언트가 점검한 다음 변경할 수 있는 값이다. 발견된 값에 따라, 클라이언트는 리소스를 사용할 수 있거나 리소스가 이미 사용 중이므로 다시 시도해야 한다는 것을 알게 될 것이다. 통상적으로, 세마포어를 사용하는 클라이언트는 값을 점검한 다음, 리소스를 사용 중인 클라이언트가 없다면, 리소스가 클라이언트에 의해 사용 중이라는 것을 반영하기 위해 값을 변경하므로 후속 클라이언트들은 소정 리소스가 사용 중이라는 것을 "알게" 될 것이다. 따라서, 세마포어는, 소정 파일에 대한 액세스를 공유하는 것과 같이, 다수 클라이언트들이 동일한 리소스를 위해 경쟁하는 활동들을 조정하고 동기화하는 기술을 제공한다.
그러나, 이전의 상호 배제 기술들에서는, 소정 리소스를 사용하고자 했던 클라이언트들간의 충돌에 의해 발생된 문제들이 클라이언트들의 "탐욕스러운(greedy)" 거동에 의해 격화되었다. 예를 들어, 복수개 클라이언트들이 리소스에 접근하고자 할 수 있지만, 상호 배제 기술의 사용을 통해 하나의 클라이언트만이 리소스에 액세스할 수 있는 권한을 "획득(winning)"할 수 있다. 그러나, 리소스에 액세스할 수 있는 권한을 획득하지 못했던 "놓친(losing)" 클라이언트는, 계속적으로 요청들을 재송신하는 것에 의해 권한 획득을 재시도했다. 요청들의 반복되는 재송신은 리소스를 제공하는 피어 및 리소스로의 액세스를 획득하고자 시도하는 클라이언트의 하드웨어 및 소프트웨어 리소스들을 소모시켰다. 또한, 반복된 재송신은 클라이언트와 피어간의 네트워크 대역도 소모시킨다. 이러한 문제점은 리소스로의 액세스를 소망하는 클라이언트들의 수가 증가함에 따라 더욱더 격화되어, 아주 심각한 비효율성을 초래하게 된다.
또한, 피어-투-피어 네트워크의 복수개 클라이언트들과 복수개 피어들간의 통신은 서로 상이한 통신 지연들에 직면할 수 있다. 예를 들어, 소정 리소스에 액세스하려는 복수개 클라이언트들로부터 수신된 요청들은 클라이언트들과 피어들간의 통신 지연 변동들로 인해 상이한 시간에 상이한 피어들에 도달할 수 있다.
따라서, 동적 피어-투-피어 환경에 사용하기 위한 상호 배제 기술들이 여전히 필요하다.
동적 피어-투-피어 환경에 사용하기 위한 상호 배제 기술들을 설명한다. 일례에서, 상호 배제 기술은 큐들을 이용해 클라이언트들과 피어들간의 통신 지연 변동들에 대처한다. 큐들은 피어들에 의해, 피어들이, 요청들이 수신된 때에 관한 일관된 뷰를 획득함으로써, 큐들에 기초해 리소스들에 대한 액세스를 제공할 수 있도록, 요청들을 저장하는데 이용될 수 있다. 다른 일례에서, 큐들의 사용은, 클라이언트들이 리소스에 액세스하기 위한 요청들의 계속적인 재송신을 시도하지 않도록 요청들을 큐들에 저장하는 것에 의해, 클라이언트들의 "탐욕스러운" 동작을 감소시킨다.
일 구현 방법은, 복수개 논리 레플리커들(logical replicas) 각각에서, 클라이언트로부터 요청을 수신하는 단계를 포함한다. 논리 레플리커들 각각은 큐를 포함하며 클라이언트들 중 하나와의 배타적 관련을 위한 것이다. 요청은 복수개 리소스들 중 하나에 액세스하기 위한 것이다. 논리 레플리커들 중 특정한 하나가 클라이언트들 중 다른 하나와 배타적으로 관련될 때, 요청은 특정한 논리 레플리커의 큐에 저장된다.
추가적 구현 방법은, 클라이언트에 의해 복수개 논리 레플리커들로 통신하기 위한 요청을 형성하는 단계를 포함한다. 요청은 복수개 리소스들 중 하나를 위한 것이다. 클라이언트는 복수개 논리 레플리커들로부터 복수개 응답들을 수신하고 클라이언트가 하나의 리소스를 이용하도록 허용되는지의 여부를 판정한다. 다른 클라이언트가 하나의 리소스를 이용하도록 허용되었을 때, 클라이언트는 또 하나의 요청을 송신하지 않으면서 또 하나의 복수개 응답들을 대기한다.
또 하나의 구현 방법은, 복수개 클라이언트들 각각에서, 복수개 논리 레플리커들로 통신하기 위한, 복수개 리소스들 중 하나에 대한 요청을 형성하는 단계를 포함한다. 복수개 논리 레플리커들로부터의 복수개 응답들이 복수개 클라이언트들에서 수신된다. 클라이언트들 각각은, 복수개 응답들을 사용하여, 복수개 클라이언트들 중 하나가 하나의 리소스를 이용하도록 허용되는지의 여부를 판정한다. 복수개 클라이언트들 중 어느 것도 하나의 리소스를 이용하도록 허용되지 않았을 경우, 복수개 논리 레플리커들 중 하나 이상으로 통신하기 위한 항복 메시지가 하나 이상의 클라이언트들에 의해 형성된다. 항복 메시지는, 하나 이상의 논리 레플리커들 각각으로 하여금 하나 이상의 클라이언트들로부터 수신된 이전 요청들을 저장하고 있는 개개의 큐로부터 또 하나의 응답을 형성하게 하기 위한 것이다.
또 다른 구현에서, 피어-투-피어 네트워크는 정족수 컨센서스 프로토콜(quorum consensus protocol)을 사용해 리소스 액세스를 허용하는 논리 레플리커들을 포함한다.
또 다른 구현에서, 시스템은 네트워크, 복수개 클라이언트들, 및 네트워크에 통신 결합되어 있는 복수개 컴퓨팅 장치들을 포함한다. 복수개 컴퓨팅 장치들은 복수개 논리 레플리커들을 포함한다. 논리 레플리커들 각각은 임의의 특정 시간에 복수개 클라이언트들 중 하나와 배타적으로 관련되도록 구성된다. 또한, 논리 레플리커들 각각은, 논리 레플리커가 클라이언트들 중 다른 하나와 배타적으로 관련될 때 리소스에 액세스하기 위한 클라이언트들 중 하나로부터의 요청을 저장하는 큐를 포함한다.
유사한 컴포넌트들 및 사양들을 참조하기 위해, 명세서 및 도면들 전체에 걸쳐 동일한 번호들이 사용된다.
상세한 설명
개요
동적 피어-투-피어 환경에 사용하기 위한 상호 배제 기술들을 설명한다. 일례에서는, 상호 배제 기술이 큐들을 이용해 클라이언트들과 피어들간의 통신 지연 변동들에 대처한다. 상술한 바와 같이, 소정 리소스에 액세스하기 위한 복수개 클라이언트들로부터 수신된 요청들은 클라이언트들과 피어들간의 통신 지연 변동들로 인해 상이한 개개의 시간에 상이한 피어들에 도달할 수 있다. 따라서, 피어들은, 클라이언트들 각각이 이러한 액세스를 요청한 때와 같은, 리소스들에 대한 액세스를 요청하고 있는 클라이언트들에 대해 일관된 뷰를 갖지 못할 수도 있다. 큐들은 피어들에 의해, 피어들이, 요청들이 수신된 때에 대한 일관된 뷰를 획득함으로써, 큐들에 기초해 리소스들에 대한 액세스를 제공할 수 있도록, 요청들을 저장하는데 이용될 수 있다.
또한, 큐들은 클라이언트들의 "탐욕스러운" 동작을 감소시킨다. 예를 들어, 큐들은, 클라이언트들이 리소스에 액세스하기 위한 요청들의 계속적인 재송신을 시도하지 않도록, 클라이언트들로부터의 요청들을 저장하는데 이용될 수 있다. 따라서, 클라이언트들은 요청들에 대한 피어들로부터의 응답을 "능동적으로 대기"하고 있는 상태(state of "active wating")라고 볼 수 있다. 소정 시간 후에도 요청에 대한 응답이 수신되지 않으면, 클라이언트가 요청을 재송신할 수 있도록, 인폼드 백오프 메커니즘(informed backoff mechanism)이 채용될 수도 있다.
예시적 환경
도 1은 피어-투-피어 네트워크를 제공하도록 구성된 환경(100)을 나타내는 예시적 구현의 도면이다. 환경(100)은, 네트워크(106)를 통해 복수개 컴퓨팅 장치들(104(1)-104(B))에 통신 결합되어 있는 복수개 클라이언트들(102(a);"a"는 1에서 "A"까지의 임의 정수일 수 있다)을 포함한다. 이 구현에서, 복수개 클라이언트들(102(a)) 및 복수개 컴퓨팅 장치들(104(1)-104(B)) 각각은 네트워크(106)에서의 노드를 나타낸다. 노드는, 다른 노드들에 데이터를 제공하는 재분배점 및/또는 데이터의 수신지 및/또는 소스인 종단점과 같은, 데이터를 전송하기 위한 접속점으로 볼 수 있다.
복수개 클라이언트들(102(a)) 및 복수개 컴퓨팅 장치들(104(1)-104(B))은 다양한 방식으로 구성될 수 있다. 예를 들어, 복수개 클라이언트들(102(a)) 및 복수개 컴퓨팅 장치들(104(1)-104(B))은, 무선 전화기(예를 들어, 컴퓨팅 장치(104(1)), 태블릿 컴퓨터(예를 들어, 컴퓨팅 장치(104(2)), 노트북 컴퓨터(예를 들어, 컴퓨팅 장치(104(3)), 데스크탑 컴퓨터(예를 들어, 컴퓨팅 장치(104(4)), 서버들(예를 들어, 컴퓨팅 장치들(104(5) 및 104(6))), 메인프레임 컴퓨터(예를 들어, 컴퓨팅 장치(104(B)), 및, 이동국, 엔터테인먼트 어플라이언스, 셋톱 박스 등과 같은, 다른 컴퓨팅 장치들과 같이, 네트워크(106)를 통해 통신할 수 있는 컴퓨터들로서 구성될 수 있다. 예시적인 컴퓨팅 장치에 관한 추가적인 논의는 도 7과 관련하 여 찾아볼 수 있다. 따라서, 복수개 클라이언트들(102(a)) 및 복수개 컴퓨팅 장치들(104(1)-104(B))은 상당량의 메모리와 프로세서 리소스들을 가진 완전 리소스 장치들(full resource devices;예를 들어, 퍼스널 컴퓨터들, 하드 디스크가 장착된 텔레비젼 레코더들)로부터 한정된 메모리 및/또는 프로세싱 리소스들을 가진 로-리소스 장치들(low-resource devices;예를 들어, 기존의 셋톱 박스들)에까지 이를 수 있다. 클라이언트들(102(a))은 클라이언트를 조작하는 사람 및/또는 실체와도 관련될 수 있다. 다시 말해, 클라이언트(102(a))는 사용자 및/또는 머신을 포함하는 논리적 클라이언트를 묘사할 수 있다.
네트워크(106)는 피어-투-피어 네트워크로서 구성된다. 피어-투-피어 네트워크로 인해, 네트워크(106)의 노드들은 각각의 노드들, 즉, 복수개 클라이언트들(102(a)) 및 복수개 컴퓨팅 장치들(104(1)-104(B))상에 배치되어 있는 공유 리소스들에 액세스할 수 있다. 이미 공지되어 있으며 사용되고 있는 피어-투-피어 네트워크들의 예로는 다음과 같은 것을 들 수 있다.
ㆍ "Freenet: A Distributed Anonymous Information Storage and Retrieval System," Proc. Int. Workshop on Design Issues in Anonymity and Unobservability, Springer Verlag, LNCS 2009, 2001에서 I. Clarke, B. Wiley, O. Sanberg, 및 T. Hong에 의해 설명된 Freenet;
ㆍ "Chord A Scalable Peer-to-peer Lookup Service for Internet Applications," Proc. ACM SIGCOMM'01, San Diego, California, USA, 2001에서 I. Stoica, R. Morris, D. Karger, M. F. Kaashoek, 및 H. Balakrishnan에 의해 설명 된 Chord;
ㆍ "A Scalable Content-Addressable Network," Proc. ACM SIGCOMM'01, San Diego, California, USA, 2001에서 S. Ratnasamy, P. Francis, M. Handley, R. Karp 및 S. Shenker에 의해 설명된 CAN;
ㆍ "Pastry: Scalable, Decentralized Object Location and Routing for Large-Scale Peer-to-Peer Systems," IFIP/ACM Int. Conf. Distributed Systems Platforms(Middleware), 2001에서 A. Rowstron 및 P. Druschel에 의해 설명된 Pastry; 및
ㆍ "Tapestry: An Infrastructure for Fault-tolerant Wide-Area Location and Routing," Technical Report No. UCB/CSD-01-1141, Univ. of California, Berkeley에서 B. Y. Zhao, J. Kubiatowicz, 및 A. D. Joseph에 의해 설명된 Tapestry
피어-투-피어 네트워크들은, 중복성(redundancy) 및 장애 허용성과 같은, 다양한 특징들을 제공할 수 있다. 예를 들어, 피어-투-피어 네트워크에 저장되어 있는 데이터는 피어-투-피어 네트워크의 노드들에 의해 데이터가 복제됨에 따라 점진적으로 확산될 수 있다. 따라서, 데이터는 피어-투-피어 네트워크에서 상당히 중복적일 수 있으며, 이로 인해, 데이터의 신뢰성 및 가용성이 증가될 수 있다.
피어-투-피어 네트워크를 사용해, 데이터, 프로세싱 주기들, 저장 공간 등과 같은, 다양한 리소스들이 교환될 수 있다. 따라서, 피어-투-피어 네트워크는 복수개 클라이언트들(102(a)) 및 복수개 컴퓨팅 장치들(104(1)-104(B))의 전체적인 역 량을 강화시키는데 이용될 수 있다. 피어-투-피어는, 각각의 피어, 즉, "멤버"가 다른 멤버와 직접적으로 그리고/또는 매개하는 서버를 통해 통신할 수 있는 통신 모델이다.
네트워크(106)는, 클라언트들(102(a))과 복수개 컴퓨팅 장치들(104(1)-104(B)) 사이에서 메시지들을 라우팅하는 인터페이스로서 동작하는 DHT(distributed hash table;108)를 포함한다. DHT(108)는, (키, 값) 쌍들을 저장하는 해시 테이블 데이터 구조의 분산형 버전으로 볼 수 있다. 예를 들어, 키는 파일 이름에 대응될 수 있고 값은 파일의 내용에 대응될 수 있다. 네트워크(106)의 각 피어, 예를 들어, 컴퓨팅 장치들(104(1)-104(B))은 (키, 값) 쌍들의 서브세트를 저장한다. 따라서, DHT(108)는 대응 키를 책임지는 노드를 찾는데 이용된다. 다시 말해, DHT(108)는 키를, 클라언트들(102(a))과 복수개 컴퓨팅 장치들(104(1)-104(B)) 사이에서 메시지들을 라우팅하는 노드에 매핑한다. 파일 공유 서비스들, 아카이벌 저장 서비스들(예를 들어, 웹 아카이빙), 데이터베이스들, 명명 시스템들, 서비스 발견, 애플리케이션-계층 멀티캐스트, 이벤트 통지, 채팅 서비스들, 랑데뷰-기반 통신, 조회 및 인덱싱, 데이터 발행/정기 구독 등과 같은, 다양한 서비스들이 DHT(108)"상에(on-top)" 구축될 수 있다.
DHT(108)는 복수개 컴퓨팅 장치들(104(1)-104(B))에 의해 제공된 리소스들을 복수개 버킷들(110(1)-110(8))로 분할한다. 복수개 버킷들(110(1)-110(8)) 각각은 리소스들의 구역으로 볼 수 있다. 예를 들어, 상술한 바와 같이, DHT(108)는 리소스들을 키들과 관련짓는다. 키는 해시화되어, DHT(108)를 사용해 복수개 버킷들 (110(1)-110(8)) 중 특정한 하나를 찾아낸다. 복수개 버킷들(110(1)-110(8))은 다양한 방식으로 제공될 수 있다. 예를 들어, 버킷(110(1))은 컴퓨팅 장치(104(1))에 의해 제공되는 것으로 도 1에 도시되어 있다. 마찬가지로, 버킷들(110(2), 110(3), 110(4), 110(5), 110(6))은 각각 개개의 컴퓨팅 장치들(104(2), 104(3), 104(4), 104(5), 104(6))에 의해 제공된다. 또한, 컴퓨팅 장치는, 버킷들(110(7), 110(8))이 컴퓨팅 장치(104(B))에 의해 제공되는 것으로 도 1에 도시되어 있는 바와 같이, 하나 이상의 버킷을 제공할 수도 있다.
환경(100)은, DHT(108)를 이용하는 피어-투-피어 네트워크로서 구성될 경우, 참여 피어들로 채워진 가상 공간을 제공한다. 가상 공간은, 멤버쉽이 변화하는 과도기를 제외하면, "홀들"을 갖지 않도록 제공될 수 있다. 예를 들어, 하드웨어, 소프트웨어, 및/또는 네트워크 오류 등으로 인해, 컴퓨팅 장치(104(6))를 이용할 수 없다면, 컴퓨팅 장치(104(6))에 의해 제공되는 버킷(110(6))은 컴퓨팅 장치들 중 다른 것, 예를 들어, 컴퓨팅 장치(104(B))에 의해 제공될 수 있다. 이와 같이, 네트워크(106)는 동적이므로, 노드들은 네트워크를 단절시키지 않으면서 진출입할 수 있다.
DHT(108)는 홀들을 갖지 않는 복수개 컴퓨팅 장치들(104(1)-104(B))로부터 연합하여 논리적 공간을 형성하는데 사용될 수 있으므로, 한 세트의 논리 레플리커들(112(1)-112(4))이 구현될 수 있다. 예를 들어, 소정 리소스 R의 경우, R과 관련된 컴퓨팅 장치 CS(R)는 논리적일 수 있다. 예를 들어, 이름이 "/foo/bar:i"(i∈[1..n])인 n개의 레플리커들이 존재할 수 있다. 이 이름들은 키들을 유도하기 위해 해시화될 수 있고, 각 키의 호스팅 노드는 레플리커로서 동작할 수 있다. 명명과 실제 컴퓨팅 장치들의 분리로 인해, "항상" 이용 가능한 것으로 볼 수 있지만, 임의의 시점에서 메모리 손실로 어려움을 겪을 수 있는 "가상 컴퓨팅 장치"가 준비된다. 또한, 도 3 및 도 6에 관해 후술하는 바와 같이, 다수 레플리커들의 도입은, 클라이언트와 이들 레플리커들간의 지연들이 변동할 수 있으며, 그로 인해, 성능에 영향을 미칠 수 있다는 것을 암시한다.
이와 같이, 레플리커들(112(1)-112(4))은, 클라이언트(102(a))의 관점에서, 항상 이용 가능한 상태, 예를 들어, "온라인" 상태이다. 그러나, 상술한 바와 같이, 레플리커들(112(1)-112(4)) 중 하나는 때때로 완전 메모리 손실(complete memory loss)에 직면할 수 있다. 예를 들어, 레플리커들(112(1)-112(4)) 중 하나를 제공하는 컴퓨팅 장치들(104(1)-104(B)) 중 하나가 이용 불가능하여 컴퓨팅 장치들(104(1)-104(B)) 중 다른 것으로 교체될 때, 무작위 리셋(random reset)이 발생할 수 있다.
또한, 레플리커들(112(1)-112(4))은, 클라이언트들이 동일한 리소스에 액세스하고자 할 때 복수개 클라이언트들(102(a)) 중 2 이상간의 충돌들을 관리하기 위한 메커니즘도 제공할 수 있다. 예를 들어, 레플리커들(112(1)-112(4))은, 다음의 논의 부분에서 "임계 구역"이라고도 하고 수학식 및 도면에서는 "CS"라고도 하는, 동일한 리소스에 액세스하고자 하는 복수개 클라이언트들 중 하나에 액세스를 허용하는데 사용되는 정족수 컨센서스 프로토콜을 채용하는 상호 배제 기술을 이용할 수 있다. 레플리커들(112(1)-112(4))은, 클라이언트들(102(a))이 임계 리소스로의 액세스를 직렬화하는 것을 지원하는 프로세스들로 볼 수 있다. 레플리커들은, 환경(100) 전체에 공지될 수 있는 가상 명칭들에 의해 식별될 수 있다. 레플리커가 환경(100)을 떠난다면(예를 들어, 크래시한다면), "새로운" 레플리커가 예전의 레플리커를 대체하면서 동일한 가상 명칭을 상정할 것이다. 실제로, 이러한 가상 명칭들은 도메인 네임 서버, 피어-투-피어 시스템의 DHT(108) 등에 의해서 구현될 수 있다. 이러한 가상 명명 메커니즘들(virtual naming mechanisms)로 인해, 시스템의 레플리커 수는 시스템의 수명을 통해 고정될 수 있다. 도 3 내지 도 5와 관련하여 상호 배제 기술들의 실행에 대한 추가적인 논의를 찾아볼 수 있다.
이와 같이, 환경(100)은, 클라이언트(102(a))에 의해 "항상" 이용 가능한 것으로 보여질 수 있는 레플리커들(112(1)-112(4))을 제공할 수 있다. 그러나, 논리 레플리커들(112(1)-112(4))의 내부 상태는 무작위로 리셋될 수 있다. 또한, 환경(100)의 클라이언트(102(a)) 수는 예측 불가능할 수 있으며 아주 클 수도 있다.
클라이언트들(102(a)) 및 레플리커들(112(1)-112(4))은, 요청들 및 응답들과 같은, 메시지들을 사용하는 것에 의해 네트워크(106)를 통해 통신할 수 있는데, 이에 관한 추가적인 논의는 도 6과 관련하여 찾아볼 수 있다. 일 구현에서, 클라이언트들(102(a)) 및 레플리커들(112(1)-112(4))을 통신 결합하는 네트워크(106)는 신뢰성이 없을 수도 있는데, 다시 말해, 메시지들이 복제 및/또는 손실될 수 있다. 다음 논의의 맥락에서, 클라이언트들(102(a)) 및 레플리커들(112(1)-112(4)) 모두는 DHT(108)의 피어들이다. 그러나, 또 하나의 구현에서는, 레플리커들(112(1)-112(4))만이 DHT(108)의 피어들로 간주된다.
레플리커들(112(1)-112(4))은, 다양한 방식으로, 컴퓨팅 장치들(104(1)-104(B))에 의해 제공된 리소스들에 대한 액세스를 허용하는데 이용될 수 있다. 예를 들어, 레플리커들(112(1)-112(4)) 각각은 "의사 선착순 처리(pseudo first-come/first-served)"에 기초하여 소정 리소스에 액세스하기 위한 권한을 부여할 수 있다. 각각의 레플리커(112(1)-112(4))는, 예를 들어, 요청들이 레플리커들(112(1)-112(4))에 의해 클라이언트들(102(a))로부터 수신된 순서에 기초해, 소정 리소스에 액세스하기 위한 권한을 부여할 수 있다. 레플리커가 클라이언트에 권한(또는 투표권)을 부여할 경우, 후자를 전자의 소유자라 한다. 다시 말해, 레플리커는, 하나의 클라이언트에 의해 소유되어 있으면서, 다른 클라이언트에 의해 소유될 수 없도록, 하나의 클라이언트와 배타적으로 관련된다. 대다수 레플리커들의 소유권을 수집한 클라이언트가 상호 배제 프로토콜 실행의 승자가 될 것이므로 리소스에 액세스하도록 허용된다. 응답들의 사용을 통한 레플리커들의 소유권 및 투표권에 대한 추가적인 논의는 도 3 및 도 6과 관련하여 찾아볼 수 있다.
7개의 컴퓨팅 장치들(104(1)-104(B))이 도시되어 있지만, 광범위한 컴퓨팅 장치들이 본 환경에 구현될 수 있다. 또한, 복수개 클라이언트들(102(a))도 피어-투-피어 네트워크의 "피어들"로서 구성될 수 있다.
상호 배제
상호 배제는, 피어-투-피어 DHT를 채용하도록 구성된 네트워크 환경상에 총체적인 시스템들 및 애플리케이션들을 구현하기 위한 기본적 프리미티브들(fundamental primitives) 중 하나이다. 또한, 이러한 프리미티브는, 피어-투-피 어 DHT상에서 실행되는 애플리케이션들에 의해, 필요할 경우, 임의의 리소스들 중 하나 이상을 보호하는데 이용하기 위한 미완성 서비스를 제공할 수도 있다. 예를 들어, 상호 배제는 가변 분산형 파일 시스템에 동시성 제어 메커니즘을 제공할 수 있다. 노드들을 추가 및/또는 삭제하는 것과 같은, 도 1의 환경(100)에 대한 변화들을 지원하기 위해, 이러한 프리미티브들은 피어-투-피어 DHT 내부에 구현된다. 이와 같이, 상호 배제 프로토콜의 구현은 분산될 수 있다.
예를 들어, 도 1의 환경(100)과 같은, 피어-투-피어 환경의 개방적이고 동적인 특징으로 인해 여러 가지 어려움들이 발생한다. 예를 들어, 이전의 상호 배제 프로토콜들은 대개 고정된 그리고 비교적 적당한 수의 노드들을 가진 폐쇄적 시스템을 상정하였다. 이러한 이전 시스템의 노드들은, 컨센서스에 도달하기 위해, 서로 통신했다. 그러나, 클라이언트들의 수를 예측할 수 없으며 그리고/또는 다수의 클라이언트들이 포함되어 있는 상황에서는, 이러한 해결책이 이용될 수 없었다. 다음의 논의에서는, 지연 변동 및 경쟁을 우회하기 위한 협동적 전략(cooperative strategy)을 채용하여, 확장성 및 강건성을 실현하는 것에 의해, 클라이언트들과 레플리커들간의 네트워크 지연의 높은 변동에 대처하는 상호 배제 기술을 설명한다. 또한, 레플리커들의 무작위 리셋을 핸들링하기 위해, 레플리커의 상태를 지능적으로 재구축하는 인폼드 백오프 메커니즘을 설명한다.
예시적 프로토콜
소정 리소스를 위해 충돌하는 요청들을 해결하는데 이용될 수 있는 상호 배제 프로토콜이 설명된다. 예를 들어, 임계 구역(CS), 예를 들어, 소정 리소스를 이용하고자 하는 복수개 클라이언트들(102(a)) 중 2 이상이 레플리커들(112(1)-112(4)) 각각으로 요청들을 송신하고 응답들을 대기한다. 레플리커들(112(1)-112(4)) 각각은, 자신이 다른 어느 클라이언트에 의해서도 소유되지 않았다면, 리스(lease)를 부여한다. 그렇지 않으면, 레플리커들(112(1)-112(4)) 각각은 요청을 거절하지만 클라이언트들(102(a)) 중 어떤 것이 현재의 소유자인지를 (거절된) 요청 중인 클라이언트에 알려 준다. 정족수 컨센서스 기술이 이용되어, n개의 레플리커들 중 m개를 소유한 하나의 클라이언트(102(a))가 이번 라운드에서의 승자이므로 임계 구역(CS)에 액세스하도록 허용될 수 있다(m은 정족수이고 n은 레플리커들의 수이다). 정족수는, m>n/2 등과 같은, 다양한 방식으로 결정될 수 있다. 종래에는, CS에 액세스하도록 허용되지 않은 클라이언트들, 즉, 그 라운드의 "패자들"은 (존재한다면) 획득한 투표권들(votes)을 해제하고, 백오프되며, 요청들을 재시도했다.
그러나, 레플리커들(112(1)-112(4))은, 자신의 이전 판정을 잊고 새로운 요청을 위해 개방된 후의 무작위 리셋으로 어려움을 겪을 수 있다. "변심(change of heart)"으로 인해 상호 배제가 붕괴될 수 있다. 예를 들어, 노드의 평균 수명은 T이고, 노드가 t의 주기내에 충돌할 수 있는 확률은 t/T라고 가정한다. 투표권을 가진 m개의 레플리커들 중 k개가 리셋할 확률은 다음의 수학식 1과 같다.
상기 수학식 1로써 나타낸 바와 같이, t 동안에 2m-n 이상의 리셋들이 발생할 경우, 안전성은 무너질 것이며, 그 확률은 다음의 수학식 2와 같이 표현될 수 있다.
이와 같이, 최대 k개 레플리커 리셋을 극복하기 위해서는, n=3k+1 및 m=2k+1이 바람직하다. 이와 같이, 설계 선택으로서, m 값을 증가시킬 수 있다.
도 2는, 도 1의 클라이언트(102(a)) 및 레플리커(112(i);"i"는 1에서 "I"까지의 임의의 정수일 수 있다)에 대한 아키텍처를 보다 상세히 나타내는 시스템에 대한 예시적 구현의 도면이다. 클라이언트(102(a))는 클라이언트 ID(202) 및 응답 어레이(204)를 포함하는 것으로 도시되어 있다. 클라이언트 ID(202)는 레플리커(112(1))에 의해 클라이언트(102(a))를 식별하기 위한 것이다. 응답 어레이(204)는 도 1의 복수개 레플리커들(112(1)-112(4))로부터의 복수개 응답들(206(i))을 저장하도록 구성된다. 예를 들어, 응답(206(i))은 "i-번째" 레플리커, 즉, 레플리커(112(i))로부터 획득된 응답을 저장하는데 이용될 수 있고, 대응 레플리커의 소유자(208(i))를 지시하는 데이터 및, 레플리커가, 응답(206(i))이 형성된 요청을 수신한 때를 지시하는 관련된 타임 스탬프(210(i);timestamp)를 포함한다.
레플리커(112(i))는, 존재한다면, 복수개 클라이언트들(102(a)) 중 어떤 것이 레플리커(112(i))를 소유하는지를 지시하는 소유권 필드(212(i))를 보유한다. 소유권 필드(212(i))는 도 2에 나타낸 바와 같이 "Cowner"로서 표현될 수도 있다. 소유권 필드(212(i))에 대한 "닐(nil)" 값은, 레플리커(112(i))가 클라이언트들(102(a)) 중 하나에 대하여 찬성하는 투표권을 행사하지 않았다는 것을 지시한다. 다시 말해, 레플리커(112(i))가 현재로는 클라이언트와 배타적으로 관련되어 있지 않다. 타임 스탬프 필드(212(i)) "Towner"는, 레플리커(112(i))에 의해 요청이 수신된 때의 타임 스탬프를 저장한다.
레플리커(112(i))는, 복수개 클라이언트들(102(a))로부터 수신된 요청들(216(a))을 저장하는 큐(214(i))를 포함한다. 큐에 저장되어 있는 각각의 요청(216(a))은 복수개 클라이언트들(102(a)) 중 하나에 대응될 수 있다. 큐(214(a))는, 요청들 (216(a)) 각각이 수신된 순서로 요청들(216(a))을 저장하도록 구성될 수 있다. 예를 들어, 큐(214(i))는, Lamport의 논리 클록과 같은, 클록을 이용해 요청들(216(a)) 각각에 대한 타임 스탬프(218(a))를 생성할 수 있다. 그 다음, 큐(214(a))는 개개의 타임 스탬프들(218(a))에 기초해 요청들(216(a))을 조직할 수 있다. 다른 예에서는, 각각의 요청이 클라이언트(102(a)) 자체에 의해 타임-스탬핑될 수 있다. 도 1의 클라이언트(102(a)) 및 복수개 레플리커들(112(1)-112(4))의 동작에 대한 일례를 다음의 구현에서 찾아볼 수 있다.
예시적 절차들
다음의 논의는, 이전에 설명한 아키텍처를 이용해 구현될 수 있는 상호 배제 기술들을 설명한다. 각 절차의 태양들은 하드웨어, 펌웨어, 소프트웨어, 또는 그들의 조합으로 구현될 수 있다. 절차들은, 하나 이상의 장치들에 의해 수행되는 연산들을 특정하는 한 세트의 블록들로 도시되어 있다.
도 3은, 도 1의 클라이언트(102(a))가 피어-투-피어 네트워크의 복수개 피어들 중 하나 이상에 의해 제공되는 리소스에 대한 액세스를 요청하는 예시적 구현에서의 절차를 도시하는 흐름도이다. 블록 302에서, 클라이언트(102(a))는 복수개 레플리커들(112(1)-112(4)) 각각에 대한 요청(304)을 형성하고 통신한다. 요청(304)은, 피어-투-피어 환경에서 제공되는 복수개 리소스들 중 하나를 식별하며, 복수개 레플리커들(112(1)-112(4)) 각각이 클라이언트(102(a))를 다른 클라이언트로부터 구별할 수 있도록 하기 위해, 도 2의 클라이언트 ID(202)를 포함한다.
블록 306에서, 레플리커들(112(1)-112(4))은 소유권을 판정한다. 예를 들어, 레플리커들(112(1)-112(4)) 각각은 개개의 소유권 필드들(212(1)-212(4))을 조회할 수 있다. 소유권 필드들(212(1)-212(4))의 값은, 존재한다면, 어떤 클라이언트가 개개의 레플리커(112(1)-112(4))를 소유하는지를 지시한다. 예를 들어, 레플리커(112(1))의 소유권 필드(212(1))는, 레플리커(112(1))가 현재로는 클라이언트에 의해 소유되고 있지 않다는 것을 지시하는 "닐" 값을 갖는 더미로 도시되어 있다. 마찬가지로, 개개 레플리커들(112(2), 112(3))의 소유권 필드들(212(2), 212(3))도 각각 "닐" 값을 갖는 것으로 도시되어 있다. 따라서, 레플리커들(112(1)-112(3))은 특정 클라이언트에 의한 소유권에 대해 "투표권"을 행사하지 않았다.
그러나, 레플리커(112(4))의 소유권 필드(212(4))는, 레플리커(112(4))가 클라이언트(102(1))에 의해 소유되었다는 것을 지시하는 값을 포함하는 것으로 도시 되어 있다. 이러한 소유권 판정에 기초해, 레플리커(112(4))는, 클라이언트(102(a))가 요청을 재송신할 필요가 없도록, 요청(304)을 큐(214(4))에 저장하는데, 이것은 도 5와 관련하여 부연된다.
블록 308에서, 레플리커들(112(1)-112(4)) 각각은 클라이언트(102(a))에 대한 개개의 응답(310-316)을 형성하고 통신한다. 응답들(310-316) 각각은 레플리커(112(1)-112(4)) 각각의 소유권에 대한 지시를 포함한다. 예를 들어, 응답들(310-316) 각각은 각 레플리커(112(1)-112(4))로부터의 소유권 필드(Cowner) 값을 포함할 수 있다.
블록 310에서, 클라이언트(102(a))는, 응답들(310-316)에 기초해 리소스에 대한 액세스가 허용되는지의 여부를 판정한다. 예를 들어, 레플리커(112(1))로부터의 응답(310)은, 레플리커(112(1))가 다른 클라이언트에 의해 소유되지 않았다는 것을 지시하는 블록 306에서의 판정 결과를 포함할 수 있다. 따라서, 레플리커(112(1))는 이제 클라이언트(102(a))에 의해 소유되는데, 이것은 응답(312)에서 클라이언트(102(a))를 기술하는 더미 박스 및 텍스트의 포함을 통해 블록 310에 도시되어 있다. 마찬가지로, 레플리커들(112(2), 112(3)) 각각으로부터의 응답들(312, 314)도 블록 306에서의 개별적인 판정 결과를 포함한다. 예를 들어, 양자의 응답들(312, 314) 또한, 레플리커들(112(2), 112(3)) 각각이 다른 클라이언트에 의해 소유되지 않았으므로 레플리커들(112(2), 112(3)) 모두가 이제는 클라이언트(102(a))에 의해 소유된다는 것을 지시한다. 그러나, 응답(316)은, 대응 레플리커 (112(4))가 다른 클라이언트, 예를 들어, 클라이언트(102(1))에 소유되고 있다는 것을 지시하는 블록 306에서의 판정 결과를 포함한다.
클라이언트(102(a))는, 응답들(310-316)에 기초해 리소스의 이용이 허용되는지의 여부를 판정하기 위해, 다양한 상호 배제 기술들을 이용할 수 있다. 예를 들어, 클라이언트(102(a))는, 클라이언트(102(a))가 "n"개 레플리커들(112(1)-112(4)) 중 "m"개의 소유권을 획득했을 때 클라이언트(102(a))가 리소스를 이용할 수 있는 정족수 컨센서스 프로토콜을 채용할 수 있다(m은 정족수이고 n은 레플리커들의 수이다). 다시 말해, 레플리커들(112(1)-112(4)) 각각은 한번에 하나의 클라이언트와 배타적으로 관련되도록 구성된다. 이러한 배타적 관련은, 각각의 레플리커가 소정 클라이언트의 소유권 필드(Cowner)에 의해 지시되는 바와 같은 현재의 배타적 관련을 가진 클라이언트에 대해 찬성하는 투표권을 행사하게 하는데, 이용될 수 있다.
정족수는, m>n/2 등과 같은, 다양한 방식으로 판정될 수 있다. 따라서, 클라이언트(102(a))는, 요청(304)에 대한 개개의 응답들(310-316)에 의해 지시되는 바와 같은 레플리커들(112(1)-112(4))의 소유권에 기초해 소정 리소스에 대한 액세스가 허용되는지의 여부를 판정할 수 있다. 블록 308에 도시된 예에서, m이 3 이하로 설정되면, 클라이언트(102(a))는 레플리커들(112(1)-112(4))의 소유권 정족수를 가지므로 리소스 이용이 허용된다. 다른 예에서, m이 4 이하로 설정되면, 클라이언트(102(a))에는 리소스에 대한 액세스가 허용되지 않는다. 그러나, 요청(304) 을 즉각적으로 재송신하는 대신에, 클라이언트(102(a))는, 요청이 블록 306의 큐(212(4))에 저장되어 있으므로, 또 하나의 응답 수신을 대기할 수 있다. 따라서, 클라이언트(102(a))가 성공하지 못하면, 클라이언트(102(a))는 레플리커들(112(1)-112(4))로부터 추가적인 응답들을 "능동적으로 대기하는" 상태에 놓이게 된다. 큐 사용 및 능동적 대기에 대한 추가적인 논의는 도 4 및 도 5와 관련하여 찾아볼 수 있다.
이런 식으로, 예시적 절차(600)에 나타낸 바와 같이, 상호 배제 기술은, 레플리커들(112(1)-112(4))이 응답들을 조정하기 위해 서로 통신하지 않도록, 구성될 수도 있다. 예를 들어, 각각의 레플리커는 순수하게 자신의 고유한 로컬 상태에 기초해 자신의 응답을 클라이언트로 송신할 수 있다. 이것은 레플리커들간의 조정에 필요한 시간을 절감함으로써, 클라이언트들에게 좀더 빠른 임계 구역들로의 액세스가 부여될 수 있는 기회를 제공한다. 따라서, 클라이언트들은, 레플리커들로부터의 판정을 수동적으로 대기하는 대신에, 클라이언트 선택 프로세스에 능동적으로 관여할 수 있다.
도 4는, 클라이언트가 복수개 리소스들 중 하나에 대한 이용이 허용되는지의 여부를 판정하는 예시적 구현에서의 절차(400)를 도시하는 흐름도이다. 블록 402에서, 클라이언트는 복수개 리소스들 중 하나를 이용하기 위한 요청을 형성한다. 요청은 클록(예를 들어, Lamport의 논리 클록)으로부터 획득된 타임 스탬프 및 클라이언트의 ID(예를 들어, 도 2의 클라이언트 ID(202))를 포함한다. 블록 404에서, 클라이언트는, 레플리커들 각각이 요청들 중 하나를 수신하도록(블록 406), 소 정 리소스와 관련된 복수개 레플리커들 각각으로 요청을 송신한다.
판정 블록 408에서, 레플리커들 각각은, 대응 소유권 필드 값이 "닐" 값을 갖는지의 여부, 즉, 레플리커가 이전 클라이언트와 배타적으로 관련되지 않았는지의 여부를 판정한다. 소유권 필드 값이 닐이면, 블록 410에서는, 요청으로부터의 클라이언트 ID가 레플리커의 소유권 필드(예를 들어, Cowner) 값으로 저장된다. 또한, 요청의 타임 스탬프 값이 레플리커의 타임 스탬프 필드(예를 들어, Towner)에 저장된다. 블록 408에서 소유권 필드 값이 "닐"이 아니면, 클라이언트 ID 및 타임 스탬프를 포함하는 요청은 개개 레플리커의 큐에 삽입된다. 블록 410 또는 블록 412의 설명된 동작들을 수행한 후, 본 절차(400)는 블록 414로 진행한다.
블록 414에서는, 레플리커들 각각에 의해, 소유권 및 타임 스탬프 필드들에 대한 개개의 값들을 포함하는 응답이 형성된다. 블록 416에서, 레플리커들은 응답을 클라이언트로 송신한다. 예를 들어, 클라이언트들 각각은 도 1의 네트워크(106)를 통해 응답들을 통신할 수 있다. 블록 418에서, 클라이언트는 응답을, 도 2의 응답 어레이(204)와 같은, 응답 어레이에 저장한다. 판정 블록 420에서는, 승자를 계산하기에 충분한 응답들이 수신되었는지의 여부에 대한 판정이 이루어진다. 이 판정은 다양한 방식으로 수행될 수 있다. 예를 들어, 클라이언트는, 정족수를 형성하기에 충분한 응답들이 수신되었는지의 여부, 요청을 수신한 레플리커들 각각으로부터 응답이 수신되었는지의 여부 등을 판정할 수 있다.
충분한 응답들이 수신되었으면(블록 420), 클라이언트는 승자를 계산한다(블 록 422). 승자는 다양한 방식으로 계산될 수 있다. 예를 들어, 상술한 바와 같이, 클라이언트는, 클라이언트가, n개 레플리커들 중 m개와 같은, 레플리커들의 정족수에 대한 소유권을 획득했는지의 여부를 판정할 수 있다.
판정 블록 424에서는, 클라이언트에 의해, 승자가 클라이언트인지의 여부에 대한 판정이 이루어진다. 승자가 클라이언트이면(블록 424), 소정 리소스로의 액세스가 허용되었다는 것을 클라이언트가 "알 수 있도록", 성공 메시지가 클라이언트로 송신된다(블록 426). 승자가 클라이언트가 아니라면(블록 424), 본 절차(400)는 블록 428로 진행한다.
판정 블록 428에서는, 승자가 다른 클라이언트인지의 여부에 대한 판정이 이루어진다. 승자가 다른 클라이언트라면, 본 절차는 블록 430으로 진행한다. 블록 430에서, 클라이언트는 또 하나의 응답을 대기하고 본 절차는(400)는 블록 418로 복귀한다. 이런 식으로, 클라이언트는, 종래에 요구되었던 바와 같이 요청을 재송신할 필요가 없으므로, 클라이언트 및 논리 레플리커를 제공하는 컴퓨팅 장치(들)의 하드웨어 및 소프트웨어 리소스들 뿐만 아니라 클라이언트와 통신 장치(들)간의 통신을 위한 네트워크 리소스들을 절감하는, "능동적 대기" 상태가 된다.
승자가 다른 클라이언트라면(블록 428), 이번 "라운드(round)"에서 승자를 찾을 수는 없을 것이다. 예를 들어, j same + n - j < m 이면(j는 리턴된 응답들의 수이고 동일 항목의 최대 수가 j same 이다), 소정 리소스에 대한 액세스를 요청 중인 클라이언트들 중 어느 것도 리소스에 액세스할 수 있는 권한을 "획득"할 수 없다. 따라서, 블록 432에서, 클라이언트는, 승자가 밝혀질 수 있도록, 클라이언트에 의해 소유되어 있는 레플리커들 각각으로 항복 메시지(yield message)를 송신하기 위한 항복 연산(yield operation)을 개시하는데, 다음의 구현에서 이것의 일례가 부연된다.
도 5는, 도 4의 항복 연산 실행이 도시되어 있는 예시적 구현(500)에서의 절차를 나타내는 흐름도이다. 블록 502에서, 클라이언트를 특정하는 소유권 필드 값을 가진 각각의 응답에 대해, 응답을 형성하고 통신한 대응 레플리커로 항복 메시지가 송신된다. 예를 들어, 도 3의 블록 318에서 클라이언트(102(a))는, 클라이언트(102(a))가 개개의 레플리커들(112(1)-112(3))을 소유한다(즉, 개개의 레플리커들(112(1)-112(3))과 배타적으로 관련되어 있다)는 것을 지시하는 대응 응답들(310-314)을 송신한 레플리커들(112(1)-112(3))로 항복 메시지를 송신할 수 있다.
블록 504에서는, 클라이언트에 의해 소유된 레플리커들이 항복 메시지를 수신한다. 항복 메시지는, 항복 메시지를 송신 중인 클라이언트를 식별하기 위한 클라이언트 ID를 포함한다. 판정 블록 506에서, 레플리커들 각각은, 클라이언트 ID가 각 레플리커의 소유권 필드(Cowner) 값과 동일한지의 여부를 판정한다. 클라이언트에 의해 소유된 레플리커들로만 항복 메시지가 송신되는 구현에서, 판정 블록 506은 오류들을 점검하는 기능을 할 수 있다. 예를 들어, 클라이언트 ID가 소유권 필드의 값과 매칭되지 않으면, 클라이언트로 오류가 송신된다(블록 508). 다른 구현에서는, 모든 레플리커들로 항복 메시지들이 송신될 수 있으므로, 판정 블록 506 의 실행은, 각 레플리커에 의해, 항복 메시지가 그 레플리커에 "상응하는지"의 여부를 판정하는데 이용될 수 있다.
클라이언트 ID가 소유권 필드 값과 동일하면(블록 506), 블록 510에서, 소유권 필드 값 및 타임 스탬프 필드 값은 큐에 삽입된다. 예를 들어, 소유권 및 타임 스탬프 필드 값들은 큐로 복사될 수 있다. 블록 512에서는, 레플리커의 소유권 및 타임 스탬프 필드 값들이 큐의 "앞부분"으로부터 리셋되고 이 값들을 설정하는데 사용된 대응 엔트리는 큐로부터 삭제된다. 예를 들어, 큐는, 의사 "선착순 처리" 메커니즘을 제공하는 것과 같이, 가장 오래된 엔트리들이 큐의 "앞부분"(예를 들어, 가장 먼저 판독되는 엔트리)에 배치되도록 타임 스탬프들에 따라 큐의 엔트리들을 조직할 수 있다. 따라서, 블록들 510, 512에서는, 소유권 및 타임 스탬프 필드들을 위한 값들이 큐로부터의 덜-새로운(least-recent), 즉, 가장 오래된 엔트리들을 사용해 리셋되고 소유권 및 타임 스탬프 필드들의 이전 값들은 큐에 삽입된다.
블록 514에서, 레플리커들 각각은, 소유권 및 타임 스탬프 필드들의 개개 값들을 포함하는 응답을 형성한다. 블록 516에서, 응답은 레플리커에 의해 클라이언트로 송신된다. 이와 같이, 항복 연산의 실행은 사실상 협동적이다. 항복 연산의 의미는, 레플리커가 다른 클라이언트에 의한 소유권을 위해 해제되고 요청이 큐에 삽입된다는 점에서 "해제+요청"으로 볼 수 있다. 해제 및 요청 연산들에 대한 추가적인 논의는 도 6과 관련하여 찾아볼 수 있다. 따라서, 레플리커가 항복 메시지를 수신할 때, 레플리커는 승좌(winning seat)에서 클라이언트, 즉, 소유권 필드 (Cowner) 값을 삭제하고 그것을 큐에 삽입한다. 그 다음, 레플리커는 큐로부터 최초의 클라이언트를 선택하고 성공을 통지한다.
항복 펑크션은 큐의 개편을 초래한다. 예를 들어, 도 4의 클라이언트들 중 어느 것도 "성공"하지 못했다는 것은 클라이언트들간에 경쟁이 발생했다는 것을 지시하기 때문이다. 또한, 이것은, 큐들이 구축되고는 있지만 승리자들은, 네트워크 지연 등으로 인해, 제자리에 있지 않을 수도 있다는 것을 의미한다. 항복 메시지를 발행함으로써, 클라이언트들은 레플리커들에게 서로에 대해 일관된 뷰를 구축하여 결과적으로 승자를 선택할 수 있는 기회를 제공한다. 본 절차(500)는, 승자가 계산될 때까지 수차례 반복될 수 있다.
예시적 상호 배제 프로토콜 아키텍처
도 6은, 도 4 및 도 5와 관련하여 설명한 바와 같은, 도 2의 클라이언트(102(a)) 및 레플리커(112(i))에 의한 실행을 위한 상호 배제 프로토콜의 구현 아키텍처(600)를 도시하는 블록도이다. 본 아키텍처(600)는, 화살표들을 사용해 도 1의 클라이언트(102(a))와 레플리커(112(1))간의 메시지 교환을 도시한다. 클라이언트(102(a)) 및 레플리커(112(i)) 각각에 대한 메시지 핸들러의 관점에서 아키텍처(600)를 설명할 수도 있다. 개개 장치들에 의한 연산을 위한 예시적 의사 코드와 관련하여 예시적 연산들 각각을 논의할 것이다. 하나 이상의 연산들이 개별적으로 그리고/또는 다른 연산들 내에 도시되어 있지만, 이 연산들은 다양한 방식으로 조합되거나 재배열될 수 있다.
클라이언트(102(a)) 및 레플리커(112(i))는 각각, 상술한 바와 같은 상호 배제를 제공하는 여러 연산들을 지원할 수 있다. 다음의 논의는, 클라이언트(102(a))와 레플리커(112(i))간의 통신이 메시지 핸들러의 관점으로 도시되도록, 연산들을 실행하고 메시지들을 교환하는 예시적 순서를 설명하는데, 이것은 클라이언트 또는 레플리커(112(i))에 의해 실행될 수 있다.
클라이언트(102(a))는, 클라이언트(102(a))의 식별자인 "id"(예를 들어, 도 2의 클라이언트 ID(202)) 및, 도 2의 응답 어레이(204)와 같은, 레플리커들로부터의 응답을 저장하는데 이용되는 "resp[]"의 상태 변수들을 지원한다. 클라이언트(102(a))는, 리소스에 대한 액세스를 제어하는데 이용되는 레플리커들 각각에 대한 요청을 형성하기 위해, 다음의 의사 코드 실행을 통해 수행될 수 있는 요청(602) 연산을 개시한다.
클라이언트(102(a))는, 의사 코드 "CS", 즉, 임계 구역으로 표현되는, 복수개 리소스들 중 하나에 액세스하기를 원한다. R[i]는, 임계 구역으로의 액세스를 허용하는데 이용되는 복수개 레플리커들, 예를 들어, 레플리커들(112(i)), 각각을 표현하는데 사용된다. 요청(602) 연산의 "부속-연산(sub-operation)"으로 도시되어 있는 "SendRequest"(604) 연산은 요청을 각각의 레플리커 "R[i]"로 송신하기 위해 실행 되며, 클라이언트 "id" 및 클록으로부터의 타임 스탬프를 포함한다.
레플리커(112(i))는, 상술한 바와 같이, 클라이언트의 소유자인 Cowner 및 Cowner 값에 대한 타임 스탬프인 Towner의 상태 변수들을 지원한다. 큐는 요청들을 저장하는데 사용된다. 클라이언트(102(a))로부터 요청을 수신했을 때, 레플리커(112(i))는, 다음과 같은 예시적 의사 코드로 표현되는 OnRequest(606) 연산을 실행한다.
의사 코드로 나타낸 바와 같이, 레플리커(112(i))는, 클라이언트(102(a))로부터의 요청에 포함된, "C"로서 표현되는 클라이언트 ID 및 타임 스탬프를 포함하는 요청을 수신한다. 그 다음, OnRequest(606) 연산은, 레플리커의 소유권 필드(Cowner)가 공백인지를 판정하고, 그렇다면, 클라이언트 ID를 소유권 필드에 타임 스탬프를 타임 스탬프 필드(Towner)에 저장한다. 레플리커의 소유권 필드가 닐이 아니라면, 클라이언트 ID "C" 및 타임 스탬프는, 큐 연산들(610) 중 삽입(608) 연산을 실행하는 것에 의해, 큐에 삽입된다. OnRequest 및/또는 삽입(606, 608) 연산들을 실행한 후, 레플리커(112(i))는 소유권 및 타임 스탬프 필드들(Cowner 및 Towner)의 값들을 클라이언트(102(a));"C")로 송신하기 위해 SendResponse(612) 연산을 실행한다.
레플리커들(112(i))로부터 하나 이상의 응답들을 수신했을 때, 클라이언트(102(a))는, 다음과 같이 표현될 수 있는 OnResponse(614) 연산을 개시한다.
의사 코드로 나타낸 바와 같이, OnResponse(614) 연산은 응답 및 응답의 타임 스탬프를, 개개 레플리커(112(i))에 대응되는 개개 어레이들에서의 위치들에 저장할 수 있다.
그 다음, OnResponse(614) 연산의 실행은, 다음의 의사 코드로 나타낸 바와 같이, 승자를 계산하도록 진행된다.
도 4와 관련하여 상술하고 의사 코드로 나타낸 바와 같이, 클라이언트(102(a))는 먼저, 그 클라이언트(102(a))가 리소스에 액세스하기 위한 권한을 "획득"했는지의 여부를 계산할 수 있다. 그렇다면, 클라이언트(102(a))에 그 사실이 통지된다. 그렇지 않다면, OnResponse(614) 연산의 실행은 다음에 나타낸 바와 같이 계속된 다.
도 4 및 도 5와 관련하여 상술한 바와 같이, 클라이언트들 중 어느 것도 소정 리소스, 즉, 임계 섹션(CS)에 액세스하기 위한 권한을 획득하지 못한다면, 클라이언트(102(a))는, 클라이언트(102(a))에 의해 소유된 레플리커들(112(i)) 각각으로 항복 메시지를 송신하기 위한 SendYield(616) 연산을 개시한다. 다른 클라이언트가 승자라면, 클라이언트(102(a))는 대기한다. 그 다음, 클라이언트(102(a))는 추가적인 응답들을 수신하기 위해 자신의 상태를 리셋한다.
레플리커(112(i))는, 항복 메시지에 응답하여 다음과 같이 표현될 수 있는 OnYield(618) 연산을 실행한다.
의사 코드로 나타낸 바와 같이, 레플리커(112(i))가 클라이언트(102(a))에 의해 소유된다면, 소유권 및 타임 스탬프 파일들로부터의 값들은 큐에 삽입되고 새로운 승자가 계산된다. 또한, OnYield(618) 연산은 큐 연산들(610)의 집합을 이용하는 RespQueue 연산을 개시할 수도 있다. 예를 들어, 엔트리들 각각의 타임 스탬프들을 조사하는 것과 같이, 큐에서 가장 오래된 엔트리를 판정하기 위해 먼저 QueueFront(620) 연산이 실행된다. 그 다음, QueueFront(620) 연산을 통해 큐로부터 선택된 클라이언트를 특정하는 또 하나의 응답을 송신하기 위해, SendResponse(612) 연산이 실행된다. 그 다음, Remove(622) 연산이 실행되어 레플리커(112(i))의 Cowner 및 Towner 필드들에 포함시키기 위해 큐로부터 선택된 클라이언트를 삭제한다.
또한, 클라이언트는, 다음의 의사 코드를 이용해 표현될 수 있는 Release(624) 연산을 포함한다.
Release(624) 연산은 레플리커의 소유권을 포기하거나 큐로부터의 클라이언트에 의해 형성되고 송신된 대응 요청을 삭제하기 위해 실행된다. 예를 들어, 레플리커는, 해제 메시지의 수신시에, 다음과 같이 표현되는 OnRelease(626) 연산을 실행할 수 있다.
의사 코드로 나타낸 바와 같이, 레플리커(112(i))가 클라이언트(102(a))에 의해 소유된다면, 클라이언트(102(a))는 Cowner 및 Towner 필드들로부터 삭제된다. 또한, 큐가 공백인지의 여부를 판정하기 위해 QueueContains(632) 연산이 실행된다. 클라이언트(102(a))가 레플리커(112(i))의 현재 소유자가 아니라면, 큐가 클라이언트(102(a))로부터의 요청을 포함하는지를 판정하기 위해 QueueContains(632) 연산이 실행되고, 그렇다면, 요청, 예를 들어, 클라이언트 ID 및 타임 스탬프를 큐로부터 삭제하기 위해 QueueRemove(622) 연산이 실행된다.
또한, 레플리커들은 이용 가능한 리소스들의 해당 공유에 찬성하는 결정권을 행사하도록 구성될 수도 있다. 예를 들어, 모든 정족수 멤버들이 DHT를 형성한다면, 그 대신, 각 멤버는 그들의 공간 공유로써 투표권을 행사할 수 있다. 따라서, 클라이언트가 전체 공간의 f=m/n을 모았다면 컨센서스에 도달된다. 따라서, 동적인 멤버쉽 변화에 적응할 수 있는 동일한 속성을 유지하면서도, 레플리커들의 고정된 수를 요구하지 않는다.
환경의 장애
상술한 상호 배제 프로토콜은 도 1의 환경(100)에서의 장애를 해결하는데도 이용될 수 있다. 예를 들어, 크래시 후, 레플리커는, 이전의 클라이언트에 대해 이미 그렇게 했을 가능성이 있음에도 불구하고, 새로운 클라이언트에 투표권을 부여(즉, 새로운 응답을 발행)할 수 있다. 따라서, 안전성을 붕괴시킬 확률을 감소시키기 위해 m/n 비가 증가될 수 있다. 다른 예에서는, 큐의 각 엔트리가 상실될 수 있는데, 이로 인해, 클라이언트는 오지 않을 응답들을 대기할 수 있다. 이러한 예를 해결하기 위해, 레플리커의 메모리는 다음 섹션에서 논의되는 인폼드 백오프 메커니즘을 이용해 재구축될 수 있다. 또 다른 예에서, 현재적으로 소정 리소스, 즉, CS를 이용 중인 클라이언트는 탈출하기 전에 크래시하는데, 이로 인해, 레플리커들이 "스턱(stuck)"되는 결과를 초래할 수 있다. 따라서, 레플리커는 갱신 가능한 리스를 가진 클라이언트들에게 권한을 부여할 수 있다. 리스가 만료되면, 레플리커는 (존재한다면) 큐의 후속 클라이언트에 권한을 부여할 것이다. 또 다른 예로서, 클라이언트와 레플리커간의 신뢰할 수 없는 통신 채널 또한 유사한 문제들을 발생시킬 것이다.
인폼드 백오프
인폼드 백오프는, 재시작되지 않은 다른 레플리커들에게 오버로드하지 않으면서, 재시작된 레플리커의 상태를 재구축하는데 이용될 수 있는 메커니즘이다. 요청시에, 레플리커는 예상되는 대기 시간(T W )을 예측하고 그것을 클라이언트에 통신한다. 예측된 대기 시간은 후속의 재시도, 즉, 요청의 재송신 전에 그만큼 대기할 것을 클라이언트에 통지한다. 예를 들어, 실험에 근거한 T W 의 계산치는 T W = T CS *(P + 1/2)인데, P는 큐에서의 클라이언트 위치이고 TCS는, 레플리커에 의해 관측되는, 임의의 연속적인 2개의 Release 연산들간의 간격에 대한 평균 CS 시간이다. 공식의 1/2은 레플리커의 현재 소유자를 고려하는데 이용된다. 일 구현에서, T W 는 재시도가 수신될 때마다 업데이트된다.
인폼드 백오프 메커니즘의 사용은, 클라이언트 및 레플리커의 "정상적인" 연산에 지장을 주지 않도록 구성될 수도 있다. 예를 들어, 레플리커가 크래시하지 않았다고 가정한다. 클라이언트가 예정된 재시도 전에 응답을 수신한다면, 클라이언트에 의해 최소한의 추가적 리소스들이 이용된다. 또한, 클라이언트가 재시도, 즉, 요청을 재송신하지 않는다면, 정보에 기초한 T W 가 부정확했을 수도 있다. 이러한 경우, 클라이언트는 재시도를 위해 T W 를 갱신할 수 있다. 따라서, 레플리커가 리셋을 수행하고 나면, 큐는 원래의 순서와 유사한 순서로 재구성된다.
예시적인 컴퓨팅 장치
다수의 개별적인 컴퓨터들을 사용해, 여기에 설명되어 있는 다양한 컴포넌트들 및 기능을 구현한다. 도 7은, 참조 번호 702로 지시되는 컴퓨터를 포함하는, 컴퓨터 환경(700)의 통상적인 일례에 대한 컴포넌트들을 나타낸다. 컴퓨터(702)는 도 1의 복수개 클라이언트들(102(a)) 및 복수개 컴퓨팅 장치들(104(1)-104(B))과 동일하거나 상이할 수 있다. 도 7에 나타낸 컴포넌트들은 일례일 뿐이며, 본 발명의 기능 범위에 관해 어떠한 제한을 두려는 것은 아니므로, 본 발명이 도 7에 나타낸 사양들에 반드시 의존하는 것은 아니다.
일반적으로, 다양하고 상이한 범용 또는 특수 목적의 컴퓨팅 시스템 구성들이 사용될 수 있다. 본 발명에 사용하기에 적당할 수 있는 주지의 컴퓨팅 시스템들, 환경들 및/또는 구성들의 예로는 퍼스널 컴퓨터들, 서버 컴퓨터들, 핸드-헬드 또는 랩탑 장치들, 멀티-프로세서 시스템들, 마이크로프로세서-기반 시스템들, 셋톱 박스들, 프로그램 가능한 상용 전자제품들, 네트워크 PC들, 네트워크-준비 완료 장치들, 미니컴퓨터들, 메인프레임 컴퓨터들, 상기 시스템 또는 장치들 중 어떤 것을 포함하는 분산 컴퓨팅 환경들 등을 들 수 있지만, 이에 한정되는 것은 아니다.
컴퓨터들의 기능은 대부분의 경우, 컴퓨터들에 의해 실행되는, 소프트웨어 컴포넌트들과 같은, 컴퓨터-실행 가능 명령어들에 의해 구체화된다. 일반적으로, 소프트웨어 컴포넌트들로는, 특정한 태스크들을 수행하거나 특정한 추상적 데이터형들을 구현하는 루틴들, 프로그램들, 오브젝트들, 컴포넌트들, 데이터 구조들 등 을 들 수 있다. 또한, 태스크들은, 통신 네트워크를 통해 링크되어 있는 원격 프로세싱 장치들에 의해 수행될 수도 있다. 분산 컴퓨팅 환경에서, 소프트웨어 컴포넌트들은, 도 1 및 도 6과 관련하여 상술한 바와 같이, 로컬 및 원격 컴퓨터 저장 매체 모두에 배치될 수 있다.
명령어들 및/또는 소프트웨어 컴포넌트들은 상이한 시간에, 컴퓨터의 일부이거나 컴퓨터에 의해 판독될 수 있는 다양한 컴퓨터-판독 가능 매체에 저장된다. 프로그램들은 통상적으로, 예를 들어, 플로피 디스크들, CD-ROM들, DVD, 또는 변조된 신호와 같은 소정 형태의 통신 매체상에 분산되어 있다. 거기로부터, 프로그램들은 컴퓨터의 2차 메모리로 설치되거나 로드된다. 실행시에, 프로그램들은 적어도 부분적으로 컴퓨터의 전자식 1차 메모리에 로드된다.
이러한 프로그램들 및 컴포넌트들이 상이한 시간에 컴퓨터의 상이한 저장 컴포넌트들에 상주하며 컴퓨터의 데이터 프로세서(들)에 의해 실행된다고 알려져 있지만, 여기에서는 설명을 위해, 프로그램들 및 오퍼레이팅 시스템과 같은 다른 실행 가능한 프로그램 컴포넌트들을 개별 블록들로서 도시하고 있다.
도 1을 참조하면, 컴퓨터(702)의 컴포넌트들은 프로세싱 유닛(704), 시스템 메모리(706), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트들을 프로세싱 유닛(704)에 결합시키는 시스템 버스(708)를 포함할 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(708)는 메모리 버스 또는 메모리 컨트롤러, 주변장치 버스, 및 다양한 버스 아키텍처들 중 하나를 사용하는 로컬 버스를 포함하는 몇가지 유형의 버스 구조들 중 하나일 수 있다.
컴퓨터(702)는 통상적으로 다양한 컴퓨터 판독 가능 매체를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨터(702)에 의해 액세스될 수 있는 이용 가능한 임의의 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체 모두를 포함한다. 한정이 아닌 일례로써, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 통신 매체를 구비할 수 있다. "컴퓨터 저장 매체"는 컴퓨터 판독 가능 명령어들, 데이터 구조들, 프로그램 모듈들, 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광학 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 다른 자기 저장 장치들, 또는 소정 정보를 저장하는데 사용될 수 있으며 컴퓨터(702)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에 한정되는 것은 아니다. 통신 매체는 통상적으로 컴퓨터-판독 가능 명령어들, 데이터 구조들, 프로그램 모듈들, 또는 반송파나 다른 전송 메커니즘과 같은 변조 데이터 신호의 다른 데이터를 구현하며 임의의 정보 전달 매체를 포함한다. "변조 데이터 신호"라는 용어는, 그에 관한 특징들이 하나 이상인 세트를 가지거나 정보를 신호로 인코딩하는 것과 같은 방식으로 변경된 신호를 의미한다. 한정이 아닌 일례로써, 통신 매체는 유선 네트워크 또는 직접-유선 접속과 같은 유선 매체 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 상기한 것들의 임의 조합들 또한 컴퓨터 판독 가능 매체의 범위내에 포함되어야 한다.
시스템 메모리(706)는 ROM(710) 및 RAM(712)과 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 스타트-업(start-up) 동안과 같은 때에, 컴퓨터(702)내의 소자들 사이에서 정보 전달을 돕는 기본 루틴들을 포함하는 BIOS(714)는 통상적으로 ROM(710)에 저장된다. RAM(712)은 통상적으로, 프로세싱 유닛(704)으로 즉시 액세스될 수 있거나 그리고/또는 프로세싱 유닛(704)에 의해 현재 연산 중인 데이터 및/또는 소프트웨어 컴포넌트들을 포함한다. 한정이 아닌 일례로써, 도 7은 오퍼레이팅 시스템(716), 애플리케이션들(718), 소프트웨어 컴포넌트들(720), 및 프로그램 데이터(722)를 도시한다.
컴퓨터(702)는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체도 포함할 수 있다. 단지 일례로써, 도 7은 비분리형, 비휘발성 자기 매체로부터 판독하고 그에 기입하는 하드 디스크 드라이브(724), 분리형, 비휘발성 자기 디스크(728)로부터 판독하고 그에 기입하는 자기 디스크 드라이브(726), 및 CD-ROM 또는 다른 광학 매체와 같은 분리형, 비휘발성 광학 디스크(732)로부터 판독하고 그에 기입하는 광학 디스크 드라이브(730)를 도시한다. 예시적 동작 환경에 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 반도체 RAM, 반도체 ROM 등을 들 수 있지만, 이에 한정되는 것은 아니다. 하드 디스크 드라이브(724)는 통상적으로 데이터 매체 인터페이스(734)와 같은 비휘발성 메모리 인터페이스를 통해 시스템 버스(708)에 접속되고, 자기 디스크 드라이브(726) 및 광학 디스크 드라이브(730)는 통상적으로 분리형 메모리 인터페이스에 의해 시스템 버스(708)에 접속 된다.
상술되고 도 7에 도시된 드라이브들 및 그들과 관련된 컴퓨터 저장 매체는 컴퓨터(702)에 컴퓨터-실행가능 명령어들, 데이터 구조들, 소프트웨어 컴포넌트들, 및 다른 데이터의 저장을 제공한다. 도 7에는, 예를 들어, 하드 디스크 드라이브(724)가 오퍼레이팅 시스템(716'), 애플리케이션들(718'), 소프트웨어 컴포넌트들(720'), 및 프로그램 데이터(722')를 저장하는 것으로 도시되어 있다. 이들 컴포넌트들은 오퍼레이팅 시스템(716), 애플리케이션들(718), 소프트웨어 컴포넌트들(720), 및 프로그램 데이터(722)와 동일하거나 상이할 수 있다. 여기에서는, 최소한, 이들이 상이한 복사본들임을 지시하기 위해, 오퍼레이팅 시스템(716'), 애플리케이션들(718'), 소프트웨어 컴포넌트들(720'), 및 프로그램 데이터(722')에 상이한 번호들을 부여하였다. 사용자는 키보드(736), 및 흔히 마우스, 트랙볼, 또는 터치패드라고 하는 (나타내지 않은) 포인팅 장치와 같은 입력 장치들을 통해 명령들 및 정보를 컴퓨터(702)에 입력할 수 있다. 다른 입력 장치들로는 (스트리밍 데이터를 제공하는 마이크로폰(738) 또는 카메라(740)와 같은) 소스 장치들, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 들 수 있다. 이들 및 다른 입력 장치들은 대개, 시스템 버스에 결합되어 있는 입출력(I/O) 인터페이스(742)를 통해 프로세싱 유닛(702)에 접속되지만, 병렬 포트, 게임 포트, 또는 USB(universal serial bus)와 같은, 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(744) 또는 다른 유형의 디스플레이 장치 또한, 비디오 어댑터(746)와 같은, 인터페이스를 통해 버스(708)에 접속된다. 모니터(744) 이외에, 컴퓨터들은 다른 렌더 링 장치들(예를 들어, 스피커들) 및 하나 이상의 프린터들을 포함할 수도 있는데, 이들은 I/O 인터페이스(742)를 통해 접속될 수 있다.
컴퓨터는, 원격 장치(750)와 같은, 하나 이상의 원격 컴퓨터들에 대한 논리적 접속들을 사용하는 네트워크 환경에서 동작할 수도 있다. 원격 장치(750)는 퍼스널 컴퓨터, 네트워크-준비 완료 장치(network-ready device), 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드일 수 있으며, 통상적으로 컴퓨터(702)와 관련하여 상술한 소자들 중 많은 것을 또는 그 전부를 포함한다. 도 7에 도시된 논리적 접속들은 LAN(local area network;752) 및 WAN(wide area network;754)을 포함한다. 도 7에 도시되어 있는 WAN(754)은 인터넷이지만, WAN(754)이 다른 네트워크들을 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 기업-범위의 컴퓨터 네트워크, 인트라넷 등에서 흔히 볼 수 있다.
LAN 네트워킹 환경에서 사용될 경우, 컴퓨터(702)는 네트워크 인터페이스 또는 어댑터(756)를 통해 LAN(752)에 접속된다. WAN 네트워킹 환경에서 사용될 경우, 컴퓨터(702)는 통상적으로 모뎀(758) 또는 인터넷(754)을 통해 통신을 확립하기 위한 다른 수단을 포함한다. 내장형이거나 외장형일 수 있는 모뎀(758)은 I/O 인터페이스(742) 또는 다른 적절한 메커니즘을 통해 시스템 버스(708)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(702)와 관련하여 도시된 프로그램 모듈들 또는 그 일부는 원격 장치(750)에 저장될 수 있다. 한정이 아닌 일례로써, 도 7은 원격 소프트웨어 컴포넌트들(760)을 원격 장치(750)상에 상주하는 것으로 도시하고 있다. 나타낸 네트워크 접속들은 예시적인 것이며 컴퓨터들간에 통신 링크를 확립하 는 다른 수단이 사용될 수도 있다는 것을 알 수 있다.
논리 레플리커들 및 정족수 컨센서스를 이용해 피어-투-피어 네트워크에서의 시스템 다이너미즘을 처리할 수 있는 상호 배제 기술들을 설명하였다. 여기에서 설명된 기술들에 의해 제공되는 클라이언트들 및 레플리커들간의 의사-일관성 및 협동은 네트워크 지연의 변동들 및 경쟁을 우회하는데 이용될 수 있다. 또한, 본 상호 배제 기술들은, 인폼드 백오프를 이용하는 것에 의한 것과 같이, 장애에도 대처한다.
구조적 사양들 및/또는 방법적 동작들에 특징적인 언어로 본 발명을 설명하였지만, 첨부된 청구항들로 정의된 본 발명이 설명된 특정 사양들 및 동작들에 한정될 필요는 없다. 오히려, 특정 사양들 및 동작들은 청구된 발명을 구현하는 예시적 형태로서 개시되어 있다.
Claims (41)
- 복수의 논리 레플리커(replica)의 각각에서, 클라이언트로부터 요청을 수신하는 단계를 포함하고,상기 클라이언트는 복수의 클라이언트 중 하나이며;상기 논리 레플리커의 각각은 임의의 특정 시간에서 상기 복수의 클라이언트 중 임의의 클라이언트와의 배타적 연관을 위해 구성되고;상기 논리 레플리커의 각각은 큐를 포함하며;상기 요청은 복수의 리소스 중 하나에 액세스하기 위한 것이며;상기 복수의 논리 레플리커의 각각에서,상기 논리 레플리커가 상기 요청을 수신할 때에, 상기 논리 레플리커가 상기 복수의 클라이언트 중 또 다른 클라이언트와 배타적 연관을 갖는 경우, 상기 요청을 상기 논리 레플리커의 큐에 저장하며;상기 논리 레플리커가 상기 요청을 수신할 때에, 상기 논리 레플리커가 상기 복수의 클라이언트 중 또 다른 클라이언트와 배타적 연관을 갖지 않는 경우, 상기 클라이언트와의 배타적 연관을 상기 논리 레플리커에 대해 설정(establishing)하는 방법.
- 제1항에 있어서,상기 복수의 논리 레플리커의 각각에서, 상기 논리 레플리커의 배타적 연관을 식별하는, 상기 클라이언트에 전달하기 위한 응답을 형성하는 단계를 더 포함하는 방법.
- 제1항에 있어서,상기 복수의 리소스는 DHT(Distributed Hash Table)를 이용하여 분할(partitioned)되고;상기 DHT는 상기 복수의 리소스의 각각을, 복수의 버킷(bucket)의 각각의 버킷으로 분할하며;상기 복수의 버킷은 피어-투-피어 네트워크에서 복수의 컴퓨팅 장치에 의해 제공되는 방법.
- 복수의 논리 레플리커에 전달하기 위한, 클라이언트에 의한 요청을 형성하는 단계 - 상기 클라이언트는 복수의 클라이언트 중 하나이며, 상기 요청은 복수의 리소스 중 하나를 위한 것임 - ;상기 클라이언트에서, 상기 복수의 논리 레플리커로부터 복수의 응답을 수신하는 단계 - 상기 응답의 각각은 상기 논리 레플리커 각각이 상기 클라이언트에 의해 소유되는지의 여부를 식별하도록 구성됨 - ;상기 복수의 응답으로부터, 상기 클라이언트가 하나의 상기 리소스를 이용하도록 허용되는지의 여부를 판정하는 단계; 및상기 복수의 클라이언트 중 또 다른 클라이언트가 하나의 상기 리소스를 이용하도록 허용된 것으로 판정되는 경우, 상기 클라이언트에 의해, 또 다른 상기 요청을 송신하지 않고서 또 다른 상기 복수의 응답을 대기하는 단계를 포함하는 방법.
- 제4항에 있어서,상기 레플리커 각각은 큐를 포함하며;상기 복수의 클라이언트 중 어느 것도 하나의 상기 리소스를 이용하도록 허용되지 않은 경우, 적어도 하나의 상기 클라이언트에 의해,상기 복수의 논리 레플리커에 전달하고;상기 복수의 논리 레플리커로 하여금 개개의 상기 큐로부터 또 다른 상기 복수의 응답을 형성하게 하는 항복 메시지(yield message)를 형성하는 단계를 포함하는 방법.
- 제4항에 있어서,상기 복수의 리소스는 DHT(Distributed Hash Table)를 이용하여 분할되고;상기 DHT는 상기 복수의 리소스를 복수의 버킷으로 분할하고,상기 복수의 버킷은 피어-투-피어 네트워크에서 복수의 컴퓨팅 장치에 의해 제공되며,상기 복수의 컴퓨팅 장치는 장애 극복(failover) 기능을 제공하여, 개개의 상기 버킷을 제공하는 하나의 상기 컴퓨팅 장치가 상기 복수의 클라이언트에 이용될 수 없는 경우, 개개의 상기 버킷이 또 다른 상기 컴퓨팅 장치에 의해 이용될 수 있게 하는 방법.
- 복수의 클라이언트의 각각에서, 복수의 논리 레플리커에 전달하기 위한 복수의 리소스 중 하나에 대한 요청을 형성하는 단계;상기 복수의 클라이언트에서, 상기 복수의 논리 레플리커부터 복수의 응답을 수신하는 단계;상기 클라이언트 각각에서, 상기 복수의 응답을 이용하여, 상기 복수의 클라이언트 중 하나의 클라이언트가 하나의 상기 리소스를 이용하도록 허용되는지의 여부를 판정하는 단계; 및상기 복수의 클라이언트 중 어느 것도 하나의 상기 리소스를 이용하도록 허용되지 않은 경우, 적어도 하나의 상기 클라이언트에 의해,상기 복수의 논리 레플리커 중 하나 이상의 논리 레플리커에 전달하고;하나 이상의 상기 논리 레플리커의 각각으로 하여금 하나 이상의 상기 클라이언트로부터 수신된 이전(previous) 요청들을 저장하는 개개의 큐로부터 또 다른 상기 응답을 형성하게 하는 항복 메시지를 형성하는 단계를 포함하는 방법.
- 제7항에 있어서,상기 응답 각각은, 개개의 상기 논리 레플리커가 상기 복수의 클라이언트 중 하나와 배타적으로 연관되어 있는지의 여부를 식별하도록 구성되고,상기 큐에서의 상기 이전 요청들의 각각은, 개개의 상기 논리 레플리커에 의해 상기 이전 요청이 수신된 때에 따라 조직화되며,상기 항복 메시지는, 하나 이상의 상기 논리 레플리커로 하여금, 개개의 상기 큐에서의 최초의 상기 이전 요청에 기초하여, 그 외의 상기 응답에서의 소유권을 식별하게 하는 방법.
- 컴퓨터상에서 실행될 경우, 제1항 내지 제8항 중 어느 한 항에 기재된 방법을 수행할 것을 상기 컴퓨터에 지시하는 컴퓨터 실행 가능 명령어들을 포함하는 프로그램을 기록한 하나 이상의 컴퓨터 판독 가능 기록 매체.
- 쿼럼 컨센서스(quorum consensus) 프로토콜을 이용하여 리소스 액세스를 허용하는 논리 레플리커들을 포함하고,상기 쿼럼 컨센서스 프로토콜은 상기 논리 레플리커들의 쿼럼과 배타적으로 연관되어 있는 클라이언트에의 리소스 액세스를 허용하는 데 이용되는 컴퓨팅 장치들의 피어-투-피어 네트워크.
- 제10항에 있어서,상기 논리 레플리커 각각은, 리소스 액세스를 위한 요청에 대한 응답을 수신하기 위해 예상 대기 시간을 클라이언트에 제공하는 알려진(informed) 백오프 메커니즘을 이용하고;상기 예상 대기 시간은, 상기 클라이언트가 상기 요청을 재송신하기 전에 대기해야 하는 시간의 양을 정의하는 컴퓨팅 장치들의 피어-투-피어 네트워크.
- 시스템으로서,네트워크;상기 네트워크에 통신 가능하게 연결되어 있는 복수의 클라이언트; 및상기 네트워트에 통신 가능하게 연결되어 있으며, 복수의 논리 레플리커를 포함하는 복수의 컴퓨팅 장치를 포함하며,상기 논리 레플리커 각각은,임의의 특정 시간에서 상기 복수의 클라이언트 중 임의의 클라이언트와 배타적으로 연관되도록 구성되고;하나의 상기 클라이언트로부터 요청이 수신될 때에 상기 논리 레플리커가 또 다른 상기 클라이언트와 배타적으로 연관되어 있는 경우, 리소스에 액세스하기 위한 상기 클라이언트로부터의 요청을 저장하는 큐를 포함하며;상기 논리 레플리커 중 특정 논리 레플리커에 의해, 상기 복수의 클라이언트 중 제1 클라이언트로부터의 요청을 수신할 때에,상기 특정 논리 레플리커가 상기 복수의 클라이언트 중 제2 클라이언트와 배타적으로 연관되어 있는 경우, 상기 요청은 상기 특정 논리 레플리커의 큐에 저장되며;상기 특정 논리 레플리커가 상기 복수의 클라이언트 중 어떠한 클라이언트와도 배타적으로 연관되어 있지 않은 경우, 상기 특정 논리 레플리커와 상기 제1 클라이언트 간에 배타적 연관이 설정되는 시스템.
- 제12항에 있어서,상기 논리 레플리커 각각은, 하나의 상기 클라이언트가 상기 논리 레플리커를 소유하는 때를 식별하는, 상기 요청에 대한 응답을 형성하도록 더 구성되고,상기 클라이언트 각각은 상기 응답 각각으로부터, 상기 복수의 클라이언트 중 하나의 클라이언트가 하나의 상기 분할된 리소스를 이용하도록 허용되는지의 여부를 판정하도록 구성되며,하나의 상기 클라이언트가 상기 복수의 논리 레플리커의 쿼럼과 배타적으로 관련되는 경우에 허가가 획득되는 시스템.
- 제12항에 있어서,각각의 상기 논리 레플리커는, 상기 하나의 클라이언트가 상기 논리 레플리커와 배타적으로 연관되어 있는지의 여부를 식별하는, 상기 요청에 대한 응답을 형성하도록 더 구성되고;상기 응답 각각은, 각각의 상기 클라이언트에 의해 상기 클라이언트가 하나의 상기 분할된 리소스에 액세스하도록 허용되는지의 여부를 판정하기 위한 것이며, 만약 허용되지 않은 경우, 상기 클라이언트는 또 다른 상기 응답을 대기하는 시스템.
- 시스템으로서,리소스에 대한 복수의 요청을 형성하는 수단 - 상기 형성하는 수단은 복수의 클라이언트를 포함함 - ;상기 형성하는 수단을 통신 가능한 연결에 의해 네트워킹하는 수단; 및상기 리소스를 제공하는 수단을 포함하며,상기 제공하는 수단은,상기 네트워킹하는 수단에 통신 가능하게 연결되며, 또한,복수의 논리 레플리커 수단 - 상기 복수의 논리 레플리커 수단은, 형성하는 수단 중 어느 것이 개개의 상기 논리 레플리커 수단을 소유하는지를 식별하는, 상기 복수의 요청들 각각에 대한 응답을 형성하고, 하나 이상의 상기 요청을 저장하기 위한 것임 - ;피어-투-피어 네트워크를 형성하기 위해 통신 가능하게 연결되어 있는 복수의 컴퓨팅 장치; 및DHT(Distributed Hash Table)를 포함하는 시스템.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US54745704P | 2004-02-25 | 2004-02-25 | |
US60/547,457 | 2004-02-25 | ||
US10/886,794 | 2004-07-08 | ||
US10/886,794 US7526672B2 (en) | 2004-02-25 | 2004-07-08 | Mutual exclusion techniques in a dynamic peer-to-peer environment |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060043196A KR20060043196A (ko) | 2006-05-15 |
KR101120844B1 true KR101120844B1 (ko) | 2012-03-15 |
Family
ID=34864594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050016148A KR101120844B1 (ko) | 2004-02-25 | 2005-02-25 | 동적 피어-투-피어 환경에서의 상호 배제 기술 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7526672B2 (ko) |
EP (1) | EP1571801A3 (ko) |
JP (1) | JP4837929B2 (ko) |
KR (1) | KR101120844B1 (ko) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7849303B2 (en) * | 2005-02-22 | 2010-12-07 | Microsoft Corporation | Peer-to-peer network information storage |
US8365301B2 (en) * | 2005-02-22 | 2013-01-29 | Microsoft Corporation | Peer-to-peer network communication |
TWI416901B (zh) * | 2005-11-30 | 2013-11-21 | Ibm | 故障容忍之異動處理系統 |
US20070143446A1 (en) * | 2005-12-21 | 2007-06-21 | Morris Robert P | Methods, systems, and computer program products for installing an application from one peer to another including application configuration settings and data |
JPWO2007091480A1 (ja) * | 2006-02-06 | 2009-07-02 | パナソニック株式会社 | Avサーバ機器及びコネクション管理方法 |
US8041784B1 (en) * | 2006-06-27 | 2011-10-18 | Qurio Holdings, Inc. | Redundant hybrid P2P content sharing |
US8028019B2 (en) * | 2007-02-28 | 2011-09-27 | Solid State Networks, Inc. | Methods and apparatus for data transfer in networks using distributed file location indices |
US7984158B2 (en) * | 2007-03-20 | 2011-07-19 | Microsoft Corporation | Web service for coordinating actions of clients |
ATE510441T1 (de) * | 2007-08-09 | 2011-06-15 | Nokia Siemens Networks Oy | Mobiles kommunikationsendgerät, kommunikationsstation, kommunikationsnetzwerk und kommunikationsverfahren |
JP5171167B2 (ja) * | 2007-09-05 | 2013-03-27 | キヤノン株式会社 | 通信パラメータの設定処理を行う通信装置、当該通信装置の制御方法、並びにコンピュータプログラム |
US20090144220A1 (en) * | 2007-11-30 | 2009-06-04 | Yahoo! Inc. | System for storing distributed hashtables |
US20090144338A1 (en) * | 2007-11-30 | 2009-06-04 | Yahoo! Inc. | Asynchronously replicated database system using dynamic mastership |
US20100174863A1 (en) * | 2007-11-30 | 2010-07-08 | Yahoo! Inc. | System for providing scalable in-memory caching for a distributed database |
US20090144333A1 (en) * | 2007-11-30 | 2009-06-04 | Yahoo! Inc. | System for maintaining a database |
JP5255654B2 (ja) * | 2008-01-10 | 2013-08-07 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | 多方向ピアツーピアメディアストリーミング |
US7937482B1 (en) * | 2008-03-27 | 2011-05-03 | Amazon Technologies, Inc. | Scalable consensus protocol |
US8296398B2 (en) * | 2008-04-29 | 2012-10-23 | Overland Storage, Inc. | Peer-to-peer redundant file server system and methods |
US7992037B2 (en) * | 2008-09-11 | 2011-08-02 | Nec Laboratories America, Inc. | Scalable secondary storage systems and methods |
JP5168055B2 (ja) * | 2008-09-26 | 2013-03-21 | ブラザー工業株式会社 | 通信システム、端末装置及びコンテンツ情報取得方法 |
JP5445177B2 (ja) * | 2010-01-28 | 2014-03-19 | 富士通株式会社 | 確定クロック判定プログラム及び方法、並びにノード装置 |
US20110225121A1 (en) * | 2010-03-11 | 2011-09-15 | Yahoo! Inc. | System for maintaining a distributed database using constraints |
US20110225120A1 (en) * | 2010-03-11 | 2011-09-15 | Yahoo! Inc. | System for maintaining a distributed database using leases |
TWI464580B (zh) | 2012-12-24 | 2014-12-11 | Ind Tech Res Inst | 資料儲存方法、採用此方法的資料儲存系統及需求節點 |
SG10202010720VA (en) | 2016-04-29 | 2020-12-30 | Nchain Holdings Ltd | Implementing logic gate functionality using a blockchain |
GB201607477D0 (en) * | 2016-04-29 | 2016-06-15 | Eitc Holdings Ltd | A method and system for controlling the performance of a contract using a distributed hash table and a peer to peer distributed ledger |
JP7124384B2 (ja) * | 2018-03-29 | 2022-08-24 | 日本電気株式会社 | 電文保証システムおよび電文保証方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998058330A2 (en) * | 1997-06-16 | 1998-12-23 | Telefonaktiebolaget Lm Ericsson | Lingering locks for replicated data objects |
WO2004012061A2 (en) * | 2002-07-29 | 2004-02-05 | Eternal Systems, Inc. | Consistent message ordering for semi-active and passive replication |
WO2004061677A2 (en) * | 2002-12-19 | 2004-07-22 | Intel Corporation | Speculative distributed conflict resolution for a cache coherency protocol |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5553298A (en) * | 1994-04-14 | 1996-09-03 | Merryman, Deceased; Philip I. | Method and apparatus for mutual exclusion in self-directed distributed systems |
JPH0981438A (ja) * | 1995-09-20 | 1997-03-28 | Nec Corp | クライアントサーバシステムにおける自動排他制御システム |
JP4634547B2 (ja) * | 1998-06-30 | 2011-02-16 | 株式会社東芝 | リアルタイム情報配信方法 |
US6178441B1 (en) * | 1998-09-21 | 2001-01-23 | International Business Machines Corporation | Method and system in a computer network for the reliable and consistent ordering of client requests |
US6466978B1 (en) * | 1999-07-28 | 2002-10-15 | Matsushita Electric Industrial Co., Ltd. | Multimedia file systems using file managers located on clients for managing network attached storage devices |
US7133891B1 (en) * | 2000-05-31 | 2006-11-07 | International Business Machines Corporation | Method, system and program products for automatically connecting a client to a server of a replicated group of servers |
US7155524B1 (en) * | 2000-12-04 | 2006-12-26 | Lucent Technologies Inc. | Backoff protocols and methods for distributed mutual exclusion and ordering |
WO2003083614A2 (en) * | 2002-03-25 | 2003-10-09 | Eternal Systems, Inc. | Transparent consistent active replication of multithreaded application programs |
-
2004
- 2004-07-08 US US10/886,794 patent/US7526672B2/en active Active
-
2005
- 2005-02-16 EP EP05101151A patent/EP1571801A3/en not_active Withdrawn
- 2005-02-22 JP JP2005045429A patent/JP4837929B2/ja not_active Expired - Fee Related
- 2005-02-25 KR KR1020050016148A patent/KR101120844B1/ko not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998058330A2 (en) * | 1997-06-16 | 1998-12-23 | Telefonaktiebolaget Lm Ericsson | Lingering locks for replicated data objects |
WO2004012061A2 (en) * | 2002-07-29 | 2004-02-05 | Eternal Systems, Inc. | Consistent message ordering for semi-active and passive replication |
WO2004061677A2 (en) * | 2002-12-19 | 2004-07-22 | Intel Corporation | Speculative distributed conflict resolution for a cache coherency protocol |
Non-Patent Citations (1)
Title |
---|
논문1:ACM |
Also Published As
Publication number | Publication date |
---|---|
JP2005276181A (ja) | 2005-10-06 |
EP1571801A3 (en) | 2011-03-02 |
US20050188085A1 (en) | 2005-08-25 |
EP1571801A2 (en) | 2005-09-07 |
KR20060043196A (ko) | 2006-05-15 |
US7526672B2 (en) | 2009-04-28 |
JP4837929B2 (ja) | 2011-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101120844B1 (ko) | 동적 피어-투-피어 환경에서의 상호 배제 기술 | |
US6889253B2 (en) | Cluster resource action in clustered computer system incorporation prepare operation | |
JP6059216B2 (ja) | 分散構成管理のための方法および装置 | |
JP6334643B2 (ja) | Smb2スケールアウト | |
RU2408064C2 (ru) | Маршрутизация в одноранговых сетях | |
KR101905198B1 (ko) | 분산 데이터 스토리지 | |
CN102035886B (zh) | 联盟基础结构内的一致性 | |
US5802062A (en) | Preventing conflicts in distributed systems | |
US8856091B2 (en) | Method and apparatus for sequencing transactions globally in distributed database cluster | |
US7478400B1 (en) | Efficient distributed transaction protocol for a distributed file sharing system | |
EP2119127A1 (en) | Conflict resolution for multi-master synchronization of data for distributed devices | |
US20090077036A1 (en) | Propagating a query in a federated database | |
US8068443B2 (en) | Using distributed timers in an overlay network | |
JP2010541077A (ja) | 同期データおよびメタデータの交換 | |
CN110663031A (zh) | 分布式存储网络 | |
Ekenstam et al. | The Bengal database replication system | |
CN108462737B (zh) | 基于批处理和流水线的分层数据一致性协议优化方法 | |
CN100581109C (zh) | 动态对等网络环境中的互斥***和方法 | |
Shafaat | Partition tolerance and data consistency in structured overlay networks | |
Gonçalves | SconeKV: Strongly CONsistEnt Key-Value Store | |
JP2005250753A (ja) | 意味情報ネットワークを用いたファイル共有システムとファイル共有方法、並びにプログラム | |
US8682976B2 (en) | Fault-tolerance mechanism optimized for peer-to-peer network | |
Frolund et al. | Scalable state replication with weak consistency | |
Klappenecker et al. | Quorum-based dynamic regular registers in systems with churn | |
JP2006107118A (ja) | P2p環境におけるビザンチン耐故障ファイル共有の応答高速化方法 |
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 | ||
LAPS | Lapse due to unpaid annual fee |