2014-07-08 58 views
0

工作一個基於Java的大型分佈式系統上,所以將有多個服務在多臺機器上運行.....開源框架服務管理

尋找一個開源框架,能夠管理這些服務(例如啓動/停止服務,遠程安裝新的服務等)

Apache Karaf似乎是一個不錯的選擇,但它下面使用apache felix(一個OSGi參考實現)包,我有一個很難時間真正理解。特別是,用felix定義和註冊服務似乎很容易,但是如何遠程調用這樣的服務?你需要有一個單獨的RPC機制來實現嗎?似乎很少有鏈接描述它。一般人們如何使用OSGi? Apache felix過時了嗎?

任何其他可用於管理服務的框架,假設我將擁有自己的RPC層(比如基於RMI或Netty)?

回答

0

我想你必須指定你定義服務的方式。 有一些服務,如使用RPC機制的遠程服務,例如EJB遠程調用。 另一種定義服務的方法是使用SOAP(XML)或JAXRS(JSON)作爲傳輸協議來討論Web服務。 OSGi中的服務定義僅僅意味着API(服務定義)和實現的分離。總結一下,您可以將OSGi定義爲同一個VirtualMachine中的應用程序的SOA。 (它提供了更多,但這是從服務角度來看它的一種方式)

Apache Karaf是一個OSGi服務器,可以與應用程序服務器相媲美,只適用於OSGi應用程序。它在可選擇的OSGi框架之上帶來了許多便利的技術。那將是Apache Felix或Eclipse Equinox。兩者都是提供基本OSGi基礎架構的OSGi框架 - SOA在同一個JVM中。
現在還有很多其他好處,比如啓動和停止服務,更新服務。

考慮到RPC,可以通過將OSGi服務與CXF相結合來輕鬆實現。它可以很容易地配置爲導出OSGi服務作爲CXF服務。 (這是特定的Karaf/CXF)

Apache Karaf本身也支持與Apache Karaf Cellar進行集羣,Apache Karaf Cellar還提供DOSGi服務,以便跨羣集組更容易地進行服務通信。 DOSGi代表分佈式OSGi,這也可以通過使用CXF和許多其他實現來實現。

Apache Felix和OSGi總的來說已經遠遠落後了。許多Java EE應用程序服務器使用OSGi作爲其基礎技術,以實現模塊化,佔用空間更小。
這將是GlassFish,Websphere,Geronimo等......