我们是一家金融科技创业公司,试图将monolith php重新构建成微服务。作为典型的web应用,我们使用管理页面中的主数据管理。如何通过微服务分发这些主数据?我们构建了两个API管理服务。一个用于前端用户入口点,另一个用于管理/后端用户入口点。我们为前端用户创建一个贷款服务,为后端用户创建一个管理服务。贷款服务将使用贷款宣传,城市,国家的数据,这些也可以从行政服务管理。我们应该把贷款推广、城市和国家的模式和数据库从行政服务复制到贷款服务吗?还是我们应该把这些主数据放在贷款服务中呢?我还读到了一些关于传奇模式的文章,也许我们可以利用它。在管理员服务的任何更新之后,将触发对loam服务的更新。
我们仍在设计和计算如何最好地实现它。任何建议或意见,我都很感激。
发布于 2018-01-12 13:37:07
简短的回答是“不”,你不应该只是重复数据。正确的做法将取决于您如何设计您的微服务体系结构。例如,如果您使用的是领域驱动的设计,那么每个服务都会有一个有限制的上下文,该上下文定义了该服务所需的域模型。与此服务相关的其他服务更改的数据可以通过订阅更改数据的服务发布的相关事件来使用。关于微服务中有界上下文的这篇文章可能会对您有所帮助。
发布于 2018-01-12 16:30:33
如果您做了微服务,您应该为您现在拥有的数据的各种类型和/或子集确定权威的微服务。Microservices不仅仅是拆解业务逻辑,还包括对权威和最新数据的修改和访问的所有权。
如果您在多个微服务之间复制所有数据,每个微服务都允许广泛更新数据,那就不是真正的微服务,而是数据复制,这有其自身的挑战。
在分布式计算中,在一个不具有权威性的节点上拥有数据副本是可以的--部分原因是,对远程计算机的任何查询一旦收到,都会返回可能过期的副本。分布式体系结构--如客户机服务器、微服务和涉及多个服务器的其他架构--必须处理这种潜在的损耗。
可以帮助的技术包括:
发布于 2020-11-11 15:04:22
在我看来,所有的混乱都是因为您想要从贷款服务中提取Admin。在一个服务中同时拥有用户级和管理级的API(当然,需要适当的授权检查)是非常好的。
https://softwareengineering.stackexchange.com/questions/363885
复制相似问题