0

我正在尋找適用於分佈式實時系統的中間件。這些要求非常簡單 - 帶有持久性存儲的發佈/訂閱鍵值存儲:持久存儲的發佈/訂閱中間件

  1. 發佈商將「數據項」發佈到分配給這些主題的訂閱者的主題。這些數據項不需要排隊,因爲只有最新版本是相關的(請考慮股票價格)。如果沒有訂戶,數據項應該保留以備後用(見2) - 只有最新版本,不排隊。
  2. 用戶可以隨時上線,他們需要立即從指定主題接收最新版本的數據項,然後在發生更新時收到更新。

那裏有什麼自然而然地實現了這種模式?迄今爲止我所見過的最好的是Redis,但它需要在每個方面進行兩次單獨的事務,在發佈者上編寫+發佈(以及訂閱+獲取訂閱者),這意味着它不是基本用例,並且不保證它不會錯過更新發生在這兩個電話之間。我知道的一個商業產品是Tibco ActiveSpaces,但理想地尋找開源和.NET或至少基於Windows的東西。

+0

爲什麼不存儲過時值非常重要?如果用戶數量有限,具有扇出行爲的常見隊列模式(每個用戶1個隊列)將可以正常工作。 –

回答

0

OMG's Data Distribution Service for Real-Time Systems(簡稱DDS)是一個標準的幾個實現,可以做你正在尋找。

您正在尋找的'持續數據'可以通過使用名爲'transient','transient_local'或'persistent'的正確Quality of Service設置來實現,具體取決於您是否希望數據的生命週期延長其來源的生命週期,甚至整個系統的生命週期。

「最後一個值」的語義是一種常見的用例和默認行爲,儘管如果需要,DDS可以存儲更多的內容。

如需更長時間的介紹,請查看this video