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,行家,...

希望这有助于:-)

相关问题