gpt4 book ai didi

jakarta-ee - 微服务设计中生成JPA实体

转载 作者:行者123 更新时间:2023-12-03 16:34:47 25 4
gpt4 key购买 nike

我正在考虑设计,但对在微服务架构中生成实体有点困惑(虽然我是微服务设计的新手,但我对多个精益 war 着迷)。我想到了 DB 和多场 war 。我应该从数据库生成实体并将它们放在一个 jar 里,并在我创建的每场 war 中都包含这个 jar ,或者还有另一个选择。其次,我放置 persistence.xml 的位置。如果我打算稍后使用缓存来缓存实体实例,上述方法是否会带来任何问题。谢谢

最佳答案

如果所有微服务共享同一个数据库,那么就不可能将微服务移动到另一台主机,它打破了最小数据共享原则,增加了依赖性,等等。
集中式数据存储在操作上方便,但微服务应该希望将其所有依赖项嵌入,以实现独立部署。替代方法是:每个微服务都嵌入了它的所有依赖项,包括数据库,因此将这个微服务移动到任何地方都是微不足道的,这很漂亮但在当前上下文中不实用。

微服务应该拥有自己的表,因为微服务之间共享表会扼杀移动性;但是,共享数据库集群安装绝对没问题(Nadareishvili、Mitra、McLarty 和 Amundsen,2016 年)。我发现这种方法是最好的:如果数据库是 Oracle 或 SQL Server,微服务在同一数据库中拥有独立的模式。如果数据库是 MySQL,那么微服务应该拥有独立的数据库,因为我相信 MySQL 每个数据库只支持一个模式。

微服务不仅可以拥有不同的数据库,还可以拥有不同类型的数据库,例如在我当前的应用程序中,我们使用 MySQL 进行在线事务处理,而使用 NoSQL 进行离线处理。

使用 Spring Boot 和 Spring Data JPA 在每个微服务中生成实体时我不会遇到任何问题。我仍在复制微服务中的实体代码,但它仅适用于所需的实体。我们总是可以创建一个通用的 jar 并在微服务之间共享,但这并不适用于所有情况。类似的讨论在此question

关于jakarta-ee - 微服务设计中生成JPA实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29434226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com