2010-08-26 25 views
5

對於政府合同,我們將建議建立一個交通監控體系結構。我們將有以下組件:我在這裏談論SOA嗎?

  • 視頻攝像機的設置圍繞感興趣的領域。攝像機將知道它們的位置和方向以及查看參數。
  • 可以查詢街道,建築物等的GIS地圖服務器。
  • 一種算法,用於處理原始視頻和街道位置信息並輸出汽車位置。
  • 另一種算法可獲取汽車位置和極低級別的街道信息,並提供有關哪些汽車異常行駛的信息。
  • 另一個數據庫隨着時間的推移會收集關於汽車位置和異常報告的信息,稍後可以查詢。
  • 在檔案數據庫和實時算法上建立了一個代理(或者更準確地說,一個門面),以便爲信息提供一個統一的接口。
  • 客戶端連接到代理服務器和街道服務器,並在屏幕上繪製交通狀況的各種表示形式。

我剛剛在學習什麼是SOA。這是面向服務架構SOA的理想人選嗎?我聽說SOA服務應該是無狀態的(或者只有RESTful服務?)我還聽說,將一個服務連接到下一個服務是不明智的,因爲它增加了隱藏的複雜性,並且您應該做某些事情使這種情況更好(一種「協調」?)。上面的服務似乎是模塊化和可重用的。例如,將會有大量的攝像機,各種類型的車輛檢測和異常算法,分佈式數據庫以及大量的客戶端。我需要具備處理事件的能力:例如,如果我想註冊一項服務並在有大卡車駛過這一點時收到通知。

如果這不是SOA的理想實現,那麼我應該在哪裏尋找。如果這對於SOA來說是理想的,那麼在設計時應該從哪裏開始? (而且我基本上是從閱讀Wikipedia的SOA頁面開始的。)有什麼好的案例研究可以在這裏看到?

回答

5

是的,SOA在這種情況下是理想的(複雜的,分佈式的系統,具有多種技術),但從它的聲音來看,您需要做更多的研究才能讓您瞭解這個概念。這不是一個艱難的概念,它實際上很簡單,但沒有一個規定的方法來做到這一點。我建議通過SOA case studies for similarly-sized projects,成功和失敗。

您提到了一個子系統的外觀。將相同的概念擴展到其他組件。例如。每項服務都是複雜子系統的門面。另外,我建議在你選擇的技術中實現幾個不同的Web服務,並抽象任意不同的子系統(數據庫應該是其中的一個)。然後編寫一個使用它們的客戶端。這樣做會給你很多實踐經驗和洞察力。

最後一個想法:SOA架構可能絆倒的一個領域是如果您必須在多個不同服務之間移動視頻數據。在移動大量數據或在非常大的數據集上執行批量事務時,SOA的無狀態,事務性質可能會帶來性能問題。您需要保持視頻本地化或實施後端子系統(作弊)以避免潛在的不良瓶頸。

+0

非常好的建議!謝謝。有一點可以說,在我的框架中有幾項服務不能無狀態(或者我誤解了這種情況下的無狀態方法)。例如,車輛定位服務將成爲視頻服務的客戶,並通過持續查看新的視頻幀來跟蹤汽車的位置(各種狀態)。也許重要的是每個服務都不能*保留客戶的狀態。我想我可以從這裏逃避。 – JnBrymn 2010-08-26 12:20:44

+0

如果我想讓服務跟蹤監聽者,並在新信息可用時通知他們該怎麼辦。這不代表客戶的服務保持狀態,但這意味着該服務是保持指向其客戶的指針。這會傷害什麼嗎? – JnBrymn 2010-08-26 14:10:11

+0

客戶和服務的耦合更緊密。客戶端可能處於脫機狀態,您必須決定在這種情況下服務應該做些什麼,放棄,忽略,重試或通知其他系統? – Kwebble 2010-08-26 14:36:08