DDS基础介绍
目錄
什么是DDS?
1. 分布式發(fā)布/訂閱體系架構(gòu)
2. 以中間件的形式提供通信服務(wù)
3. 強(qiáng)調(diào)以數(shù)據(jù)為中心
4. 提供多種QoS策略
4.1 可靠性(RELIABILITY)
4.2 基于時(shí)間過濾(TIME_BASED_FILTER)
4.3 接收端順序(DESTINATION_ORDER)
4.4 持久性(DURABILITY)
什么是DDS?
DDS(Data Distribution Service)數(shù)據(jù)分發(fā)服務(wù):采用分布式發(fā)布/訂閱體系架構(gòu),以中間件的形式提供通信服務(wù),強(qiáng)調(diào)以數(shù)據(jù)為中心,提供多種QoS策略,保障數(shù)據(jù)進(jìn)行實(shí)時(shí)、高效、靈活的分發(fā),可滿足各種分布式實(shí)時(shí)通信應(yīng)用需求。
1. 分布式發(fā)布/訂閱體系架構(gòu)
以上流程圖的解釋說明如下:
1.全局?jǐn)?shù)據(jù)空間是一個(gè)抽象的概念。
在實(shí)現(xiàn)時(shí),數(shù)據(jù)仍然是分別存儲在每一個(gè)應(yīng)用程序的本地空間中。
在系統(tǒng)運(yùn)行時(shí),數(shù)據(jù)是按需傳輸或存儲的,數(shù)據(jù)的發(fā)布者僅僅發(fā)送對方需要的數(shù)據(jù),訂閱者僅接受本地應(yīng)用程序中需要的數(shù)據(jù)。
2.實(shí)際場景中,每個(gè)應(yīng)用程序既可以是發(fā)布者又可以是訂閱者
2. 以中間件的形式提供通信服務(wù)
在分布式系統(tǒng)中,中間件是介于操作系統(tǒng)和應(yīng)用程序之間的軟件層,使系統(tǒng)的各個(gè)組件能夠更容易地通信和共享數(shù)據(jù)。中間件簡化了分布式系統(tǒng)的開發(fā),使軟件開發(fā)人員專注于應(yīng)用程序的業(yè)務(wù)本身,而不是花費(fèi)精力研究應(yīng)用程序和系統(tǒng)之間傳遞信息的機(jī)制。
DDS中間件是一個(gè)軟件層,它將應(yīng)用程序從操作系統(tǒng)、網(wǎng)絡(luò)傳輸和底層數(shù)據(jù)格式的細(xì)節(jié)中抽象出來。DDS提供多種編程語言的API,允許應(yīng)用程序跨操作系統(tǒng)、跨語言、跨處理器體系結(jié)構(gòu)交換信息。數(shù)據(jù)格式、發(fā)現(xiàn)匹配機(jī)制、連接方式、可靠性、網(wǎng)絡(luò)協(xié)議、傳輸方式選擇、QoS、安全性等底層細(xì)節(jié)由中間件管理。
3. 強(qiáng)調(diào)以數(shù)據(jù)為中心
以數(shù)據(jù)為中心(Data Centricity)的通信中,通信的應(yīng)用程序間的數(shù)據(jù)分發(fā)是重點(diǎn)。以數(shù)據(jù)為中心由數(shù)據(jù)的發(fā)布者和訂閱者組成,通信基于已命名的數(shù)據(jù)流,數(shù)據(jù)流從發(fā)布者向訂閱者傳送已知類型的數(shù)據(jù)。
簡單的解釋就是,只關(guān)心數(shù)據(jù),訂閱者只用關(guān)心接收訂閱的主題中的數(shù)據(jù)即可。
以數(shù)據(jù)為中心的本質(zhì)是DDS知道它存儲什么數(shù)據(jù),并控制如何共享這些數(shù)據(jù)。數(shù)據(jù)中心性保證應(yīng)用程序能夠理解其接收到的數(shù)據(jù),因而所有消息都包含應(yīng)用程序能夠理解其含義所需要的上下文信息。
使用傳統(tǒng)的以消息為中心的中間件的程序員必須編寫發(fā)送消息的代碼;而使用以數(shù)據(jù)為中心的中間件的時(shí),只需指定數(shù)據(jù)如何共享、何時(shí)共享,編寫少量代碼即可直接共享數(shù)據(jù)值。DDS使用戶無需在應(yīng)用程序的代碼中管理所有這些復(fù)雜的操作,而是直接為用戶實(shí)現(xiàn)了受控、托管、安全的數(shù)據(jù)共享。
不同的DDS域彼此完全獨(dú)立,跨DDS域無法進(jìn)行數(shù)據(jù)通信。
4. 提供多種QoS策略
QoS(Quality of Service)服務(wù)質(zhì)量:在一個(gè)真實(shí)系統(tǒng)中,并不是所有其他端點(diǎn)都需要另一個(gè)節(jié)點(diǎn)本地存儲中的所有內(nèi)容 ,DDS在提供最基礎(chǔ)的發(fā)布訂閱功能之外,還可以根據(jù)不同使用場景向用戶提供滿足對應(yīng)需求的服務(wù)。QoS有可靠性、持久性、緊迫性等,可單獨(dú)或組合使用
4.1 可靠性(RELIABILITY)
“盡力而為”模式(BEST_EFFORT_RELIABILITY_QOS):對樣本的可靠性沒有任何保證,在某些情況下可能會丟棄樣本。(通俗解釋:在外界環(huán)境不穩(wěn)定的時(shí)候,可能會導(dǎo)致丟包,但是DDS為了保證整體數(shù)據(jù)分發(fā)效率,不會重新分發(fā)丟包的數(shù)據(jù))
“可靠”模式(RELIABLE_RELIABILITY_QOS):該服務(wù)最終應(yīng)將所有值傳遞給合格的數(shù)據(jù)讀取器。(通俗解釋:萬一出現(xiàn)丟包現(xiàn)象,會重新分發(fā)數(shù)據(jù),保證訂閱者能夠收到)
重新分發(fā)數(shù)據(jù)表示:修復(fù)錯(cuò)誤并根據(jù)需要重新傳輸數(shù)據(jù)樣本
數(shù)據(jù)讀取器和主題的此策略的默認(rèn)值為“盡力而為”,而數(shù)據(jù)寫入器的默認(rèn)值為“可靠”。在創(chuàng)建數(shù)據(jù)寫入者和數(shù)據(jù)讀取者之間的關(guān)聯(lián)時(shí)會考慮此策略。 關(guān)聯(lián)雙方的值必須兼容才能創(chuàng)建關(guān)聯(lián)。 數(shù)據(jù)寫入器的可靠性類型必須大于或等于數(shù)據(jù)讀取器的值。
4.2 基于時(shí)間過濾(TIME_BASED_FILTER)
過濾出指定時(shí)間的數(shù)據(jù)
例如:某應(yīng)用會在循環(huán)一定時(shí)間周期時(shí)發(fā)布數(shù)據(jù),訂閱者只需要關(guān)注某一時(shí)間發(fā)布的數(shù)據(jù)
4.3 接收端順序(DESTINATION_ORDER)
在網(wǎng)絡(luò)抖動等情況下,確保訂閱者能夠按順序接受報(bào)文
例如:發(fā)送者發(fā)送:1 2 3 4 5
特殊情況導(dǎo)致亂序:3 2 1 4 5
需要確保訂閱者收到:1 2 3 4 5
4.4 持久性(DURABILITY)
訂閱者的應(yīng)用程序離線時(shí),先緩存歷史數(shù)據(jù)。當(dāng)訂閱者應(yīng)用程序上線時(shí),可以接收到緩存中的歷史數(shù)據(jù)
總結(jié)
- 上一篇: 验证控件的学习
- 下一篇: java copy-on-write_C