我一直在研究微服务。我用过弹簧靴,看它的开始有多简单。在我的研究过程中,我读到了一种很好的方法,即每个微服务(即从数据库进行数据访问的微服务)都有自己的数据库。 我很好奇在启动同一微服务的多个实例时这是如何工作的。同一微服务的那些实例可以只使用一个数据库,还是需要一个单独的数据库?对我来说,困境是多个数据库之间的数据会有所不同。负载均衡微服务如何在这种情况下工作?
在前3条评论后进行了编辑 我感谢您的评论。我觉得我缺乏解释这个问题的想法。我习惯于构建整体应用程序。我使用了spring和hibernate(hibernatedaosupport),最近还使用了hibernate envers。我使用spring的事务管理来管理数据库的提交和回滚情况。到目前为止,这对我有用。我已经开始研究微服务,到目前为止,我还无法找到正确的解释,说明将Spring事务管理与微服务一起使用在休眠和转换时如何与单个数据库一起使用。我只能了解此微服务的一个实例正在工作,但是我很好奇此微服务的多个实例是否仅可以在一个数据库中正常工作。特别是考虑到出于性能原因,休眠将缓存数据库对象的事实,更不用说envers及其操作了。
答案 0 :(得分:2)
没有关于微服务必须具有不同数据库的要求,您可以在所有微服务中共享一个数据库,或者每个微服务具有一个数据库。这取决于您和考虑到不同权衡因素的体系结构决策。
如果您为每个微服务决定一个数据库,并且您有多个相同微服务的实例。您只能使用一个数据库(例如,使用整体式数据库)。关于您对Hibernate和Cache的关注,您必须以不同的方式处理缓存,例如使用Hazelcast(https://hazelcast.com/use-cases/caching/hibernate-second-level-cache/)或EhCache。
无论如何,设计模式只是权衡不同的最佳实践,您必须了解每种模式的优缺点,以便以后做出决定。