gpt4 book ai didi

java - 允许模块化开发,同时仍然在同一个 JVM 中运行?

转载 作者:行者123 更新时间:2023-12-04 06:56:57 24 4
gpt4 key购买 nike

我们当前的应用程序在单个 JVM 中运行。

我们现在将应用程序拆分为单独的逻辑服务,每个服务在其自己的 JVM 中运行。

进行拆分是为了允许修改和部署单个服务,而不会影响整个系统。这减少了对整个系统进行 QA 的需要——只需要对与正在更改的服务的交互进行 QA。

对于服务间通信,我们使用 REST、MQ 系统总线和数据库 View 的组合。

我不喜欢这个:

  • REST 意味着我们必须将数据编码到/从 XML
  • DB View 将系统耦合在一起,这破坏了单独服务的整个概念
  • MQ/系统总线增加了复杂性
  • 服务之间不可避免地存在一些代码重复
  • 您已经设置了 n 个 JBoss 服务器配置,我们必须进行 n 次部署、n 次设置脚本等等。

  • 有没有更好的方法来构建内部应用程序以允许模块化开发和部署,同时允许应用程序在单个 JVM 中运行(并获得相关的好处)?

    最佳答案

    我对您在这里真正要问的内容感到有些困惑。如果您将应用程序拆分为在网络上运行的不同服务,那么数据编码必须在某处进行。

    话虽如此,你调查过 OSGi 吗?您可以将不同的 bundles(基本上,带有定义接口(interface)的附加元数据的 jar 文件)部署到同一个 OSGi 服务器中,并且服务器将透明地促进这些包之间的通信,因为一切都在同一个 JVM 中运行 - 即您在对象上调用方法像往常一样使用不同的捆绑包。

    如果 OSGi bundle lifecycle 状态得到遵守,OSGi 服务器将允许在运行时卸载和升级捆绑包,并且应用程序应该正常运行(如果以降级的方式)。

    关于java - 允许模块化开发,同时仍然在同一个 JVM 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2443698/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com