2012-02-12 62 views
2

我今天早上正在爲一個寵物項目設置一個新工具,並意識到每種SaaS工具都有一個特定的模式:發件人代理。SaaS代理模式

即我有我的web應用程序,但它不能與數據庫層進行交談(當然也不應該),所以有一個運行在門控網絡內的代理髮布到webapp。

但有我失蹤

編輯一個更好的辦法:讓我定義我的條件更好的例子。 ServerDensity是我們使用的監控工具。對於我想要監控的每個專業設備,我編寫一個發件人代理(即通過HTTP發佈SD更新的插件腳本),因爲SD無法直接與我的數據庫進行通信。

我意識到這個問題可以歸結爲RPC問題。

回答

2

讓我先解決您提出的前提:「......每一個SaaS工具都遵循一種特定模式:發件人代理」。我希望你能把我引用到本聲明的來源。根據我的SaaS經驗,我從來沒有聽說過這種模式。

那麼,誠實地說,「發件人代理」聽起來像「業務組件」或「服務器內核」一樣廣泛和模糊。

我有我的web應用程序,但它不能跟數據庫層(也不應該 當然不是,)

你不是在比較蘋果和蘋果在這裏。 Webapp是,數據庫是一個層。 Webapp層必須與數據庫層交談。 Webapp可能有不同的,並且webapp中的持久層將與數據庫層進行通信。

...所以有一個代理運行在我的門控網絡中,發佈 到webapp。

這使得它聽起來像webapp是一個沒有生命的雕像,而一個經紀人是一個雕塑家誰是在它周圍跑來跑去,並投擲大塊的粘土上。 Webapp正在接收來自客戶端的請求,查詢持久層(可能是緩存)併發迴響應。無論您使用哪種代理,都會將數據發佈到持久性或排隊存儲,而不是Web應用程序本身。

在層與層閱讀起來,它會幫助你更好地理解web應用和SaaS模式:What's the difference between "Layers" and "Tiers"?

更新

謝謝你的澄清,這顯著變化問題。你在做什麼聽起來很合理。您在特定系統的限制範圍內工作,並且必須滿足插件合同。如果合同規定必須是HTTP POST,那麼這就是你必須做的。

關於如何做到這一點,有幾十種方法。下面是幾個:

  • 的藥劑推事件服務器事件發生時
  • 的情況下,代理商可以把太多的壓力在服務器上,代理(S)推動事件的隊列。隊列,然後由專門的排空和節流,將讀取你的數據庫,推動事件的服務器進程
  • 調度進程(守護進程)以一定的間隔讀取數據庫和更新推到服務器
+0

這可能不是官方的「四人幫」模式,但它存在於「戰壕」中。如果你願意的話,也許可以作爲一種調停者/觀察者。請參閱我上面編輯的示例,瞭解我實際上在問什麼。 – 2012-02-13 16:49:20