1

我知道這個問題非常籠統,答案對目標系統的規模,範圍,類型等都有偏差。因此,實際上我想知道使用各種容器的優缺點,如spring-boot,single-main,karaf等,以及何時/爲什麼我應該爲這樣的系統使用容器。用駱駝書寫的集成/管道系統的最佳容器是什麼?

在我們之前的項目中,我的同事們使用了apacha-karaf,但是他們遇到了很多麻煩,比如構建項目,設置允許組件出口jmx,文檔不佳等等。由於當前系統是基於彈簧的應用程序,因此使用spring-boot更有意義。有什麼想法嗎?

+1

標記爲意見爲主。 – csmckelvey

回答

0

我一起使用Camel的java dsl,並將它部署在包裝在泊塢窗容器內的apache-karaf內。關鍵是要使用功能描述符和一個Maven倉庫。然後,您可以創建一個駱駝項目的自定義分佈,並將其加載到您的karaf發行版中。這意味着您可以採用非常酷的微服務方法,將服務部署爲單獨的泊塢窗容器。

最大的困難是讓Karaf的定製發行工作。一旦完成,其餘的都很好。我不使用彈簧,所以不能談論春季引導。

在Karaf/docker內部,您可以部署hawtio並從hawtio進行監控,查看指標​​並執行各種其他操作。卡拉夫還有一款帶有kibana儀表板和警報功能的潷水器。

0

答案完全取決於你最熟悉的容器技術以及你想要用駱駝應用程序做什麼。

我認爲Spring Boot是最好的,當你想用Camel創建一個MSA應用程序,並且你已經熟悉Spring。好消息是,駱駝現在完全支持春季啓動:http://camel.apache.org/spring-boot.html

在另一方面,如果你有一個優先於古典風格獨立的做法Karaf是因爲商業產品,如JBoss的保險絲堅如磐石的選項(https://developers.redhat.com/products/fuse/overview/ )使用卡拉夫作爲主要容器。另外,如果你是OSGi愛好者,那麼毫無疑問你選擇Karaf ;-)

最後,別忘了你也可以在JEE應用程序容器上運行Camel應用程序。基本上你可以將它們打包爲.war並將它們部署到任何JEE容器,但值得注意的是WildFly具有對駱駝的擴展集成支持:http://wildfly-extras.github.io/wildfly-camel/通過使用WildFly-Camel子系統,您可以像部署一樣簡單地部署駱駝應用程序.jar Karaf。

0

你要問的是什麼您對要求的主要問題:

  1. 多少積分(微?)服務,您將不得不支持?
  2. 你需要支持這些服務的獨立配置嗎?
  3. 您需要支持這些服務的獨立分支/版本嗎?
  4. 您需要對這些服務進行「熱部署」(即部署/更新/重新配置一個本身並不影響其他服務的運行)嗎?

如果答案是肯定的一切,那麼你有兩個主要備選方案:

  1. 去JBoss的保險絲方式(阿帕奇Karaf的RedHat的品牌版本)。這意味着您的每個集成(微型)服務都將成爲Fuse中的一個OSGi包。
  2. 使用非OSGi容器,但在這種情況下,爲了滿足您的需求,您需要另一層管理服務的生命週期。例如。你可以看看Fabric8(https://fabric8.io/)。

這將意味着你最好有一個(微)服務每泊塢窗容器(而不是每個OSGi包微服務)和Fabric8將提供你會在Web UI(以及許多其他工具,如Kubernetes命令,maven命令)來管理你的服務到Docker容器的部署。因此,服務可能使用spring boot/tomcat,另一個服務可能只是一個jvm獨立進程,或者另一個可能是運行在Karaf容器內的OSGi包,部署在碼頭集裝箱內部。因此,選項(1)也可以部署到選項(2)。

根據您遵循什麼路,你必須精通不同的技術,如:

  1. 保險絲:OSGi的/保險絲容器,駱駝,行家,...
  2. 面料:您的需求容器(例如春天開機/ tomcat的,java程序,保險絲,蟒蛇過程中,斯卡拉過程等),泊塢窗,Kubernetes,Fabric8,OpenShift,行家,...

希望這有助於:-)

相關問題