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 雜湊方式是最常見的資料分布方式,其方法是按照資料的某一特徵計算雜湊值,並將雜湊值與機器中的機器建立對映關係,從而將不同雜湊值的資料分布到不同的機器上。所謂資料...