Dao作为整体中的单独模块考虑到将来可扩展到微服务

时间:2018-01-22 03:54:23

标签: java spring microservices

我实际创建了一个项目,我们有两个或更多数据库。我将使用Spring Boot。我想知道:

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

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

  3. 希望我提出工作问题,但我现在很困惑,同时启动项目。

    提前致谢

1 个答案:

答案 0 :(得分:2)

我会尝试清除一些混乱。

您正在使用Spring Boot构建MONOLITHIC应用程序,但希望它是微服务准备好,正确..

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

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

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

我认为你的许多问题仍然没有得到解答。现在问更具体的问题,我会帮助