2013-02-24 60 views
7

應用程序通信我已經探索在騾子網絡和得明白,應用到它們之間進行通信 - 即使他們在同一個騾子實例部署 - 他們將不得不使用TCP,HTTP或JMS傳輸。騾子國米 - 在同一個實例

虛擬機不受支持。

但是我覺得這與ESB原理有點矛盾。理想情況下,我們應該能夠在ESB中定義EndPoints並使用任何Transport來連接到EndPoints?我可能是錯的。 此外,由於所有應用程序共享同一個JVM,因此可以期望能夠通過內存中的VM隊列進行通信,而不是依賴於無事務性HTTP協議或TCP,其中可以創建的連接數取決於服務器資源。即使對於JMS,我們也需要定義和管理另一個隊列以及可能對性能產生影響的大量使用。雖然我同意如果我們有分佈式和集羣系統可能是HTTP或JMS將只是選項。

是否有任何計劃摻入VM作爲應用內間通信協議或是否有任何其他的方法之一流可以與另一個流端點,但在不同的應用程序進行通信?

編輯: - 從Mulesoft http://forum.mulesoft.org/mulesoft/topics/concept_of_endpoint_and_inter_app_communication
是的,我們正在考慮,應用間通信在將來的版本答案。 現在還不清楚我們要做什麼,但我們有一些關於我們希望這個功能表現的想法。我們可能會創建一個服務器級配置,您可以在其中定義要在所有應用程序中使用的資源。在那裏你可以定義一個虛擬機連接器,並用它在同一臺服務器上的應用之間發送消息。正如我所說,這只是一個想法。

回答

2

關於虛擬機的用法,應用間通信,只有MuleSoft可以回答如果VM將有一個將來的功能或沒有。

我不認爲這與ESB原理相矛盾。在David A Chappell的「企業服務總線book」第6章中,「容器」功能非常明確。容器應該儘量保持應用程序的隔離。

這將提供一些好處,如「獨立部署的集成服務」(同章),更容易集羣化,和其他東西。

,就好像它們放置在不同的服務器應用程序之間,你應該接近相同的VM-應用程序間的通信。

+0

感謝維克多。我同意它應該保持部署在其上的應用程序隔離。但它們應該可以通過端點訪問。我們目前在Mule上看到的是能夠在同一個JVM上的應用程序之間進行通信,但仍然需要依賴HTTP或像AMQ這樣的外部MoM,它將在JMS上傳輸請求。這是我覺得的一個開銷。部署在同一個JVM上的一個應用程序應該可以無縫地使用VM與另一個應用程序進行通信。如果需要,它們仍然是隔離的,但在邏輯上集成了。如果我說錯了,請糾正我。 – Soumya 2013-02-25 09:15:46

+0

這種方法的問題在於聚類本質上是禁用的。你正在設計禁止它。 一個好方法是啓用Mule企業版VM(今天今天有一個可怕的名字,因爲它並不意味着在虛擬機傳輸中,而是在內存傳輸中)不僅在vm應用程序本地進行通信,而且在羣集(參見[可靠性模式](http://www.mulesoft.org/documentation/display/current/Reliability+Patterns))。 – 2013-02-25 12:47:51

+0

您使用社區或企業嗎?如果您沒有使用EE,那麼編寫一個利用共享靜態ConcurrentLinkedQueue在[VMK]中使用[DevKit]進行通信的傳輸應該不會很困難(http://www.milesoft.org/documentation/display/current/Mule+的devkit)。我寧願使用redis,hornetq或一些共享內存系統來實現快速本地和集羣通信。 – 2013-02-25 12:48:21