分布式系統 資料分發服務(DDS)

2021-08-21 10:18:29 字數 2869 閱讀 4141

1. 簡介

dds是基於發布/訂閱模式的通訊模型。發布/訂閱中介軟體提供一種簡單、直觀的方式分發資料,它將建立和傳送資料(資料發布者(publisher))的軟體與接收和使用資料(資料訂閱者(subscriber))的軟體分離開。publihser簡單宣告其傳送意圖並發布資料。subscriber宣告其接收意圖,然後中介軟體自動傳送資料

2. 實現過程

應用程式使用api建立實體(物件),以此建立彼此間的發布/訂閱通訊。需要建立的主要實體包含:

– 域(domain)

– 域參與者(domainparticipant)

– 資料寫入者(datawriter)

– 發布者(publisher)

– 資料讀取者(datareader)

– 訂閱者(subscriber)

– 主題(topic)            

傳送方使用的物件被稱為publisher和datawriter,接收方使用的物件被稱為subscriber和datareader。

 應用程式使用datawriter傳送資料。datawriter與單獨主題相關聯,使用者可以在單獨應用程式中擁有多個datawriter和主題。另外,在單獨應用程式中,使用者可以為乙個特定的主題擁有超過乙個datawriter。

 publisher是乙個負責實際資料傳送的dcps物件。publisher擁有和管理datawriter。乙個datawriter僅可由乙個publisher擁有,而乙個publisher可以擁有多個datawriter,因此,相同的publisher可以為不同資料型別的很多不同主題傳送資料,當使用者**在datawriter上呼叫writer()方法時,資料樣本被傳送至網路上執行資料實際分發的publisher物件。

 應用程式使用datareader訪問dcps上接收的資料。乙個datareader關聯乙個單獨主題,使用者可以在乙個應用程式中擁有多個datareader和主題。另外,在單獨的應用程式中,使用者可以為乙個特定的主題擁有超過乙個datareader。

 subscriber是負責發布資料實際接收的dcps物件。subscriber擁有和管理datareader。乙個datareader只能由乙個單獨subscriber擁有,而乙個subscriber可以擁有很多datareader。因此,相同的subscriber可以為不同資料型別的很多不同主題接收資料。當資料被傳送至應用程式時,它首先由subscriber處理,資料樣本隨後被儲存在適當的datareader中。使用者**註冊乙個可在新資料到達時呼叫的***,或使用read()和take()方法積極輪詢datareader的新資料。

3. rti dds主要介面

1)dds初始化,建立域參與者

dds_returncode_t rti_dds_init(intdomainid);

2)資料寫入者初始化

dds_stringdatawriter*  rti_dds_create_datawriter(const char *topicname, const struct dds_datawriterlistener* listener = null);

3)資料讀取者初始化

dds_stringdatareader *  rti_dds_create_datareader(const char *topicname, const struct dds_datareaderlistener* listener = null);

4)字元流資料讀取者控制代碼獲取

dds_stringdatareader * rti_dds_stringdatareader_narrow(dds_datareader *);

5)資料發布

dds_returncode_t rti_dds_stringdata_publish(dds_stringdatawriter* self, const char*instance_data);

6)資料訂閱

dds_returncode_t  rti_dds_stringdata_subscribe(dds_stringdatareader*self, char* instance_data);

7)dds域參與者實體釋放

dds_returncode_t rti_dds_dispose();

4. vc工程配置

開啟vc工程屬性->配置屬性。

1)       c/c++ ->常規->附加包含目錄:

ø  $(nddshome)\include

ø  $(nddshome)\include\ndds

2)       c/c++ ->預處理器->預處理器定義:

debug模式:

ø  win32

ø  rti_win32

ø  _debug

ø  _console

release模式:

ø  win32

ø  rti_win32

ø  _console

ø  $(nddshome)\lib\i86win32vs2010

debug模式:

ø  nddsczd.lib

ø  nddscorezd.lib

ø  netapi32.lib

ø  advapi32.lib

ø  user32.lib

ø  ws2_32.lib

release模式:

ø  nddscz.lib

ø  nddscorez.lib

ø  netapi32.lib

ø  advapi32.lib

ø  user32.lib

ø  ws2_32.lib

5)       鏈結器->輸入->忽略特定預設庫

libcmtd

DDS 資料分發服務 學習記錄

官方文件的中文翻譯 已完成暫時跳過 直接看官方的文件不明所以,因為用到了其他的軟體,一點一點搜尋,探索如下例程參考 生成乙個vs 2008的 hello world 工程,親測可編譯,解釋幾點 在任意位置的資料夾下新建這兩個檔案 開啟windows命令列終端 cd 資料夾路徑 執行完命令檔案中會生成...

Dubbo分布式服務系統

dubbo是alibaba開源的分布式服務框架,它最大的特點是按照分層的方式來架構,使用這種方式可以使各個層之間解耦合 或者最大限度地鬆耦合 從服務模型的角度來看,dubbo採用的是一種非常簡單的模型,要麼是提供方提供服務,要麼是消費方消費服務,所以基於這一點可以抽象出服務提供方 provider ...

分布式系統 資料分布方式

分布式系統如何拆解輸入資料,將資料分發到不同的機器中。下面將介紹幾種不同的資料分布方式。color red b 一 雜湊方式 b color 雜湊方式是最常見的資料分布方式,其方法是按照資料的某一特徵計算雜湊值,並將雜湊值與機器中的機器建立對映關係,從而將不同雜湊值的資料分布到不同的機器上。所謂資料...