用于数据库访问的单独微服务

时间:2017-04-05 13:28:40

标签: microservices software-design n-tier-architecture

我正在管理一个非常大的企业应用程序,因为我实现了微服务架构。已经基于商业实体创建了独立的微服务。操作。 例如,

  1. 用户运营服务
  2. 产品运营服务
  3. 财务运营服务
  4. 请注意,每个服务都使用带有WCF的n层架构实现。即具有单独的层(可独立部署到单独的服务器)以进行业务和数据访问。

    有一个集中式数据库,可供所有微服务访问。有一些常见实体,如所有服务访问的“用户”,因此我们在多个服务中有冗余数据库调用。由于来自许多地方的数据库访问需要更多的努力(即列重命名需要部署所有应用程序)

    减少&优化代码,我打算创建单独的微服务并将所有数据库操作移入其中。即服务可以为任何数据库操作调用“数据库操作服务”,例如添加/更新/选择。

    我想知道是否有任何我不知道的隐藏挑战。我是否应该考虑这个想法?我可以考虑改进这个概念吗?

1 个答案:

答案 0 :(得分:0)

  

我打算创建单独的微服务并将所有数据库操作移入其中

这就是你将失去微服务架构的所有好处的方法。一项服务已关闭 - 整个应用程序已关闭。除非您在多个节点上进行复制。

如果你的应用程序在一个服务停止运行时不起作用(并不意味着它是连接到数据库的服务),那么它仍然是糟糕的架构,你没有使用微服务架构的好处。

如果服务有自己的数据库,那么正确的通信就是这样。或者至少每个想要的服务,例如实体用户,都不会从数据库中获取它,而是从适当的服务获取它。并且适当的服务可以在开始时从公共DB获取它。

在适应微服务架构的过程中的下一步(改进)将是为每个服务创建单独的数据库。通过“分离”,我的意思是一个服务的时间错误或一个数据库的时间错误将允许应用程序的其余部分存活并运行。

通常,您的方法没有隐藏的挑战。它只是没有给出任何好处,作为整体应用程序和基于微服务的中间形式。