我正在考虑设计并且与微服务架构中的生成实体有点混淆(虽然我是微服务设计的新手,但我对多重精益战争很着迷)。我有DB和多重战争的想法。我应该从DB生成实体并将它们放在jar中,并在我创建的每场战争中包含jar,或者还有另一个选项。其次我放置persistence.xml。如果我计划稍后使用缓存来缓存实体实例,那么上述方法会带来任何问题。感谢
答案 0 :(得分:0)
如果所有微服务共享同一个数据库,则无法将微服务移动到另一个主机,这会破坏最小数据共享的原则,增加依赖性,等等。
集中式数据存储在操作上很方便,但是微服务应该希望嵌入其所有依赖性以实现可独立部署。替代方法是:每个微服务嵌入其所有依赖项,包括数据库,因此将这个微服务移动到任何地方都是微不足道的,这在当前上下文中是美观但不实用的。
微服务应该拥有自己的表,因为微服务之间的共享表会杀死移动性;但是,共享数据库集群安装是绝对可以的(Nadareishvili,Mitra,McLarty,& Amundsen,2016)。我发现这种方法是最好的:如果数据库是Oracle或SQL Server,则微服务在同一数据库中拥有独立模式。如果数据库是MySQL,那么微服务应该拥有独立的数据库,因为我相信MySQL每个数据库只支持一个模式。
微服务不仅可以拥有不同的数据库,还可以拥有不同类型的数据库,例如在我当前的应用程序中,我们使用MySQL进行在线事务处理,但使用NoSQL进行离线处理。
使用Spring Boot和Spring Data JPA我不会在每个微服务中生成实体时遇到任何问题。我仍然在微服务中复制实体代码,但它仅适用于所需的实体。我们总是可以创建一个通用jar并在微服务之间共享,但它并不适合所有情况。 类似的讨论在question
中