Dao作为单体的一个独立模块,考虑将来可扩展到微服务



我实际上正在创建一个项目,其中我们有 2 个或更多数据库。我将使用Spring Boot。我想知道:

  1. 为什么我们有网关客户端,而代码因为我们已经在服务器中有了 REST 端点(可能是我错了)?

  2. 我的项目目前将是整体式的,但我希望将来可以更改为微服务架构。我是否应该将 DAO 作为单独的模块,考虑到我可以拥有多个数据库(RDBMS 和 NoSQL),该模块将依赖于其他模块?

希望我在问工作问题,但我现在很困惑,同时开始项目。

提前致谢

我将尝试消除一些混乱。

您正在使用 Spring Boot 构建单片应用程序,但希望它为微服务做好准备,对。

首先在逻辑上将您的应用程序分解为差异服务,并定义每个服务拥有哪些数据(sql 表)(每个服务都应该有自己的数据库 URL 实例,它们都可能指向同一个物理数据库)。然后,从一个服务代码中,您不应该访问其他服务拥有的任何数据库实体,当您需要其他服务拥有的数据时,请称它们为REST API。

现在,在执行此操作时,您将陷入诸如要执行跨多个服务但希望事务一致性的操作之类的事情。例如:在创建用户时,应创建用户钱包,但用户和用户钱包应是差异服务。为此,您需要使用消息总线并根据用户创建事件创建用户钱包。

我目前提供的解决方案是一个非常非常抽象的基本视图,用于实现微服务。这只是为了理解。

我想你的很多问题仍然没有答案。现在问更具体的问题,我会帮忙的

最新更新