1 architecture spring-batch spring-boot microservices spring-cloud-task
我们正在与两个不同的团队开发两个项目。然而,这两个项目有一些共同点,例如,有共同的实体和存储库使用案例。如何在不使用代码复用的情况下管理两个项目中的单个实体/存储库?
注意:第一个项目是 spring-batch/spring cloud task 第二个项目是微服务项目
谢谢...
从逻辑上讲,在大多数情况下不建议共享数据库,因为两个团队将依赖彼此来发展模式,他们不会是自治的,所以在实践中你可能最终会得到一个分布式的整体。如果您采用微服务,您可能会发现有关事件驱动架构的阅读很有用。
如果您确实需要使用相同的数据库而不需要来自两个服务的“代码重复”,并且您使用相同的技术堆栈,则可以使用存储库/实体和系统的其他公共部分创建一个共享库。只需将此库视为任何其他第三方库即可,这种思维方式帮助我们构建微服务。
但是:如果你有多个自治团队,“代码重复”也不错。如果您将数据库模式视为某种合同,并且只有一个团队拥有它,那么其他团队可以开发自己的 API(存储库、实体)来访问该模式,使用他们喜欢的工具/技术堆栈等......我会甚至不考虑这个代码重复。
另一个想法是在数据库之上创建一个 API 层(也许是第三个微服务?),并使用其他服务中的 API 来查询/更新数据。这样数据库可以改变,API 应该保持更稳定,但这样你可能会失去事务性。
选择对您的项目最经济、最适合开发人员或最适合短期/长期的方案。
| 归档时间: |
|
| 查看次数: |
645 次 |
| 最近记录: |