Java Spring RESTful服务应用程序体系结构
目前,我们正在使用Spring、Hibernate、MySQL和tomcat构建web服务应用程序。我们没有使用真正的应用服务器SoA体系结构。关于持久层——今天我们将Hibernate与MySQL结合使用,但一年后我们可能会使用MongoDB和Morphia 这里的想法是创建系统的体系结构,而不考虑具体的数据库引擎或持久层,并获得最大的好处 让我解释一下-。我们这里有两个案例: 情景一: 我们有一个被复制的数据库(开始时没有)和不同的应用程序。每个应用程序都表示一个war,它有一个控制器、应用程序上下文和servlet xml。域和持久层作为maven库导入-每个应用程序中都包含一个版本 优点:Java Spring RESTful服务应用程序体系结构,java,spring,jakarta-ee,soa,saas,Java,Spring,Jakarta Ee,Soa,Saas,目前,我们正在使用Spring、Hibernate、MySQL和tomcat构建web服务应用程序。我们没有使用真正的应用服务器SoA体系结构。关于持久层——今天我们将Hibernate与MySQL结合使用,但一年后我们可能会使用MongoDB和Morphia 这里的想法是创建系统的体系结构,而不考虑具体的数据库引擎或持久层,并获得最大的好处 让我解释一下-。我们这里有两个案例: 情景一: 我们有一个被复制的数据库(开始时没有)和不同的应用程序。每个应用程序都表示一个war,它有一个控制器、应用
- 易于维护的小型应用程序
- 分布式解决方案-例如,每个应用程序都可以移动到自己的tomcat实例或不同的机器上
- 在不同应用程序之间使用hibernate会话和同步会话时可能出现的问题。我不知道这是可能的,在所有的实现李>
- 一个持久层-hibernate的全部功能
- 更多j2ee查看扩展到下一个级别的选项-集成EJB并移动到应用程序服务器
- 一个巨大的战争应用需要更多的努力来维持
- 不像第一个场景中那样分发
有两种解决方案可以解决这个问题: 陶土 看看 此外,还有一个稍旧的幻灯片共享,它在图片中传达了要点 英菲尼斯潘 看看
使用第一个解决方案(分布式)可能是正确的选择 这完全取决于业务问题是什么 当然,
分布式的
很酷而且容错,而且,。。但是RAM和磁盘越来越便宜,所以“扩大规模”(并拥有两个热复制副本)实际上并不是那么糟糕=>这些是您描述的“第二种”方法的道具
但假设你采用的方法是#1。如果您这样做,您将受益于将来切换到NoSQL,因为您现在有副本集/分片等。。实际上有几个节点支持这个概念
但是。。100%的一致性是a必须具备的吗?(例如,产品是否与环境有关)。您计划变得多大=>您准备好维护数百台服务器了吗?您是否有复杂的聚合查询需要运行快于xteen小时
这些问题,除了你对业务的理解之外,应该有助于你在#1或#2上着陆。因此,这是一个非常晚的答案,但最后我准备回答。我将在这里详细介绍REST服务应用程序的进一步开发 最后,我终于找到了解决方案1,这是一个很好的答案,可以选择在稍后阶段迁移到解决方案2 这是应用程序体系结构-稍后我将添加图形 持久性层-该层包含域模型、所有数据库操作。使用SpringRoo从数据库模型生成,生成存储库和服务层,便于以后的迁移 业务层-此处是操作所需的所有业务逻辑。此层依赖于持久性层 演示层验证,控制器调用业务层 所有这些都是在Tomcat上运行的,没有附加的应用服务器。在稍后的阶段,可以将其移动到应用服务器,并完全实现服务定位器模式 基础架构—地理位置服务器,带有地理负载平衡器,MySQL复制环位于所有服务器之间,一台备份服务器和一台备份服务器之间,以防出现故障 我的想法是构建更现代的系统架构,但根据我使用Java技术的经验,这是一种“正常风险”情况
有了更多的经验-更漂亮的解决方案:)期待着 非常感谢您的回答!我红了你贴的主题-现在我们的系统不涉及在线金钱。我需要根据您的答案重新思考问题——目前我正在制作数据库模型并指定REST服务。我会写在这里选择解决方案。目前,我们将有更多的读取比写入确定一个数据,应该从不同的位置快速访问。