繁体   English   中英

java web 应用的零件分离建议

[英]Advice on separating parts of java web application

我正在创建一个预测比特币价格的 Java Web 应用程序。 我在那里有 3 个重要的“部分”:

  1. Web Stack(Spring+Thymeleaf+Hibernate)
  2. 解析 API 并将 btc 价格保存到数据库中的部分
  3. 机器学习 model 从数据库中获取数据并自动更新。

现在这些部件都在一个单独的 jar 中存储在不同的包中。 我觉得它们完全不同,将它们存储在不同的包装中是不够的!

我相信它们应该是独立的:例如,如果出现内部服务器错误,我不想关闭机器学习 model 的自我优化,只是为了看看 Tomcat 发生了什么。

我的业务逻辑应该连续工作,每个部分都应该独立于它不需要的任何部分工作。 也许他们应该在三个不同的 jars 中? 有没有人有这方面的经验? 或者也许有人知道在大型企业项目中不同的逻辑部分是如何分离的?

恕我直言

你提出了两个不同的方面

  • '包问题' - 这是关于代码组织/模块化
    这有助于保持代码模块化,因此您可以单独构建和测试不直接耦合的代码部分。

  • '内部服务器错误不应停止 ML'。 这决定了您正在运行多少个运行时组件/子组件。
    在您的情况下 - 似乎有 2 项服务 - UI 和 ML。
    你可以运行选择运行

  • 1 个应用程序和 2 个服务(就像您现在所做的那样)

  • 或 2 个不同的应用程序,每个应用程序有 1 项服务

    根据复杂性、运行时需求……等等,您可以选择

  1. 您的应用程序代码是否安全
    对于任何一个选项 - 要求您构建的服务部件对于常见用例是故障安全的,即异常处理,以确保容器不会因预期错误而崩溃。 (INFRA 故障等……不在此 scope 中)

注意:如果服务对于常见用例具有足够的故障安全性,您可以使用 1 个 APP。

如果您选择 2 个不同的应用程序(UI 和 ML 各 1 个),将代码拆分为 2 个子项目是有意义的

  • 用户界面
  • 机器学习
  • 公共代码的问题(作为第 3 个)需要根据代码共享的数量来决定(我猜 ML 在 DB 上更轻)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM