Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何平衡spring boot微服务数据库应用程序的负载_Java_Spring_Hibernate_Spring Boot_Microservices - Fatal编程技术网

Java 如何平衡spring boot微服务数据库应用程序的负载

Java 如何平衡spring boot微服务数据库应用程序的负载,java,spring,hibernate,spring-boot,microservices,Java,Spring,Hibernate,Spring Boot,Microservices,我一直在研究微服务。我用过SpringBoot,看看它一开始有多简单。在我的研究过程中,我读到这是一种很好的方法,即每个微服务,即从数据库访问数据的服务,都有自己的数据库。 我很好奇,当启动同一个微服务的多个实例时,这是如何工作的。同一个微服务的这些实例可以只使用一个数据库,还是还需要一个单独的数据库?我面临的困境是,跨多个数据库的数据可能会有所不同。负载平衡微服务如何在这种情况下工作 在前3条评论后编辑 我感谢你的评论。我觉得我没有解释我在这个问题背后的想法。我习惯于构建单片应用程序。我使用了

我一直在研究微服务。我用过SpringBoot,看看它一开始有多简单。在我的研究过程中,我读到这是一种很好的方法,即每个微服务,即从数据库访问数据的服务,都有自己的数据库。 我很好奇,当启动同一个微服务的多个实例时,这是如何工作的。同一个微服务的这些实例可以只使用一个数据库,还是还需要一个单独的数据库?我面临的困境是,跨多个数据库的数据可能会有所不同。负载平衡微服务如何在这种情况下工作

在前3条评论后编辑
我感谢你的评论。我觉得我没有解释我在这个问题背后的想法。我习惯于构建单片应用程序。我使用了spring和hibernate(hibernatedaosupport),最近还使用了HibernateEnvers。我使用spring的事务管理来管理数据库的提交和回滚情况。到目前为止,这对我很有效。我已经开始研究微服务,但到目前为止,还无法找到一个合适的解释,说明spring事务管理如何与hibernate和envers一起作为一个微服务在单个数据库中工作。我只能理解这个微服务的一个实例在工作,但我很好奇,这个微服务的多个实例是否能够在一个数据库中正常工作。特别是考虑到hibernate出于性能原因会缓存数据库对象,更不用说envers及其操作了。

微服务不要求必须有不同的数据库,您可以在所有微服务中共享一个数据库,或者每个微服务都有一个数据库。这取决于您和考虑到不同权衡的体系结构决策

如果您决定每个微服务有一个数据库,并且同一微服务有多个实例。您必须只使用一个数据库(如monolith)。关于Hibernate和Cache,您必须以不同的方式处理缓存,例如使用Hazelcast()或EhCache


无论如何,设计模式只是具有不同权衡的最佳实践,您必须了解每种模式的优缺点,以便以后做出决定

关于这个问题有很多争论和不同的方法。看看这个视频。我想使用事件驱动的方法非常方便。运行同一服务的多台计算机可以指向同一个数据库,尤其是当服务刚刚投入使用时(不要过度设计)。然而,使用同一数据库的不同微服务可能会紧密耦合。对数据库的更改需要同时对多个服务进行更改,这会破坏微服务的用途。您是否已经考虑过任何工具,vs。。。?中端负载平衡与客户端负载平衡?这个问题太宽泛了。我可以推荐您阅读微服务一章。我想您可能不太了解大多数设计文档和建议。当有人或任何设计文档谈论1微服务1 db时。这意味着每个服务1分贝。其中服务不是一个装置,而是一个业务逻辑单元。一个逻辑微服务可以有很多LB或容错实例。这就是我一直在寻找的答案。