실시간 분산 객체
Live distributed objectLive distributed object(또는 peer-to-peer) 프로토콜의 실행 인스턴스를 말하며, 개체 지향적 관점에서 볼 때, 뚜렷한 정체성을 가지고 있고, 실행의 내부 상태와 스레드를 캡슐화할 수 있으며, 외부적으로 잘 정의된 행동을 보이는 개체로서, 분산 다중 당사자(또는 피어 투 피어) 프로토콜의 실행 인스턴스를 말한다.
주요 개념
라이브 분산 객체에 적용되는 키 프로그래밍 언어 개념은 다음과 같이 정의된다.
- 정체성.실시간 분산 객체의 ID는 동일한 분산 프로토콜의 인스턴스 간에 차별화되는 동일한 요인에 의해 결정된다.개체는 물리적 컴퓨터의 집합에서 물리적으로 실행되며 상호 통신에 관여하는 소프트웨어 구성요소 그룹으로 구성되며, 각각 멀티캐스트 그룹의 이름, 게시-구독 항목의 식별자, 멤버십 세르의 ID와 같은 동일한 필수 매개변수의 집합으로 분산 프로토콜 코드를 실행한다.악덕 등그러므로 예를 들어, 게시-구독 채널과 멀티캐스트 그룹은 라이브 분산 객체의 예들이다. 각 채널 또는 그룹에 대해, 그룹 내의 채널 또는 멀티캐스트에 게시된 데이터를 송신, 전달 또는 수신하는 모든 컴퓨터 사이에서 실행 중인 분산 프로토콜의 단일 인스턴스가 존재한다.이 경우 객체의 정체성은 채널이나 그룹의 식별자에 의해 결정되며, 주어진 채널이나 그룹을 제공하고 제어하며 관리하는 분산 시스템의 정체성을 검증한다.멀티캐스트의 경우, 예를 들어, 시스템의 정체성은 멤버십 서비스(멀티캐스트 그룹의 멤버십을 관리하는 실체)의 주소로 결정될 수 있다.
- 프록시(반복).라이브 객체의 프록시 또는 복제본은 라이브 객체의 분산 프로토콜 실행에 관련된 소프트웨어 구성요소 인스턴스 중 하나이다.따라서 개체는 통신에 종사하는 대리점 집단으로, 어떤 분산 상태를 공동으로 유지하고, 그들의 운영을 조정하는 것으로 대안으로 정의될 수 있다.프록시라는 용어는 단일 소프트웨어 구성요소가 그 자체로 개체를 구성하는 것이 아니라 애플리케이션이 컴퓨터 집합에 걸쳐 있는 특정 기능이나 동작에 접근할 수 있는 게이트웨이의 역할을 한다는 사실을 강조한다.이러한 의미에서 실시간 분산 객체 프록시 개념은 RPC, RMI 또는 의 개념을 일반화한다.NET 원격 클라이언트측 프록시 스텁
- 행동.실시간 분산 객체의 동작은 해당 프록시가 로컬 런타임 환경과 관여할 수 있는 가능한 외부 상호작용 패턴 집합으로 특징지어진다.이러한 상호작용은 명시적 사건(메시지)의 교환으로 모델링된다.
- 상태. 활성 분산 개체의 상태는 해당 프록시의 모든 내부, 로컬 상태의 합으로 정의된다.정의에 의해, 그것은 분배되고 복제된다.개체 상태의 서로 다른 복제본은 프로토콜 의미에 따라 강하게 또는 약하게만 일관될 수 있다. 합의 프로토콜의 예는 그것의 복제본의 상태를 강하게 일관되게 하는 반면, 지도자 선거 프로토콜의 예는 약하게 일관성이 없는 상태를 가질 것이다.이러한 의미에서 라이브 분산 객체라는 용어는 복제된 객체의 개념을 일반화한다. 후자는 팩소스, 가상 동기화 또는 상태 시스템 복제와 같은 프로토콜을 사용하여 복제본의 내부 상태 간에 강력한 일관성을 달성하는 특정 유형의 라이브 분산 객체다.활선 분산 객체의 상태는 동적 개념으로 이해되어야 한다: 주어진 시간에 주어진 장소에 위치한 특정 값이 아니라 가치 흐름의 점(또는 일관된 절단)으로 이해되어야 한다.예를 들어, 지도자 선거 객체의 외부 가시적 상태는 현재 선출된 지도자의 정체성으로 정의될 것이다.ID는 특정 위치에 저장되지 않고, 오히려 네트워크 전체에 분산된 서로 다른 기계에서 이 프로토콜을 사용하는 응용 프로그램의 인스턴스들에 의해 동시에 생성되고, 동시에 이 프로토콜을 실행하는 대리점에 의해 선출된 (x) 형식의 메시지 스트림으로 구체화된다.
- 인터페이스(끝점)라이브 분산 객체의 인터페이스는 그것의 프록시에 의해 노출되는 인터페이스의 종류에 의해 정의된다; 이것들은 이벤트 채널과 다양한 유형의 그래픽 사용자 인터페이스를 포함할 수 있다.프록시에 의해 노출된 인터페이스를 라이브 분산 객체의 엔드포인트라고 한다.엔드포인트 인스턴스라는 용어는 단일 특정 프록시에 의해 노출된 단일 특정 이벤트 채널 또는 사용자 인터페이스를 가리킨다.라이브 객체가 특정 엔드포인트를 노출한다는 것은 각 프록시가 이 엔드포인트의 인스턴스를 로컬 환경에 노출하고 각 엔드포인트 인스턴스가 동일한 유형의 이벤트를 전송(또는 동일한 유형의 그래픽 디스플레이에 바인딩)한다는 것을 의미한다.
- 참조.라이브 객체에 대한 참조는 해당 프록시를 구성하기 위한 전체 직렬화 및 휴대용 지침 집합이다.참조를 무시한다는 것은 특정 컴퓨터에서 이 지침을 로컬로 구문 분석하여 라이브 객체의 실행 프록시를 생성하는 것을 의미한다.이러한 방식으로 정의된 라이브 오브젝트 참조는 Java 참조, C/C++ 포인터 또는 웹 서비스의 WSDL 설명과 동일한 역할을 수행하며, 주어진 오브젝트를 찾아 상호 작용하기에 충분한 완전한 정보를 포함하고 있다.라이브 분산 객체는 특정 장소에 상주하지 않을 수 있으므로(동적으로 변화하는 컴퓨터 집합에 걸쳐) 라이브 분산 객체의 참조에 포함된 정보는 주소로만 제한될 수 없다.개체가 어떤 종류의 전역 고유 식별자에 의해 식별되는 경우(게시 구독 주제 또는 멀티캐스트 그룹의 경우일 수 있음), 참조는 적절한 이름 확인 개체에 대한 참조를 재귀적으로 포함시킴으로써 이 식별자가 해결되는 방법을 지정해야 한다.
- 유형. 라이브 분산 객체의 유형은 객체와 외부 상호작용의 패턴을 결정한다. 객체의 프록시에 의해 노출된 엔드포인트 및 그래픽 사용자 인터페이스의 유형과 엔드포인트에서 발생할 수 있는 이벤트 패턴에 의해 결정된다.개체 유형이 이벤트 패턴에 배치하는 제약조건은 네트워크 전체에 걸쳐 있을 수 있다.예를 들어, 타입 원자 멀티캐스트는 폼 deliver(x)의 이벤트가 하나의 프록시에 의해 생성되는 경우, 유사한 이벤트가 결국 모든 비 오류 프록시(충돌되지 않는 컴퓨터에서 실행되며, 실행을 중단하지 않거나 프로토콜에서 제외되는 프록시, 정밀한 정의가 다를 수 있음)에 의해 생성되어야 한다고 지정할 수 있다.자바와 유사한 언어의 유형들이 그렇듯이, 동일한 유형의 매우 다른 구현들이 많이 존재할 수 있다.따라서 예를 들어, 원자 멀티캐스트에 대한 동작 특성은 가상 동기화 또는 팍소스와 같은 분산 프로토콜의 인스턴스들에 의해 나타날 수 있다.
실시간 분산 객체의 의미론과 동작은 분산된 데이터 흐름의 관점에서 특징지어질 수 있다; 라이브 객체의 엔드포인트의 인스턴스에 나타나는 메시지나 이벤트의 집합은 분산된 데이터 흐름을 형성한다.[2]
역사
라이브 분산 객체의 개념의 기초가 되는 초기 아이디어는 적어도 1970년대 초에 개발된 배우 모델에서 유래한 객체 지향 환경, 프로그래밍 언어 내장 및 프로토콜 구성 프레임워크에 관한 풍부한 연구 기관의 영향을 받아왔다. 관련 선행 작업에 대한 포괄적인 논의는 다음과 같다.Krzystof Ostrowski의 박사학위 논문에서 d.[3]
라이브 분산 객체라는 용어는 2006년 가을 ICWS 컨퍼런스,[4][5] STC 컨퍼런스와 WA의 [6]레드몬드의 MSR 연구소에서 주어진 일련의 프레젠테이션에서 처음으로 비공식적으로 사용되었다가 2007년에 IEEE 인터넷 컴퓨팅 기사에서 공식적으로 정의되었다.[7]원래 이 용어는 데이터 센터의 서버에서 호스팅되는 것이 아니라 최종 사용자의 클라이언트 컴퓨터에 저장되며, 신뢰할 수 있는 멀티캐스트 프로토콜의 인스턴스에 의해 내부적으로 구동되는 동적 인터랙티브 웹 콘텐트의 유형을 지칭하기 위해 사용되었다.라이브(live)라는 단어는 표시된 정보가 역동적이고 상호작용적이며 사용자가 최근 업데이트한 내용을 반영하는 최신의 신선하고 생생한 라이브 콘텐츠를 나타낸다는 사실을 표현했다(사전 조립된 정적, 읽기 전용, 아카이브 콘텐츠와는 대조적으로).배포된 단어는 정보가 호스팅되지 않고, 데이터 센터의 서버에 저장되며, 오히려 최종 사용자 컴퓨터 사이에서 복제되고, 최종 사용자가 콘텐츠를 소비하는 최종 사용자에 의해 직접 생성될 수 있는 멀티캐스트 메시지 스트림을 통해 피어투피어 방식으로 업데이트된다는 사실을 표현했다.웹 개발의 맥락에서 살아있는 오브젝트 개념의 n은 Krzystof Ostrowski의 박사학위 논문에서 찾을 수 있다.[3]
위에 제시된 보다 일반적인 정의는 ECOP 회의에서 발표된 논문에서 2008년에 처음 제안되었다.[8]용어의 연장은 살아있는 물체를 다른 물체의 구성으로 모델링할 필요성에 의해 동기부여되었다. 이러한 의미에서 이 개념은 모든 것이 물체라는 획일적인 관점을 개척한 스몰토크와 서비스가 대상이라는 생각을 개척한 지니에서 영감을 받았다.라이브 분산 객체에 적용할 때, 이 관점은 상태 복제를 위해 내부적으로 사용되는 분산 다당 프로토콜의 인스턴스를 포함하는 구성 요소도 라이브 분산 객체로 모델링해야 한다는 것을 지시한다.균일성의 필요성은 라이브 분산 객체의 정의가 라이브 웹 콘텐츠, 메시지 스트림 및 분산 다당 프로토콜의 인스턴스 같은 개념을 통일해야 함을 의미한다.
ECOOP 논문에서 정의한 바와 같이 라이브 분산 객체 개념의 첫 번째 구현은 코넬 대학교에서 Krzystof Ostrowski가 개발한 라이브 분산 객체 플랫폼이었다.[8]플랫폼은 웹 페이지와 유사한 계층적 문서를 작성하기 위한 시각적, 드래그 앤 드롭 도구 세트를 제공하고 XML-시리얼화된 라이브 오브젝트 참조를 포함했다.사용자 인터페이스와 프로토콜 인스턴스를 대표하는 구성요소를 설계 양식에 끌어다 놓고 서로 연결함으로써 채팅 창, 공유 데스크톱, 다양한 종류의 매시업과 같은 시각적 콘텐츠를 구성할 수 있었다.창간 순간부터 마이크로소프트 오피스 문서에 라이브 분산 오브젝트를 내장하고,[10] 구글 맵 등 다양한 형태의 호스팅 콘텐츠를 지원하는 다양한 확장 기능이 개발됐다.[11]2009년 3월 현재, 플랫폼은 창작자에 의해 활발하게 개발되고 있다.[12][13] [14] [15] [16] [17] [18] [19]
참고 항목
참조
- ^ 오스트로스키, K, 비르만, K, 돌레프, D, 사코다, C. (2009)"분산 데이터 흐름 및 재귀적 위임을 통해 대형 시스템에서 신뢰할 수 있는 이벤트 스트림 구현", 제3차 ACM 국제 분산 이벤트 기반 시스템 컨퍼런스(DEBS 2009), 미국 내슈빌, TN, 2009년 7월 6~9일, http://www.cs.cornell.edu/~krzys/krzys_s2009.pdf.
- ^ 오스트로스키, K, 비르만, K, 돌레브, D. (2009)"분산된 데이터 흐름으로 실시간 분산 개체 프로그래밍", http://www.cs.cornell.edu/~krzys/krzys_oopsla2009.pdf.
- ^ a b 오스트로스키, K. (2008)"Live Distributed Objects" 박사학위논문, 코넬 대학교, http://hdl.handle.net/1813/10881.
- ^ Ostrowski, K, Birman, '대규모 시스템의 알림을 위한 확장 가능한 웹 서비스 아키텍처', IEEE 국제 웹 서비스 회의(ICWS 2006), 시카고, IL, 2006년 9월 http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4032049.
- ^ Ostrowski, K, Birman, '확장 가능한 신뢰를 위한 확장 가능한 그룹 커뮤니케이션 시스템', 확장 가능한 신뢰할 수 있는 컴퓨팅에 대한 첫 번째 ACM 워크샵(ACM STC 2006), Fairfax, VA, 2006년 11월 http://portal.acm.org/citation.cfm?id=1179477.
- ^ 오스트로스키, K, (2006년).QuickSilver 확장 가능한 멀티캐스트.2006년 11월, WA, 레드몬드 마이크로소프트 리서치.http://www.researchchannel.org/prog/displayevent.aspx?rID=7870&fID=2276.
- ^ 오스트로스키, K, 비르만, D. (2007년)"Live Distributed Objects: Active Web 활성화", IEEE Internet Computing, 2007년 11월–12월, 11:72-78, http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?isnumber=4376216&arnumber=4376231
- ^ a b 오스트로스키, K, 비르만, K, 돌레프, D, 안엔, J.(2008)."Programming with Live Distributed Objects", Proceedings of the 22nd European Conference on Object-Oriented Programming, Paphos, Cyprus, July 07–11, 2008, J. Vitek, Ed., Lecture Notes in Computer Science, vol. 5142, Springer-Verlag, Berlin, Heidelberg, 463-489, http://portal.acm.org/citation.cfm?id=1428508.1428536.
- ^ http://liveobjects.cs.cornell.edu
- ^ 안, J, 비르만, K, 오스트로우스키, K, 그리고 판 레네세, R. (2008)."ACM/IFIP/USENIX 미들웨어 '08 Conference Companion, Lewven, 벨기에, 2008년 12월 01-05년, Companion '08, ACM, 뉴욕, 뉴욕, 30-35, http://portal.acm.org/citation.cfm?id=1462735.1462743의 진행"
- ^ http://liveobjects.cs.cornell.edu/community/index.html[데드링크]
- ^ 오스트로스키, K, 비르만(2009년)."클라우드에서 라이브 매시업 콘텐츠 저장 및 액세스", 대규모 분산 시스템 및 미들웨어에 관한 제3차 ACM SIGOPS 국제 워크숍(LADIS 2009), 미국 MT, 빅 스카이. 2009년 10월 11일, http://www.cs.cornell.edu/~krzys/krzys_ladis 2009pdf.
- ^ A. A.와 Polepalli, S.(2008)."라이브 맵", http://liveobjects.cs.cornell.edu/community/1/index.html
- ^ 카시합 R, 나가라자파 D. (2008)."코넬 야후!라이브 오브젝트", http://liveobjects.cs.cornell.edu/community/2/index.html
- ^ 동, 엑스, 장, Z. (2008)"Live Objects with Flickr Web Service", http://liveobjects.cs.cornell.edu/community/3/index.html
- ^ 프라텍, U.S. (2008)"Gull Earth Live Object," http://liveobjects.cs.cornell.edu/community/4/index.html
- ^ Gupta, S, 그리고 Vora, H. (2008.ALGE (A Live Google 어스)", http://liveobjects.cs.cornell.edu/community/5/index.html
- ^ R. 마하얀과 S. (2008) 와칸카르."분산된 Google 어스", http://liveobjects.cs.cornell.edu/community/6/index.html
- ^ 와드화, A, 산카르, H, S. (2008) 수브라마니안."Live Google 어스 UI", http://liveobjects.cs.cornell.edu/community/7/index.html