DDS(Data Distribution Service)란 Data Centric한 Publish-Subscribe 패턴 기반의 네트워크 커뮤니케이션 미들웨어이다
도메인이란 하나의 컨테이너로, Publisher와 Subscriber들은 이 컨테이너(도메인)를 골라서 네트워크에 참여할 수 있다.
도메인 내의 모든 참여자는 Topic이라는 단위로 데이터의 그룹을 만들고, 하나의 토픽에 대해 데이터를 Publish하면 도메인 내에 있는 Subscriber에게 전파되어 출판된 데이터를 수신하는 방식이다.
일반적인 Client-Server 구조와 비교해서 생각해보면 클라이언트는 자신이 연결할 서버의 위치를 알아야 연결하여 통신할 수 있지만 Publisher와 Subscriber은 데이터를 보내고 받을 때 상대방의 위치를 고려하지 않아도 통신이 가능하다는 차이점이 있다.
(DDS 내부적으로는 다른 참여자들의 위치를 관리하고있지만 사용자 측에서 고려할 필요가 없다는 의미)
OMG(Object Management Group)에서 DDS의 표준을 정의하고 있으며 현재의 최신 표준은 v1.4이고, 이 표준에 맞추어 개발된 구현체는 대표적으로 RTI의 Connext DDS, Opensplice, OpenDDS가 존재한다
이 중 Opensplice와 OpenDDS는 오픈소스 프로젝트이지만 Connext DDS 는 상용 솔루션이라 소스코드를 공개하지 않음
DDS의 표준 스펙은 DCPS와 DLRL이라는 두개의 인터페이스로 구성되어 있는데, DLRL은 DCPS의 상위 레벨 구현으로 optional 스펙임
Opensplice만 두개를 모두 구현하였고 OpenDDS는 DCPS만 제공한다.
OpenDDS는 P2P 방식의 Discovery 오버헤드를 줄이려는 시도인지 DCPSInfoRepo라는 도메인과 토픽 관련 정보를 저장하는 shared memory를 구현하여 제공한다.
모든 참여자들이 별도로 Broker process를 두고 이를 실행하는데, 데이터 흐름에는 관여하지 않고 토픽과 참여자 정보의 흐름만 DCPSInfoRepo에서 관리한다
다른 구현체에서는 없는 개념이라 OpenDDS-Only 배포환경에서 적합하다는데 기존의 Discovery와 어떻게, 어떤 차이가 발생하는지 알아볼 필요가 있을듯함
'Data Distribution Service' 카테고리의 다른 글
OpenDDS의 DCPS, Discovery Service 그리고 DCPSInfoRepo (1) | 2024.09.15 |
---|---|
OpenDDS 소스코드 빌드(컴파일)로 설치방법 (0) | 2018.08.01 |