我正在管理一个非常大的企业应用程序,因为我实现了微服务体系结构。基于业务实体和业务创建了独立的微服务。例如,
请注意,每个服务都使用WCF的n层体系结构实现.也就是说,对于业务和数据访问,有独立的层(可以独立部署到单独的服务器)。
有一个中央数据库,所有的微服务都可以访问它。有几个常见的实体,如“用户”被所有的服务访问,所以我们在多个服务中有冗余的数据库调用。由于从许多地方访问数据库,需要付出更多的努力(例如,列重命名需要部署所有的应用程序)
为了减少和优化代码,我计划创建单独的微服务,并将所有数据库操作移到其中。例如,服务可以为任何数据库操作调用“数据库操作服务”,如添加/更新/选择。
我想知道是否有我不知道的隐藏的挑战。我是否应该接受这个想法?我认为在这个概念上有甚麽改善呢?
发布于 2017-04-05 17:17:00
我计划创建单独的微服务,并将所有的数据库操作移到其中
这将使您失去从微服务体系结构中获得的所有好处。有一项服务关闭--整个应用程序都关闭了。除非您在多个节点上有复制。
如果您的应用程序在某个服务出现故障时不能工作(并不意味着连接到数据库的是该服务),那么它仍然是糟糕的体系结构,并且您没有使用微服务体系结构的好处。
如果服务部门有自己的数据库,则通信的正确性。或者,至少每个想要的服务(例如,实体用户)都不会从DB获取它,而是从适当的服务中获取它。而适当的服务可以在开始时从公共DB中获取它。
下一步(改进)是为每个服务创建单独的数据库。我所说的“分离”是指一个服务的时态故障或一个数据库的时态故障将允许应用程序的其余部分存活和运行。
一般来说,在您的方法中没有隐藏的挑战。它只是不提供任何好处,作为一个中间形式之间的单核应用程序和基于微服务的基础。
https://stackoverflow.com/questions/43232660
复制相似问题