【问题标题】:Micro services with JBOSS使用 JBOSS 的微服务
【发布时间】:2023-03-05 22:50:01
【问题描述】:

我是 Jboss 的新手,想知道微服务架构是否是 JBOSS 的正确选择。我无法更改应用程序服务器,因为它是由客户端架构师决定的,我别无选择。 想知道能不能用底层的JBOSS应用服务器开发微服务。

我了解 Spring boot 带有嵌入式 tomcat 容器,它可以灵活地停止和启动,部署单个服务而不影响其他服务。 但是,该架构是否也适用于 JBoss。

请提出建议。

谢谢,

【问题讨论】:

    标签: jboss microservices


    【解决方案1】:

    根据定义什么是微服务,那么在概念上是的。微服务是一个独立单元的服务,它可以独立部署、更新和取消部署,而不会影响应用程序的任何不相关部分。因此,这意味着拥有多个 JBoss for MS 实例,并且您的应用程序通过某种网关或任何其他机制调用它们,具体取决于您的用例。如果您计划将所有 MS 部署在同一个 JBoss 实例中,那么它就违背了 MS 的目的。鉴于此,JBoss 不是 MS 部署的正确选择,因为它只会使您的 MS 部署基础架构变得非常繁重。

    根据您客户的要求,您可以将您的 webapp 保留在 JBoss 中并单独部署您的 MS 容器。

    【讨论】:

    • 感谢您的精彩解释。 “你可以将你的 webapp 保存在 JBoss 中并单独部署你的 MS 容器”是什么意思。
    • 您正在考虑使用 MS,我相信您已经确定了他们将提供的功能范围。所以我的意思是,这些单独的服务可以实现为带有 Spring Boot 或 Dropwizard 之类的库的自包含 MS,而您的前端服务器仍然是 JBoss。您还应该首先评估 MS 是否真的适合您。
    • 谢谢。今天我对使用spring boot的微服务进行了一些研究。但是,我在任何地方都找不到将 Spring Boot 应用程序部署到 jboss 中的任何成功案例。请您指导我提供任何有用的链接/参考资料。
    • 再说一次,你可以在概念上做到这一点,但不推荐为微服务做这件事。这是如何做到的spring.io/guides/gs/convert-jar-to-war
    • FWIW 我们的产品在 Jboss 中运行前端,并有几个在 Jboss 之外使用 Spring 的服务。但是,我们将整个事情部署在分发给客户的 VM 上。我们正在尝试从 Jboss 中提取更多服务。所以它可以做到,但考虑到选择,我不确定我们是否会再次选择这种混合动力。
    【解决方案2】:

    我实际上制定了一项可行性研究来调查您提到的解决方案。我的结论是,在 JBoss 平台中使用微服务原则是完全可行的。

    我使用 JBoss \ Spring Boot \ Netflix 的组合创建了成功的微服务堆栈,我个人这样做是为了找到解决事务问题(多个微服务协作)和由于网络通信过多导致的扇出问题的解决方案和序列化成本。

    我还写了一篇关于这个主题的博客,如果你愿意,你可以在那里找到更多细节,这里是链接。

    Micro Services – Fan Out, Transaction Problems and Solutions with Spring Boot/JBoss and Netflix Eureka

    【讨论】:

      【解决方案3】:

      这取决于你想从微服务中得到什么。

      我组织中的一些开发人员查看了 Spring Boot,但得出的结论是,最好将它作为独立容器而不是在 JBoss 中运行,否则你实际上有两个容器框架竞争(SB 和 JBoss)和一系列相关问题。

      在 JBoss 中部署微服务不会为您提供与真正的容器系统(如 Docker)相同的灵活性。使用 Docker,您可以为包含所有代码、系统工具、运行时环境等的微服务创建独立的包。它可以根据需要而变小或变大。另一方面,JBoss 是一个运行单个 JVM 的大型容器,旨在容纳多个应用程序。隔离级别不一样,将 JBoss 作为单个微服务的容器效率不高,因此您必须适当调整大小,然后部署到实例以利用其可用资源。

      如果您将微服务视为一种更好地控制服务生命周期管理(部署、版本控制、弃用等)的方式,而不是像 Netflix 或 LinkedIn 那样的自动化、网络规模的组件部署模型,那么您JBoss 可以很好地做到这一点。

      我实际上希望在这里按照这些思路做一些事情。它不会是真正的微服务,但通过打包和部署单独的、正确版本的 API 而不是单一应用程序并遵循微服务开发的大多数其他原则(组件化、业务功能焦点、无状态等),我们希望能够更好地管理并从我们的 API 中受益。

      我们的 API 都将位于 API 网关和负载平衡器之后,因此我们可以选择如何分配分布在 JBoss 实例中的微服务,并根据需要平衡资源使用情况。请注意,我们的组织相对较小,流量相对较低且可预测,因此这种方法应该可以正常工作。但是,您的需求可能会有所不同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-02
        • 2017-06-04
        • 2018-02-20
        • 2017-08-31
        • 1970-01-01
        • 2016-10-16
        相关资源
        最近更新 更多