데이터 전송 서비스
Data Distribution Service![]() |
실시간 시스템용 Data Distribution Service(DDS; 데이터 배포 서비스)는 Object Management Group(OMG; 객체 관리 그룹)의 머신 투 머신(미들웨어 또는 접속 프레임워크라고도 함) 표준으로 퍼블리시-서브스크라이브 패턴을 사용하여 신뢰성, 고성능, 상호 운용성, 실시간, 확장 가능한 데이터 교환을 가능하게 하는 것을 목적으로 합니다.
DDS는 항공우주 및 방위, 항공 교통 관제, 자율 차량, 의료 기기, 로봇 공학, 발전, 시뮬레이션 및 테스트, 스마트 그리드 관리, 교통 시스템 및 실시간 데이터 교환이 필요한 기타 애플리케이션과 같은 애플리케이션의 요구사항을 해결합니다.
아키텍처
모델
DDS는 복잡한 네트워크 프로그래밍을 단순화하는 네트워킹 미들웨어입니다.노드간에 데이터, 이벤트 및 명령어를 송수신하기 위한 퍼블리시-서브스크라이브 패턴을 실장합니다.정보를 생성하는 노드(퍼블리셔)는 "토픽"(온도, 위치, 압력 등)을 생성하고 "샘플"을 게시합니다.DDS 는, 그 토픽에 관심이 있는 유저에게 샘플을 전달합니다.
DDS 는, 전송의 잡무를 처리합니다.메시지 어드레싱, 데이터 마샬링, 및 디마샬링(서브스크라이버가 퍼블리셔와 다른 플랫폼에 있는 경우), 전달, 플로우 제어, 재시도 등입니다.임의의 노드는 퍼블리셔, 서브스크라이버 또는 양쪽을 동시에 사용할 수 있습니다.
DDS 퍼블리시 서브스크라이브모델은 분산 어플리케이션의 [citation needed]복잡한 네트워크프로그래밍을 사실상 배제합니다.
DDS는 기본적인 퍼블리시-서브스크라이브 [citation needed]모델을 넘어서는 메커니즘을 지원합니다.주요 이점은 통신에 DDS를 사용하는 애플리케이션이 분리된다는 것입니다.상호 작용 처리에 필요한 설계 시간은 거의 없습니다.특히, 어플리케이션에는, 그 존재나 장소를 포함한, 그 외의 참가 애플리케이션에 관한 정보가 필요 없습니다.DDS는 다음과 같은 사용자 응용 프로그램의 개입 없이 메시지 전달을 투과적으로 처리합니다.
- 메시지를 수신할 사용자 결정
- 수신자가 있는 위치
- 메시지를 배달할 수 없는 경우
DDS를 사용하면 Quality of Service(QoS) 파라미터를 지정하여 검출 및 동작 메커니즘을 사전에 설정할 수 있습니다.DDS는 익명으로 메시지를 교환함으로써 분산된 애플리케이션을 단순화하고 모듈러형,[citation needed] 잘 구성된 프로그램을 장려합니다.또한 DDS는 프라이머리에 [citation needed]장애가 발생했을 경우 핫 스왑 용장 퍼블리셔를 자동으로 처리합니다.서브스크라이버는 항상 priority가 가장 높은 샘플이 취득됩니다.데이터는 아직 유효합니다(즉, 퍼블리셔가 지정한 유효기간이 만료되지 않았습니다).복구되면 자동으로 프라이머리로 전환됩니다.
상호 운용성
DDS의 독자 소프트웨어 구현과 오픈 소스 소프트웨어 구현을 모두 사용할 수 있습니다.여기에는 Application Programming Interface(API; 응용 프로그램프로그래밍 인터페이스)와 Ada, C++, C#, Java, Python, Scala, Lua, Pharo 및 Ruby 구현 라이브러리가 포함됩니다.
DDS 벤더는 2009년부터 [1][2][3][4][5][6]2013년까지 OMG Spring 기술 회의에서 상호 운용성 시연에 참여했습니다.
데모 중에 각 벤더는 쉐이프 데모라고 불리는 테스트 스위트를 사용하여 서로의 토픽을 공개하고 구독했습니다.예를 들어, 한 벤더는 도형에 대한 정보를 게시하고 다른 벤더는 토픽을 구독하여 자체 도형 디스플레이에 결과를 표시할 수 있습니다.각 벤더는 교대로 정보를 공개하고 다른 벤더는 구독합니다.데모를 가능하게 한 것은 DDS-I 또는 RTPS(Real-Time Publish-Subscribe) [7]프로토콜과 공통 모델 사용 계약입니다.
2009년 3월, 3개의 벤더가 2009년 1월부터 OMG 실시간 퍼블리시-구독 프로토콜 버전 2.1을 구현한 개별 독립 제품 간의 상호 운용성을 입증했습니다.데모에서는, 다른 OS 플랫폼(Microsoft Windows 및 Linux)에서 서로의 퍼블리셔와 서브 스크라이버를 검출해, 멀티 캐스트와 유니캐스트 네트워크 통신을 [1]서포트했습니다.
DDS 상호운용성 데모에서는 다음과 같은 시나리오를 사용했습니다.
- IP(Internet Protocol)를 사용한 네트워크에 대한 기본 연결
- 퍼블리셔 및 서브스크라이버 검출
- 요청자와 제공자 간의 Quality of Service(QoS) 호환성
- 지연 허용 네트워킹
- 여러 토픽과 토픽 인스턴스
- 토픽 독점 소유권
- 시간 및 지리적 토픽 데이터의 콘텐츠 필터링
역사
DDS 규격의 개발은 2001년에 시작되었다.소프트웨어 프레임워크 회사인 실시간 혁신(RTI)과 프랑스 방산 회사인 탈레스 그룹이 개발했다.2004년에 Object Management Group(OMG; 오브젝트 관리 그룹)[8]은 DDS 버전 1.0을 발표했습니다.버전 1.1은 2005년 [9]12월에, 1.2는 2007년 [10]1월에, 1.4는 2015년 [11]4월에 발행되었습니다.DDS는 특히 여러 미국 [12][13][14][15]특허의 적용을 받습니다.
DDS 사양에서는, 다음의 2개의 레벨의 인터페이스에 대해 설명하고 있습니다.
- 적절한 수신자에게 적절한 정보를 효율적으로 전달하는 것을 목적으로 하는 데이터 중심의 퍼블리시 서브스크라이브(DCPS) 레벨의 저하.
- 옵션인 Higher Data Local Reconstruction Layer(DLRL; 상위 데이터 로컬 재구성 레이어)로, DDS를 애플리케이션 레이어에 간단하게 통합할 수 있습니다.
기타 관련 표준은 최초 핵심 문서를 따릅니다.Real-Time Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol Specification은 한 벤더의 DDS 구현을 사용하여 토픽에 게시된 정보를 동일 또는 다른 벤더의 DDS 구현을 사용하는 한 명 이상의 가입자가 소비할 수 있도록 보장했습니다.이 사양은 DDS 커뮤니티를 대상으로 하고 있습니다만, 그 사용에 제한이 있는 것은 아닙니다.버전 2.0은 2008년 4월에, 버전 2.1은 2010년 11월에, 2.2는 2014년 9월에, 2.3은 2019년 [7]5월에 발행되었습니다.
DDS for Lightweight CCM(dds4ccm)은 비즈니스 로직과 비기능 속성을 분리하는 아키텍처 패턴을 제공합니다.2012년 확장에 [16]따라 스트림 지원이 추가되었습니다.Java 5 Language PSM for DDS는 Java 5 언어 바인딩을 정의했습니다.이 바인드는 DDS용 Platform Specific Model(PSM; 플랫폼 고유 모델)이라고 불립니다.DDS 사양의 Data-Centric Publish-Subscribe(DCPS; 데이터 중심 퍼블리시 서브스크라이브) 부분만을 지정하고 있습니다.또, DDS-XTypes 및 DDS-CCM에 의해서 도입된 DDS API를 포함합니다.DDS-PSM-Cxxx는 ISO/SM+[17]SM 언어를 정의합니다.C++ 프로그래머에게 [18]보다 자연스러운 DDS 프로그래밍을 위한 새로운 C++ API를 제공합니다.이 사양에서는 DDS-XType으로 지정된 Application Programming Interface(API; 응용 프로그램프로그래밍 인터페이스)의 매핑과 DDS-CCM으로 지정된Quality of Service(QoS; 서비스 품질) 프로파일에 액세스 할 수 있습니다.
DDS용 확장 및 동적 토픽 유형(DDS-XType)은 특정 데이터 구조로 토픽이 정의되는 데이터 중심 퍼블리시-구독 통신을 지원합니다.확장성을 높이기 위해 DDS 항목에서는 컴파일 시간 전에 정의된 데이터 유형이 사용되며 DDS 글로벌 데이터 공간 전체에서 사용됩니다.이 모델은 정적 유형 검사가 [19]유용한 경우에 적합합니다.Unified Modeling Language(UML; Unified Modeling [20]Language) 프로파일은 분석 및 설계 모델링의 일부로 DDS 도메인과 토픽을 지정합니다.또한 이 사양에서는 XML이나 OMG [21]IDL 등의 다른 언어로 유형을 설명하지 않고 객체를 퍼블리시 및 서브스크라이브하는 방법도 정의되어 있습니다.IDL(Interface Definition Language)은 2014년에 CORBA(Common Object Request Broker Architecture) 사양 제3장과는 별도로 지정되었습니다.이 IDL 3.5는 CORBA [22]3 규격과 호환되지만 CORBA와는 독립적으로 진화할 수 있도록 자체 사양으로 추출되었다.
언급되는 다른 프로토콜로는 DDS-XRCE(eXtremely Resource Constrainted Environments용 DDS)가 있습니다.이 규격 프로토콜은 마이크로컨트롤러와 DDS 네트워크와 같은 제한된 자원의 장치 간의 통신을 허용합니다.DDS 도메인 및 리모트프로시저 콜을 정의하는 DDS-RPC(RPC Over DDS)의 중간 서비스를 통한 토픽의 퍼블리시 및 서브스크라이브가 가능하게 됩니다.이것들은 쌍방향 요구/응답 통신을 제공하고 분산 서비스를 결정합니다.이것에 대해서는, 서비스 인터페이스를 사용해 자세하게 설명합니다.동기 메서드 호출과 비동기 메서드 호출도 모두 지원합니다.[24]
2015년 DDS 버전 1.4부터 옵션 DLRL 계층이 별도의 [25]사양으로 이동되었습니다.
「 」를 참조해 주세요.
- 미들웨어
- 오픈 아키텍처 컴퓨팅 환경
- Object Management Group(OMG; 객체 관리 그룹), 규격을 개발한 표준 기관
레퍼런스
- ^ a b Angelo Corsaro, Gerardo Pardo-Castellote and Clark Tucker (August 12, 2009). "DDS Interoperability Demo" (PDF). Object Management Group. Archived from the original (PDF) on September 15, 2011. Retrieved November 9, 2016.
- ^ "DDS Interoperability Demo December 2010" (PDF). Real-Time Innovations, Inc. December 11, 2010. Retrieved November 9, 2016.
- ^ 2011년 3월, https://community.rti.com/content/presentation/omg-dds-interoperability-demo-2011
- ^ 2012년 3월 https://community.rti.com/content/presentation/omg-dds-interoperability-demo-2012
- ^ 2013년 3월, http://www.slideshare.net/GerardoPardo/dds-interoperability-demo-2013-washington-dc
- ^ "DDS Interoperability Demonstration". video. Real-Time Innovations. December 14, 2010. Archived from the original on 2014-01-07. Retrieved November 9, 2016.
- ^ a b "The Real-time Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol Specification (DDSI-RTPS)". May 2019. Retrieved October 28, 2019.
- ^ "Data Distribution Service (DDS), Version 1.0". Object Management Group. December 2, 2004. Retrieved November 9, 2016.
- ^ "Data Distribution Service (DDS), Version 1.1". December 4, 2005. Retrieved November 9, 2016.
- ^ "Data Distribution Service (DDS), Version 1.2". January 1, 2007. Retrieved November 9, 2016.
- ^ "Data Distribution Service (DDS), Version 1.4". April 10, 2015. Retrieved November 9, 2016.
- ^ 미국 특허 US8874686
- ^ 미국 특허 US8671135
- ^ 미국 특허 US8150988
- ^ 미국 특허 US9015672
- ^ DDS for Lightweight CCM (dds4ccm), 버전 1.1, 정식/2012-02-01, 2012년 2월, http://www.omg.org/spec/dds4ccm/1.1/PDF/
- ^ 프로그래밍 언어 - C++, 2003년 10월 15일, ISO/IEC 14882, http://www.iso.org/iso/catalogue_detail.htm?csnumber=38110
- ^ DDS-PSM-Cxx: ISO/IEC C++ 2003 언어 DDS PSM, 버전 ptc/2011-01-02, 2011년 1월, http://www.omg.org/spec/DDS-PSM-Cxx/1.0/Beta1/PDF
- ^ DDS(DDS-XType), 1.0, 정식/2012-11-10, 2012년 11월, http://www.omg.org/spec/DDS-XTypes/1.0/PDF의 확장 가능한 동적 토픽 유형
- ^ 데이터 배포용 UML 프로파일버전: 1.0, http://www.omg.org/cgi-bin/doc?ptc/10-05-17.pdf
- ^ DDS-Java: Java 5 Language PSM for DDSVersion 1.0, ptc/2012-12-01, 2013년 3월 http://www.omg.org/spec/DDS-Java/1.0/Beta3/PDF
- ^ "Interface Definition Language (IDL), Version 3.5". OMG. March 1, 2014. Archived from the original on January 21, 2017. Retrieved November 9, 2016.
- ^ "About the DDS For Extremely Resource Constrained Environments Specification Version 1.0". www.omg.org. Retrieved 2021-03-12.
- ^ "About the RPC Over DDS Specification Version 1.0". www.omg.org. Retrieved 2021-03-12.
- ^ "DDS Data Local Reconstruction Layer (DDS-DLRL)". April 2015. Retrieved November 9, 2016.