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

Microservices 用于数据库访问的独立微服务,microservices,software-design,n-tier-architecture,Microservices,Software Design,N Tier Architecture,我正在管理一个非常大的企业应用程序,因为我已经实现了微服务体系结构。基于业务实体和运营创建了独立的微服务。 比如说, 用户操作服务 产品运营服务 财务业务处 请注意,每个服务都是使用带有WCF的n层体系结构实现的。i、 e有单独的层(可独立部署到单独的服务器)用于业务和数据访问 有一个由所有微服务访问的集中式数据库。所有服务都可以访问几个公共实体,如“用户”,因此我们在多个服务中有冗余的数据库调用。由于需要从多个位置访问数据库,因此需要付出更多努力(例如,列重命名需要部署所有应用程序) 为了减少

我正在管理一个非常大的企业应用程序,因为我已经实现了微服务体系结构。基于业务实体和运营创建了独立的微服务。 比如说,

  • 用户操作服务
  • 产品运营服务
  • 财务业务处
  • 请注意,每个服务都是使用带有WCF的n层体系结构实现的。i、 e有单独的层(可独立部署到单独的服务器)用于业务和数据访问

    有一个由所有微服务访问的集中式数据库。所有服务都可以访问几个公共实体,如“用户”,因此我们在多个服务中有冗余的数据库调用。由于需要从多个位置访问数据库,因此需要付出更多努力(例如,列重命名需要部署所有应用程序)

    为了减少和优化代码,我计划创建单独的microservice,并将所有数据库操作移到其中。i、 e服务可以调用“数据库操作服务”进行任何数据库操作,如添加/更新/选择

    我想知道是否有任何隐藏的挑战,我不知道。我是否应该同意这个想法?我可以认为这个概念的改进是什么?

    我计划创建单独的微服务,并将所有数据库操作移到其中

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

    如果您的应用程序在一个服务宕机时无法工作(并不意味着是该服务连接到数据库),那么它仍然是糟糕的体系结构,您没有利用微服务体系结构的好处

    若服务有自己的数据库,那个么正确的通信方式是。或者,至少每个需要实体用户的服务都不会从数据库中获取它,而是从适当的服务中获取它。适当的服务可以在开始时从公共数据库获取它

    适应微服务体系结构过程中的下一步(改进)是为每个服务创建单独的数据库。我所说的“分离”是指一个服务的暂时性故障或一个数据库的暂时性故障将允许应用程序的其余部分保持活动和运行

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